Символ табуляции в Excel

Обновлено: 04.07.2024

Если вы копируете ячейку, содержащую текст, который также включает один или несколько символов табуляции, эти символы табуляции не экранируются должным образом и интерпретируются как разделители ячеек при вставке. В результате копирование одной такой ячейки при вставке растягивается на несколько ячеек.

Текст был успешно обновлен, но возникли следующие ошибки:

cgatesman прокомментировал 19 сентября 2019 г. •

Просто хотел отметить, что становится еще хуже, если в тексте есть новые строки. Обратите внимание, текст ниже вставляется в редактор после копирования из поля в HOT.

прокомментировал А.М.Будник 19 сентября 2019 г.

wojciechczerniak прокомментировал 19 сентября 2019 г.

@AMBudnik: Excel и Google Spreadsheet делают то же самое

cgatesman прокомментировал 19 сентября 2019 г. •

@AMBudnik смотрите мой отредактированный комментарий. Я не сделал это правильно в первый раз.

прокомментировал А.М.Будник 19 сентября 2019 г. •

@wojciechczerniak, можете ли вы проверить второй пример @cgatesman
У меня нет Excel, но я протестировал его в Google Sheets

image

Google Таблицы

cgatesman прокомментировал 19 сентября 2019 г. •

Если вы вставите это в ячейку Excel (во время редактирования ячейки), а затем скопируете ячейку и снова вставите, она будет вставлена ​​в одну ячейку. Если вы вставите его в редактор, а затем скопируете этот текст и вставите обратно в Excel, он будет занимать две строки, сохраняя кавычки, но преобразовывая вкладки в один пробел.

Это имеет смысл, поскольку данные, вставленные в редактор, выглядят так:

Напомню, что в Excel поведение при редактировании ячейки и вставке отличается от простого вставки в ячейку. Вставка текста из редактора при редактировании ячейки в Excel сохраняет табуляцию (как и ожидалось), а при вставке данных непосредственно в какую-либо ячейку табуляция преобразуется в пробелы.

Я подозреваю, что при копировании и вставке непосредственно из Excel работает, потому что он копирует разные форматы в буфер обмена и использует соответствующий для Excel (буфер обмена поддерживает несколько форматов при записи в него данных). Это, вероятно, невозможно с браузером/JavaScript, но я думаю, что это может быть обработано немного лучше в Handsontable - даже если это вопрос преобразования символов табуляции в пробелы (что я, вероятно, сделаю в качестве быстрого решения). Во всяком случае, вкладки не должны интерпретироваться как переход к следующей ячейке, когда вставленные данные заключены в кавычки.

wojciechczerniak прокомментировал 19 сентября 2019 г.

@AMBudnik То же, что и таблица Google.

Снимок экрана 2019-09 -19 на 15 22 08

Но я бы назвал их поведение непоследовательным. Это не связано с кавычками, потому что они по-прежнему разбивают буфер обмена на несколько строк, но игнорируют вкладки внутри этих строк. Может быть, @swistach вспомнит что-то еще.

Excel, Google Spreadsheet и Handsontable правильно вставят значение, если вы откроете редактор. В противном случае они пытаются разобрать его в таблицу с различными результатами.

По крайней мере, наше поведение стабильно.

wojciechczerniak прокомментировал 19 сентября 2019 г. •

@cgatesman Вы правы. Excel имеет собственный тип MIME, зарегистрированный в системном буфере обмена. У нас есть только два text/plain и text/html.

Если мы проигнорируем вкладки, мы прервем копирование и вставку текста/плана в простые редакторы, которые не поддерживают формат текста/html.

Проверить цитату также непросто. Мы должны найти начало и конец. Если есть еще такие, которые запросто могут снова сломаться. И мы не можем быть уверены, что цитата не должна просто распределяться между ячейками. Должен быть символ, обозначающий конец ячейки, а табулятор — самый популярный.

Мы должны спросить @swistach о его опыте работы с другими редакторами.

cgatesman прокомментировал 19 сентября 2019 г.

@wojciechczerniak, вы абсолютно правы (см. мою правку выше). Я предполагаю, что единственная реальная несогласованность в Handsontable здесь заключается в том, что копирование одной ячейки, содержащей вкладки, и вставка ее в другую ячейку приводит к тому, что она охватывает несколько ячеек. Этого не происходит в таблицах Google.

