Как убедиться, что все ячейки Excel, отформатированные как текст в столбце, на самом деле - PullRequest
2 голосов
/ 25 января 2012

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

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

Как я могу это сделать в VBA? Я не хочу посещать каждую ячейку, нажимать на конец содержимого и нажимать клавишу ввода. Обрезка и вставка в специальной комбинации без надёжности исправляет это.

На что смотрит Excel, что правильно решает проблему с форматом с помощью этих предупреждающих индикаторов текстового формата, и, тем не менее, кажется, что это неправильно, когда вы смотрите на свойства формата ячейки?

enter image description here

Excel 2003, но в более поздних версиях возникла та же проблема.

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Для меня работало, чтобы проверить индикатор ошибки, который казался более надежным, чем сам формат ячейки. Это ищет все, что пропускает индикатор, и заставляет его быть текстом.

Если кто-то не знает что-то дополнительно о том, почему это НЕ следует делать, это решает мою проблему.

Sub check4textformat()
 For Each cell In Range("E2:E15000")
 If cell.Errors.Item(xlNumberAsText).Value = False Then cell.Formula = cell.Text
 Next
End Sub
1 голос
/ 15 октября 2015

Поскольку ваша основная цель - не посещение каждой ячейки, я предложу более простой способ, чем VBA (на самом деле это, вероятно, самый простой способ).

  1. Выберите нужный столбец.
  2. Перейдите в Данные> Текст в столбцы.
  3. Выберите «С разделителями» (должен быть уже выбран по умолчанию) и нажмите «Далее».
  4. Снимите флажки со всех разделителей и нажмите «Далее» (вы также можете оставить состояние по умолчанию «Tab» в качестве единственного разделителя).
  5. В разделе «Формат данных столбца» выберите «Текст» и нажмите «Готово».

Готово. Все числа в столбце должны быть сохранены в виде текста.

0 голосов
/ 25 января 2012

Перед каждым числом вам нужно всего лишь добавить символ текстового индикатора «». Предполагая, что ваши значения находятся в первом столбце, в первых 120 строках, вы можете сделать это следующим образом:

For i = 1 To 120
    Me.Cells(i, 1).Value = "'" & Me.Cells(i, 1).Value
Next i

Если ячейка уже имеет текстовое значение, предваряющий игнорируется. При копировании (и при получении значения в VBA) символ '' 'полностью игнорируется, поскольку он указывает только на "тип" содержимого ячейки.

...