Как скопировать многострочный текст из Excel без кавычек?
Когда вы создаете многострочную строку в ячейке Excel (с помощью Alt-Enter), если вы копируете эту ячейку в текстовый редактор, Excel автоматически добавит двойные кавычки (") вокруг полной строки, то есть:
Cell1 | Simple String 1
Cell2 | First line of a
| Multiline string
| with 3 lines
Cell3 | Another simple line 2
Когда вы копируете только столбец со значениями в текстовый редактор, мы получаем:
Simple String 1
"First line of a
Multiline string
with 3 lines"
Another simple line 2
Как я могу сказать Excel не добавлять цитату вокруг многострочного текста при копировании из Excel?
Редактировать: текстовые редакторы, которые я пробовал, отображают это поведение:
- MS Word
- Word Pad
- Блокнот
- Notepad ++
- SQL Server Studio
Если у вас есть предложение по использованию определенного редактора (или одного из вышеперечисленных), скажите, пожалуйста, какой и как его использовать...
22 ответа
То, как ваш текст будет скопирован в Word, зависит от выбранной опции форматирования. В Word 2010 формат по умолчанию HTML Format
, Существует четыре основных варианта копирования текста в Word. (Formatted Text (RTF)
, Unformatted Text
, HTML Format
& Unformatted Unicode Text
)
Вставка с форматированным текстом создает мини-таблицы в Word. (Синие очертания.)
Чтобы получить неформатированный текст в Word без двойных кавычек:
- Вставьте текст в формате, чтобы он создал таблицу.
- Выберите таблицу и скопируйте ее.
- Переместитесь в пустое место и вставьте новую копию как неформатированный текст. (
Alt + E
,S
)
Это также работает, чтобы вставить результаты без кавычек в другой редактор. Просто измените шаг 3, чтобы вставить в другой редактор.
Однако, вероятно, было бы быстрее просто вставить как обычно, а затем использовать Replace, чтобы найти и удалить все двойные кавычки.
Если вы скопируете диапазон из Excel (2010) в Word, вы получите текст по своему усмотрению, без кавычек. Затем вы можете скопировать его снова в конечный пункт назначения, например, в блокнот. Excel-> Word-> Блокнот даст вам результаты, которые вы хотите.
Я знаю, что это 2018 год, и эти посты старше, но все же они актуальны. Они помогли мне найти решение.
- Я положил =A2, который смотрит на ячейку с Char в формуле.
- Затем я скопировал A2 и вставил в качестве значений в другую ячейку, например, A3.
- Затем я выбрал A3, нажал F2, CtrlShiftHome, CtrlC.
- Стоп, не вставляйте в другую ячейку Excel. оставьте его в буфер обмена и вставьте в блокнот.
- Невидимые цитаты исчезают.
Исчезни, как сказал INXS, Исчезни! знак равно
Кто-то, возможно, уже сказал это решение, поэтому мои извинения, после прочтения всех примеров, что-то запало в мои мысли, и вы все помогли!
У меня была эта проблема сегодня, поэтому я решил опубликовать ответ на тот случай, если кто-нибудь все еще застрянет на ней.
Вы можете обойти это, выделив ячейку, а затем скопировать и вставить код прямо из текстовой панели вверху, щелкнув по нему и выделив все вручную.
Я сделал это только в Excel 2010, поэтому я не знаю, будет ли это работать для более ранних версий.
Я использовал CLEAR
функция, и это сработало для меня.
Поместите клетки, которые вы хотите скопировать внутри CLEAR
, например:
=clear(A1)
куда A1
это ячейка с данными, которые вы хотите скопировать в блокнот без кавычек.
Самый простой способ, который я нашел, - это объединить ячейки, которые вы хотите разместить, в несколько строк с чем-то "особенным" между ними, а не с cr/lf. Тильда обычно хорошо работает для меня. Например, в столбце G:
=E1&"~"&F1
=E2&"~"&F2
...
В этом примере конечной целью является получение текстового файла со значениями из E1 в одной строке, затем F1 в новой строке, затем E2, F2 и т. Д. Конечно, вы могли бы так же легко построить G1 из других значения, только что включенные ~ для разрывов строк.
Затем получить многострочный текстовый файл в Notepad ++
- Вырезать и вставить в Блокнот ++
- Ctrl-H, чтобы открыть диалог замены
- Убедитесь, что выбран вариант расширенного поиска
- Замените все ~ на \n (или \r\n, если хотите)
Установите универсальный/текстовый принтер в Windows, выбрав
Распечатайте выбранный диапазон на этом принтере — созданный им текстовый файл не будет содержать кавычек.
Это не проблема Excel. Как говорит предыдущий автор, он просто выводит действительные данные CSV. Это будет зависеть от редактора, который вы положите в него, чтобы посмотреть после его форматирования. Я бы предложил использовать что-то более умное, чем блокнот... Вы можете использовать MS Word в качестве посредника между Excel и любым текстовым редактором, который вы хотите использовать, кроме word.
Вы можете сохранить документ Excel как веб-страницу, а затем скопировать текст с веб-страницы. Это хорошо работает для одного столбца данных, но убедитесь, что вы установили ширину столбца равной ширине текста, иначе это добавит разрывы строк.
Не может быть подготовить его к CSV-файлу, потому что они были бы довольно глупы, настолько сложны, как верхние и конечные ячейки, которые содержат непечатаемые символы с кавычками, и не делают то же самое для ячеек, которые содержат запятые (чего нет "т).
Тем не мение. Я столкнулся с этой проблемой, когда пытался создать метки адресов из полей Имя, Фамилия, Адресная строка 1... как:
=A1&" "&B1&CHAR(13)&CHAR(10)&C1&CHAR(13)&CHAR(10)&D1
CHAR(13)
с последующим CHAR(10)
быть новым абзацем при просмотре текстового файла в шестнадцатеричном редакторе.
Мой способ обойти это раздражение:
- скопируйте и вставьте ячейки / столбец в Word.
- Используйте раскрывающийся список символов буфера обмена (внизу слева на странице или вставленный текст), чтобы выбрать " Сохранить только текст".
- Выберите вставленный текст. Это необходимо сделать только в том случае, если документ содержит другие элементы, которые могут быть затронуты
- Нажмите Ctrl + H, чтобы открыть диалоговое окно " Найти и заменить".
- В поле " Найти что" введите:
"^p"
(все четыре символа).
Возможно, вам придется перейти в меню "Инструменты" -> "Параметры автозамены", а затем на обе вкладки "Автоформат", чтобы убедиться, что это не изменит ваши прямые кавычки) - В поле Заменить на введите:
^p
(2 символа) - Теперь нажмите кнопку " Заменить все"
- Наконец, вам придется вручную удалить двойные кавычки в начале и в конце импортированного блока
Это основано на Office 2003, поэтому ваша версия Microsoft Word может немного отличаться.
У меня была та же проблема и я использовал следующие шаги (я использую Office 2007, но я думаю, что это работает и для более поздних версий):
- Выделите диапазон ячеек, содержащих многострочный текст из Excel, который я хочу вставить в другой редактор, а затем выберите "Копировать".
- В Word 2007 я вставил скопированный диапазон ячеек в таблицу.
- Выберите стол.
- На вкладке Layout выберите Select-Table.
- В разделе данных выберите Преобразовать в текст и выберите Метки абзаца.
В результате получается исходная таблица, преобразованная в текст, с символами новой строки в конце каждой строки и метками абзаца в конце последней строки в каждой ячейке.
У меня была такая же проблема, и я сделал это:
- Нажмите
New Email
в Outlook. - Вставьте ( Ctrl+ V) в него то, что вы скопировали из Excel.
- Выбрать все ( Ctrl+ A) и скопировать все заново ( Ctrl+ C).
- Вставьте его куда угодно.
Я столкнулся с той же проблемой. Сначала я скопировал диапазон ячеек и вставил их в документ Word. После этого я скопировал и вставил оттуда в свой Notepad++.
Вот другой подход, который может работать с любым программным обеспечением...
Мой вариант использования включает в себя строки в кавычках, созданные в Excel (например,
Я использую Free Clipboard Viewer, который позволяет просматривать скопированные данные в различных форматах. Скопировав текст из Excel, я переключаюсь на форматированный текст (RTF) и копирую ЭТО. Все очищено, и я могу просто вставить его куда угодно.
>
Я знаю, что это старая тема, но я решил использовать CLEAN, как предложено, скопировать эти ячейки и вставить значения обратно в лист. Таким образом, я мог редактировать текст до конечного результата, копировать и вставлять ячейки в текстовый документ без кавычек.
Я думаю, что очистка текста, а затем окончательное форматирование, скорее всего, сработает (по крайней мере, для меня).
Я нашел легкий способ обойти это. Установите OpenOffice Calc и откройте файл.xlsx. Затем просто скопируйте содержимое ячейки и вставьте в любой текстовый редактор. Раздражающие начальные и конечные кавычки не появятся.
На днях я наткнулся на ту же старую проблему почти через десять лет после того, как эта тема была создана. Предложенные здесь решения требовали дополнительных шагов, добавляя сложности, которых я хотел избежать. Поэтому я нашел альтернативный способ, который сработал для меня.
Мне нужно было обработать некоторые данные в Excel и вывести несколько числовых значений, интегрированных в XML-код.
Моя основная идея
Обработанные данные (упрощенно)
Item 1
Item 2
Желаемый результат (упрощенный)
<li>Item 1</li>
<li>Item 2</li>
Сначала я попытался сгенерировать вывод в виде многострочного текста в одной ячейке, используя CHAR(10). Текст, скопированный в мой XML-файл, выглядел так
"<li>Item 1</li>
<li>Item 2</li>"
Потом я понял, что мне просто нужно каждую строку кода создавать в отдельной ячейке и копировать строки.
каждая строка кода в отдельной ячейке
Это решило проблему для меня.
И если подумать, зачем создавать многострочный текст в одной ячейке, если вы собираетесь вставить его в какое-то другое программное обеспечение? Если по какой-либо причине вам также необходимо разместить его в одной ячейке в Excel, вы можете просто создать текст в нескольких ячейках на другом листе и объединить его на своем листе с помощью CHAR(10) или CHAR(13).
Моя актуальная проблема
Я использовал Excel для расчета координат некоторых структур XML, затем мне нужно было интегрировать координаты в заранее определенные строки XML-кода.
svg:x="[coor_x]cm"
svg:y="[coor_y]cm"
Поскольку у меня было много пар координат, мне показалось естественным создать многострочный текст для каждой пары координат, чтобы можно было легко перетащить формулу вниз.
каждая ячейка содержит две строки для coor_x и coor_y.
Но результат, вставленный в другое программное обеспечение, был не совсем желателен:
"svg:x=""1.43cm""
svg:y=""2.47cm"""
"svg:x=""0.53cm""
svg:y=""2.12cm"""
Другой подход заключался в том, чтобы иметь формулу для coor_x в четных строках и другую формулу для coor_y в нечетных строках. Но тогда я бы потерял возможность перетаскивать формулы вниз на столько строк, сколько мне нужно. Мне пришлось бы много раз копировать и вставлять эту пару формул ниже и корректировать неправильные ссылки на ячейки, хранящие координаты.
пара формул в две строки, которые нужно копировать несколько раз
Наконец, когда я обнаружил, что моя версия Excel поддерживает динамические массивы, меня осенило, как это делать правильно. (Я считаю, что это должно работать и в более старых версиях Excel, использующих именованные диапазоны.)
Я сгенерировал все строки для coor_x в одном столбце, затем сгенерировал все строки для coor_y в другом столбце, а затем использовал модифицированную версию формулы для объединения данных из двух столбцов в один:
=LET(a,TRANSPOSE(A8:B9),r,ROWS(a),seq,SEQUENCE(r*COLUMNS(a),,0),arr,INDEX(a,MOD(seq,r)+1,seq/r+1),arr)
Творчески используя динамические массивы, вы даже можете избавиться от необходимости вручную настраивать области массива при добавлении новых пар координат.
Надеюсь, это решение также будет полезно!
Была такая же проблема, наконец-то ее очень легко исправить. У меня было 600 строк длинных описаний продуктов. Чтобы исправить эту проблему, я сделал следующее:
1) Выберите весь столбец и нажмите "Обтекание текстом".
2) Удерживая выбранный столбец, снова нажмите "Обтекание текстом" (чтобы текст на 100% НЕ был обернут).
PRESTO - текст, скопированный из каждой ячейки идеально, без кавычек (даже если они были длинными абзацами).
По умолчанию Excel добавляет кавычки к любому многострочному тексту. Таким образом, простое решение, обеспечиваемое вышеописанным процессом, состоит в том, чтобы гарантировать, что ваши ячейки с длинным текстом не будут автоматически переноситься на несколько строк.
Возможно, стоит отметить, что до того, как я это сделал, клетки выглядели нормально и НЕ выглядели обернутыми. Я думаю, что описанный выше процесс "говорит" Excel не интерпретировать любую ячейку как "многострочный" текст, даже если это длинный абзац, решая, таким образом, проблему "Excel добавляет цитаты в скопированный текст".
У меня такая же проблема с копированием результата из C1, обработанного по формуле. Мое намерение состояло в том, чтобы подготовить JSON.
Пример объединения строк:
A B C
1 string1 tabOnEnd string1tabOnEnd
Старый результат копирования: "string1tabOnEnd"
Проблема заключалась в символе новой строки и символе табуляции. Поэтому я заменяю все новые строки на \n и все вкладки на \t.
Новый результат копирования: string1tabOnEnd\t
Заменить формулу:= SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2; "\"; "\\"); """"; "\"""); CHAR(10); "\n"); " "; "\t")
Возможно, вы можете использовать аналогичную формулу для удаления символа табуляции и символа новой строки. Это должно предотвратить добавление кавычек.= SUBSTITUTE(SUBSTITUTE(B2; CHAR(10); ""); " "; "")
У меня была та же проблема, и ни одно из решений этого поста мне не помогло. Затем я поделюсь решением, которое определенно сработало для меня, на случай, если другие окажутся в такой же ситуации.
Во-первых, это решение также соответствует одной ошибке, о которой недавно сообщили в Microsoft, из-за которой содержимое буфера обмена превращалось в нечитаемое содержимое после любого изменения с помощью VBA, когда пользователь обращался к любой «папке быстрого доступа» с помощью проводника.
Документация по устранению ошибки копирования прошлого, код которой будет использоваться в этом ответе, для удаления кавычек из буфера обмена: https://docs.microsoft.com/en-us/office/vba/access/Concepts/Windows-API/отправка информации в буфер обмена
Вам нужно будет создать макрос, как показано ниже, и назначить ему горячую клавишу «ctrl+c». (Назначение горячих клавиш = вкладка «Разработчик», «Макросы», щелкните макрос, параметры, затем введите букву «c» в поле горячей клавиши).
Sub ClipboardRemoveQuotes()
Dim strClip As String
strClip = Selection.Copy
strClip = GetClipboard()
On Error Resume Next - Needed in case clipboard is empty
strClip = Replace(strClip, Chr(34), "")
On Error GoTo 0
SetClipboard (strClip)
End Sub
Вам все равно потребуется создать функции «SetClipboard» и «GetClipboard».
Ниже мы приводим определение функций «SetClipboard» и «GetClipboard» с некоторыми изменениями для соответствия различным версиям Excel. (Поместите приведенный ниже код в модуль)
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function OpenClipboard Lib "User32" (ByVal hWnd As LongPtr) As LongPtr
Private Declare PtrSafe Function EmptyClipboard Lib "User32" () As LongPtr
Private Declare PtrSafe Function CloseClipboard Lib "User32" () As LongPtr
Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "User32" (ByVal wFormat As LongPtr) As LongPtr
Private Declare PtrSafe Function GetClipboardData Lib "User32" (ByVal wFormat As LongPtr) As LongPtr
Private Declare PtrSafe Function SetClipboardData Lib "User32" (ByVal wFormat As LongPtr, ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As LongPtr
Private Declare PtrSafe Function GlobalLock Lib "kernel32.dll" (ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalSize Lib "kernel32" (ByVal hMem As LongPtr) As Long
Private Declare PtrSafe Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Any, ByVal lpString2 As Any) As LongPtr
#Else
Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Declare Function SetClipboardData Lib "user32.dll" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
#End If
Public Sub SetClipboard(sUniText As String)
#If VBA7 Then
Dim iStrPtr As LongPtr
Dim iLock As LongPtr
#Else
Dim iStrPtr As Long
Dim iLock As Long
#End If
Dim iLen As Long
Const GMEM_MOVEABLE As Long = &H2
Const GMEM_ZEROINIT As Long = &H40
Const CF_UNICODETEXT As Long = &HD
OpenClipboard 0&
EmptyClipboard
iLen = LenB(sUniText) + 2&
iStrPtr = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, iLen)
iLock = GlobalLock(iStrPtr)
lstrcpy iLock, StrPtr(sUniText)
GlobalUnlock iStrPtr
SetClipboardData CF_UNICODETEXT, iStrPtr
CloseClipboard
End Sub
Public Function GetClipboard() As String
#If VBA7 Then
Dim iStrPtr As LongPtr
Dim iLock As LongPtr
#Else
Dim iStrPtr As Long
Dim iLock As Long
#End If
Dim iLen As Long
Dim sUniText As String
Const CF_UNICODETEXT As Long = 13&
OpenClipboard 0&
If IsClipboardFormatAvailable(CF_UNICODETEXT) Then
iStrPtr = GetClipboardData(CF_UNICODETEXT)
If iStrPtr Then
iLock = GlobalLock(iStrPtr)
iLen = GlobalSize(iStrPtr)
sUniText = String$(iLen \ 2& - 1&, vbNullChar)
lstrcpy StrPtr(sUniText), iLock
GlobalUnlock iStrPtr
End If
GetClipboard = sUniText
End If
CloseClipboard
End Function
Я надеюсь, что это может помочь другим так же, как помогло мне.
Работая над ответом от solvus, мы можем создать веб-страницу для автоматической публикации, используя только тот диапазон текста, который вам нужен - без кавычек. затем вы можете скопировать и вставить это в другие места. После того, как вы его настроите, он там навсегда и обновится, не связываясь с вашим основным файлом.
сделать это,...
Выберите ваши клетки, а затем save as
..save as file type
знак равно Single File Web Page
, с возможностью Republish $ : $
(выбранный вами диапазон.)
нажмите опубликовать. Выбрать AutoRepublish every time this workbook is saved
,
- Затем вы получите опубликованную веб-страницу, содержащую только ваши ранжированные данные, в формате таблицы без кавычек. скопировать и вставить:)
Как и у вас, у меня были данные в столбце. Поэтому, чтобы скопировать значения без этих кавычек, я объединяю весь столбец с данными. Это для таблиц Google Docs, но я думаю, что это может работать для Excel, возможно, придется изменить функцию CONCATENATE.
Чтобы объединить всю колонку G:
=CONCATENATE(G:G)
Он добавляет кавычки только первым и последним, и это достаточно легко редактировать вручную позже.