cgatesman прокомментировал 19 сентября 2019 г. •

Похоже, Google Spreadsheets преобразует табуляцию в 8 пробелов при копировании ячейки. Это гарантирует, что вкладки в данных могут использоваться только для разделения ячеек.

Я также должен указать, что @wojciechczerniak не прав в том, что Google Spreadsheet ведет себя так же при вставке, когда вы открываете редактор. Если вы вставляете данные с вкладками в электронную таблицу Google, когда у вас открыт редактор ячеек, в конечном итоге эти вкладки будут преобразованы в 8 пробелов. Вы можете убедиться в этом, снова открыв редактор после сохранения ячейки и пробела в этой области.

Мне кажется, что подход Google Spreadsheet может быть лучшим компромиссом с ограничениями MIME.

cgatesman прокомментировал 19 сентября 2019 г. •

@AMBudnik: Excel и Google Spreadsheet делают то же самое

Это несправедливо, так как проблема больше связана с копированием ячеек с листа (например, не из редактора), а затем вставкой их обратно. Excel и Google Spreadsheet не неправильно охватывают несколько ячеек, когда вы делаете это, как это делает HOT. .

wojciechczerniak прокомментировал 20 сентября 2019 г.

@cgatesman Этого не происходит и в Handsontable. Открыв редактор, вы можете вставить содержимое с вкладками. Затем, если вы скопируете ячейку, она будет скопирована и вставлена ​​как тип MIME text/html, и Handsontable распознает ее как одну ячейку при вставке.

Это было введено в версии 7.1.0, если я правильно помню. Какая у вас версия?

Похоже, Google Spreadsheets преобразует табуляцию в 8 пробелов при копировании ячейки. Это гарантирует, что вкладки в данных могут использоваться только для разделения ячеек.

Вы получаете контент, отличный от скопированного? Вау, не знал этого. Это не тот контент, который я хотел вставить. Похоже на ошибку для меня. Но, возможно, вы правы, возможно, это фича 🙈

Это можно сделать с помощью хука beforePaste.

cgatesman прокомментировал 20 сентября 2019 г.

@cgatesman В Handsontable этого тоже не происходит. Открыв редактор, вы можете вставить содержимое с вкладками. Затем, если вы скопируете ячейку, она будет скопирована и вставлена ​​как тип MIME text/html, и Handsontable распознает ее как одну ячейку при вставке.

Нет. Я же говорю проблема когда копируешь не открывая редактор. Если я просто выберу ячейку, в которой есть текст с вкладками, и скопирую ее, а затем напрямую вставлю в другое место в HOT (не открывая редактор ячеек), она будет вставлена ​​​​в несколько ячеек. Этого не происходит в Excel или таблицах Google.

wojciechczerniak прокомментировал 20 сентября 2019 г. •

Извините, но я не могу воспроизвести проблему. Я копирую из ячейки в ячейку, не открывая редактор:

Я что-то не так делаю? Какая у вас версия?

Возможно, это связано с операционной системой?
Какая у вас ОС и веб-браузер?

cgatesman прокомментировал 20 сентября 2019 г.

Я тестировал на страницах документации Handsontable. Мне жаль. Я тоже сейчас не могу воспроизвести. Наверное, я перепробовал так много разных сценариев, что теперь я их перепутал.

Судя по версиям, похоже, что это было исправлено в 6.1.0, а не в 7.1.0. Я использую более старую версию.

Я мог бы поклясться, что попробовал это на сайте документации перед публикацией этого выпуска. Может быть, я случайно смотрел более старую версию. Прошу прощения.

cgatesman прокомментировал 20 сентября 2019 г.

Я понял, что произошло во время тестирования. Я скопировал из своей старой версии HOT и вставил в новую версию на сайте HOT docs, думая, что, поскольку она там не работает, в новой версии она не работает. Однако решение этой проблемы заключалось не в оклейке. Это было при копировании.

wojciechczerniak прокомментировал 20 сентября 2019 г.

Нет проблем. Это была хорошая дискуссия, и я узнал кое-что новое. Надеюсь, эта тема поможет кому-то в будущем. Приятно знать, что это работает для вас @cgatesman

Я использую Excel 2003 и хочу вставить символ табуляции в
ячейку. Я пробовал CTRL + ALT + TAB, чтобы вставить символ табуляции внутрь
ячейки, но ничего не происходит.

Кто-нибудь знает, как ввести символ табуляции? Спасибо

Реклама

Горд Диббен

Вы не можете вставить символ табуляции в ячейку.

Вы можете вставить перевод строки с помощью Alt + Enter


Горд Диббен MS Excel MVP

Рик Ротштейн \(MVP - VB\)

Странно, похоже, что вы можете объединить символ табуляции в строку,
но Excel вам этого не покажет. Введите это в A1.

(значение ASCII для символа табуляции равно 9) и поместите его в
B1.

Для A1 будет отображаться длина 3 символа, но окажется, что в нем
только 2 символа.

Горд Диббен

Используя вашу формулу, я получаю букву A, маленький полый квадратный символ табуляции и букву B

Но это не представляет собой вкладку в ячейке.

С другой стороны, CHAR(10) даст вам перевод строки в ячейке, который отвечает
форматированию переноса текста.

Рик Ротштейн \(MVP - VB\)

Хм! Интересно, почему я не получаю «пустой квадрат». Я использую XL2003 на
Vista. Интересно, имеет ли это значение? Или я где-то пропустил параметр "не показывать непечатаемые
символы"?

Тем не менее, это символ табуляции, просто кажется, что Excel ничего не делает с ним
для отображения. Символ (невидимый в моей системе, пустой квадрат в
вашей) сохраняет свое кодовое значение ASCII, равное 9 (которое является кодовым значением ASCII
символа табуляции); мы можем увидеть это с помощью этой формулы.

Пит_Великобритания

У меня отображается AB (без пустого прямоугольника), даже если в формуле используется несколько символов CHAR(9)
. Между прочим, это XL2k для Windows XP.

Реклама

Горд Диббен

Excel 2003 SP3 и WindowsXP SP2 на моем компьютере.

Не знаю, от чего зависит, виден ли пустой прямоугольник или нет.

Появляется ли поле перевода строки, когда вы нажимаете Alt + Enter и отключаете перенос текста?

Горд Диббен

В A1 введите =CHAR(СТРОКА())

Вы видите полые коробки до A31?

RagDyeR

По какой причине вы вставляете эту вкладку?

Какое именно действие вы ожидаете от него?
--

Я использую Excel 2003 и хочу вставить символ табуляции в
ячейку. Я пробовал CTRL + ALT + TAB, чтобы вставить символ табуляции внутрь
ячейки, но ничего не происходит.

Кто-нибудь знает, как ввести символ табуляции? Спасибо

Рик Ротштейн \(MVP - VB\)

Нет. Я вижу различные символы или пустые квадраты. Например, в 14-м ряду
я вижу символ музыкальной ноты, в 17-м ряду я вижу закрашенный треугольник, указывающий влево,
в 26-м ряду — стрелку, указывающую вправо, в 27-м ряду — налево. -указывающая стрелка, разбросанная
в других местах, выглядит как старая линия, рисующая
персонажи из дней DOS и т. д.

Рик Ротштейн \(MVP - VB\)

Появляется ли поле перевода строки, когда вы нажимаете Alt + Enter и отключаете перенос текста?

Нет, не знаю. текст соединен так, что между ними ничего нет.

Реклама

RagDyeR

Вы случайно не используете собственный шрифт?
--

сообщение Не знаю. Я вижу различные символы или пустые квадраты. Например, в 14-м ряду
я вижу символ музыкальной ноты, в 17-м ряду я вижу закрашенный треугольник, указывающий влево,
в 26-м ряду — стрелку, указывающую вправо, в 27-м ряду — налево. -указывающая стрелка, разбросанная
в других местах, выглядит как старая линия, рисующая
персонажи из дней DOS и т. д.

Рик Ротштейн \(MVP - VB\)

Вы случайно не используете собственный шрифт?
--

сообщение Не знаю. Я вижу различные символы или пустые квадраты. Например, в 14-м ряду
я
вижу символ музыкальной ноты, в 17-м ряду я вижу заполненный треугольник,
указывающий влево,
в 26-м ряду — вправо- указывающая стрелка, в строке 27 стрелка, указывающая влево,
разбросаны
в других местах то, что выглядит как старая линия, рисующая
персонажи из дней DOS, и так далее.

Горд Диббен

Это чертовски странная вещь.

Похоже, для этого столбца включен какой-то шрифт Dingbats.

Но вы ответили Arial на запрос RD, так что у меня нет идей.

Роджер Говье

Я вижу точно то же, что и вы в XL2003 на Vista SP1.
Я только что подошел к машине моей жены с XP Professional и получил тот же
результат.
XL2007 дает одинаковый результат в обеих операционных системах

Рик Ротштейн \(MVP - VB\)

Спасибо за подтверждение. Я только что запустил свою копию XL2007, и она тоже
отображает те же символы, что и моя копия XL2003. Я не уверен, что у меня
Vista SP1 или нет (как мне это проверить?). Интересно, что если вы
выделите столбец символов и измените имя шрифта, символы останутся
(они меняют размер, но я не думаю, что их формы изменились). Если вы
введете текст в одну из этих ячеек, текст обязательно будет
назначен новым шрифтом. Так. кто-нибудь. что здесь происходит?

Реклама

райанмук

Я также получаю блок/квадрат в Excel 2003 на XP

Я хочу вставить символ табуляции для отступа текста, но я не хочу
использовать отступ выравнивания. Это связано с тем, что существует программа, которая
прочитает файл excel и в зависимости от того, сколько табуляции предшествует
тексту в ячейке, будет выполнено определенное действие (выравнивание
отступа не будет считаться вкладкой, так что это не сработает). Мне также
нужен визуальный отступ, так как без него вы не сможете увидеть,
что вы создаете.

Возможно, это невозможно сделать в Excel.

Билли Лиддел

ОП сказал, что хочет вставить этот материал в другой пакет.
Копирование ="A"&CHAR(9)&"B" в Блокнот вернуло "A (вкладка) B"
Попытка того же в Word дала AB
Копирование формулы в Word как Специальная вставка , RTF дал правильные
результаты. Возможно, этого будет достаточно для ОП.

Из-за того, что слово TAB настолько популярно, поиск в Google затруднен, поэтому он не приносит удовольствия. У меня есть отчет с символом TAB в середине строки, который мне нужно удалить как часть строки.

Использование специальных символов, таких как ^t или ^9, не подходит.

О, это Excel 2003, если это имеет значение.

26 сентября 2013 г., 18:57

Нажмите Ctrl-F, чтобы открыть диалоговое окно «Найти». Удерживая клавишу Alt, введите 0009 в поле Найти с помощью цифровой клавиатуры и отпустите клавишу Alt. Нажмите «Найти далее».

Если вы используете ноутбук и у вас нет цифровой клавиатуры, перед этим нажмите клавиши Fn и NumLk.

Или вы можете использовать функцию Excel CLEAN для удаления всех непечатаемых символов из строки.

26 сентября 2013 г., 21:21

Я попробовал [alt]0009, но это не сработало. Возможно, это работает только в версиях Excel новее 2003 года. Я могу использовать формулу, но она не заменяет исходную ячейку, а скорее заполняет изменение соседней ячейки. Работает ли CLEAN над ячейкой на месте?

Возможно, мне придется углубиться в макросы VBA.

27 сентября 2013 г., 3:37

CLEAN удаляет первые 32 непечатаемых символа ASCII, но не работает с ячейкой на месте.

Что произойдет, если вы нажмете Ctrl+H, наберете CHAR(9) в поле "Найти" и затем нажмете "Найти все"?

Если при этом будут найдены символы TAB, введите все, что хотите, в поле «Заменить на», заключенное в кавычки (например, «ZZ» или «» для пробела или «» без указания символа), а затем нажмите «Заменить все».

27 сентября 2013 г., 8:55

CHAR(9) воспринимается буквально, так что это не сработает. Если не считать макроса, я думаю, что другого пути нет, по крайней мере, через интерфейс поиска и замены. Спасибо за попытку.

Тем не менее, в данном конкретном случае символу TAB предшествует согласованная и уникальная последовательность символов, которую я могу использовать при поиске, и я могу заменить TAB подстановочным знаком с одним символом ? поэтому у меня есть обходной путь.

27 сентября 2013 г., 20:53

Мы получаем разные результаты, но, вероятно, это связано с тем, как были введены символы.

Найти что: CHAR(9) работает для меня, если я ввожу символы в ячейки напрямую.

Ячейки A1:C1 содержат CHAR(9) + текст + CHAR(9). CHAR(9) — это символ TAB. Не отображается.

На первом рисунке показаны результаты поиска всех с помощью команды "Найти что": CHAR(9).

Если я ввожу символы TAB в Блокнот с помощью комбинации клавиш Alt+0009 (напечатан с включенным NumLk), а затем вставляю их в Excel, что происходит: CHAR(9) не находит их. Но найти что: Alt+0009 (набранный с включенным NumLk) находит их.

Ячейка A3 содержит буквы T + Alt-0009 + букву h + Alt-0009 + букву e (скопировано из Блокнота). В этом случае символ TAB отображается.

На втором рисунке показаны результаты поиска всех с помощью Find what: Alt+0009 (набрано с включенным NumLk).

Вы уверены, что это символ TAB? Вы можете использовать надстройку Cell View для проверки:

Но, как вы сказали, если у вас есть уникальная строка перед символом TAB, все может быть в порядке.

Если вы работаете с файлами, полученными из источника, отличного от Excel, иногда в ваших ячейках могут появляться символы, которые Excel не умеет правильно отображать. Например, у вас может быть текстовый файл с разделителями-запятыми, сгенерированный бухгалтерским программным обеспечением вашей компании, и вы загружаете этот файл в Excel. В некоторых ячейках вы можете заметить, что есть маленькие коробки. Они представляют собой непечатаемые символы. Excel отображает маленькие квадратики, чтобы вы знали, что символ есть, даже если его нельзя отобразить или распечатать.

Чтобы избавиться от этих символов, вы можете попробовать использовать функцию "Найти и заменить" в Excel. Попробуйте выполнить следующие действия:

  1. В ячейке, содержащей одно из маленьких полей, выделите поле и нажмите Ctrl+C. Это скопирует символ в буфер обмена.
  2. Нажмите Ctrl+H. Excel отображает вкладку «Заменить» диалогового окна «Найти и заменить». (См. рис. 1.)


Рис. 1. Вкладка «Заменить» диалогового окна «Найти и заменить».

Этот подход может сработать, а может и не сработать, в основном в зависимости от Excel и от того, позволит ли он на самом деле скопировать недопустимый символ на шаге 1. Если он сработает, значит, вы узнали ценный метод избавления от неверных символов. Если это не сработает, попробуйте другой подход.

Одна вещь, которую стоит попробовать, – это использовать Word в операциях по "очистке". Скопируйте данные из Excel в документ Word (вставьте как обычный текст), а затем замените неверные символы. Затем вы можете вставить данные обратно в Excel. Некоторые люди сообщают, что получают именно те результаты, которые им нужны, используя такой двусторонний подход к работе с данными.

Конечно, вы можете использовать макрос, чтобы избавиться от оскорбительных символов. Несложно создать собственную версию функции CLEAN, которая вместо простого удаления непечатаемых символов заменяет их пробелами. Рассмотрим следующий пример макроса:

Эту функцию можно использовать на листе следующим образом:

В этом случае все непечатаемые символы в ячейке B14 заменяются пробелом. Если вы хотите, чтобы символы были заменены чем-то другим, просто укажите текст для замены. В следующем примере непечатаемые символы заменяются тире:

Следующее использование просто удаляет непечатаемые символы, как и функция CLEAN:

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию. Нажмите здесь, чтобы открыть эту специальную страницу в новой вкладке браузера.

Биография автора

На его счету более 50 научно-популярных книг и множество журнальных статей. Аллен Уайатт является всемирно признанным автором. Он является президентом Sharon Parq Associates, компании, предоставляющей компьютерные и издательские услуги. Узнайте больше об Аллене.

Читайте также: