Иметь формулу обрабатывать значение как текст, а не числовое

У меня есть формула Excel, считывающая данные из столбца. Данные в этом столбце иногда имеют формат, подобный дате, например "10-11". Несмотря на то, что я гарантировал, что столбец имеет текстовый формат-и все значения отображаются правильно как обычный текст, а не переинтерпретированы как даты-формула в основном переинтерпретирует их как даты в ссылке.

Мне нужен способ заставить ссылку на ячейку формулы интерпретировать ячейку как текст. Я пробовал текст (A1,"@"), но он не работает -- это дает числовое значение даты.

7 ответов


Брайан Камайр ответ объясняет, почему, но вот функция листа, которая будет работать для вас. Обратите внимание, что вы должны создать этот числовой массив в нем на основе длины самой длинной строки. Это формула массива, поэтому, когда вы впервые вводите ее, вам нужно нажать CTRL-SHIFT-ENTER, затем вы можете щелкнуть и перетащить ее вниз по столбцу.

=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)

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

=("cell data")

например:

=("+1 3456789")

при использовании &"", Excel преобразует результаты формулы в текст (как *1 преобразовать в числа).

таким образом, вы можете использовать эту формулу:

=TEXT(A1;"jj-mm")&""

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

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

например (предполагая форматы даты США), в пустом листе:

  1. задайте для столбца A формат Text.

  2. в ячейке A1 введите значение 10-11.

  3. в ячейке B1 введите формулу =T (A1). Т() функция возвращает указанное значение, если это текст. В противном случае он возвращает пустую строку. Результат формулы в ячейка B1 должна быть 10-11, указывая, что значение A1 является текстом, а не числом или датой (в этом случае результатом будет пустая строка).

  4. в ячейке C1 введите формулу =A1.

  5. в ячейке D1 введите формулу =T (C1). Результат также должен быть 10-11, указывая, что значение формулы в C1 является текстом, а не числом или датой. Это показывает, что вы можете (иногда) использовать текстовое значение, которое выглядит как номер (или дата) в формуле и в Excel рассматривать его как текст (что вы хотите).

  6. в ячейке E1 введите формулу =A1+0. Результат будет 40827. Это числовое значение даты 11 октября 2011 года. Это показывает ,что вы можете (иногда) использовать текстовое значение, которое выглядит как число (или дата) в формуле, и Excel автоматически преобразует его в число (что вы заметили), если вы используете его в месте (например, по обе стороны от оператора+), где Excel ожидает число.


Если вы поместите одну цитату перед текстом в ячейке, она должна быть представлена как текст во всех ссылках:

'10-11

просто добавьте ноль на вход!

У меня была аналогичная проблема, когда у меня был список чисел с текстовым префиксом (например, FOO-1, FOO-25, FOO-979), но я просто хотел числовую часть (1, 25, 979), чтобы я мог запустить другую формулу. Я использовал SUBSTITUTE для замены части текста пустым, но моя другая формула, использующая эти числа, придумывала фиктивные результаты. Я закончил тем, что сделал свою формулу так:

=заменить(B1:B10, " FOO -","")+0, а теперь ISNUMBER говорит правду там, где раньше он говорил ложь.


в моем случае у меня есть лист формы, который используется дилерами для рекламы деталей, и он вычисляет конечную стоимость; он ссылается на заблокированный лист "продукты". Проблема в том, что у меня не было возможности контролировать то, что они вошли.

Products can be like:
101 = A true number
7-2009 = Reads as date
7-5601-RT = TEXT/NUMBER reads as both number or text (NOT SOLVED YET)
CP6072CD = reads as plain text

я понял большую часть этого; единственный, который не является тем, который читает как текст/номер.

В случае, если кто ищет подобное решение, я сделал следующее: Я создал три дополнительных столбца для тестирования и отобразите три разных случая: "число" , "дата", "текст".

DATE:         =NOT(ISERROR(DATEVALUE(B42)))
ISOTHER:      =(ISNUMBER(--(MID(B42,ROW(INDIRECT("1:"&LEN(B42))),1))))
NUMBER:       =ISNUMBER(B42)
NUMBER/TEXT:  =NOT SOLVED YET

I42 = DATE
J42 = NUMBER
K42 = OTHER
L42 = TEXT
M42 = THE RESULT OF THE QUERY BELOW

=IF(AND(I42 = FALSE, J42 = FALSE, K42 = TRUE), "NUMBER", IF(AND( I42 = TRUE, J42= FALSE, K42=TRUE), "DATE", "TEXT"))

Это (выше) проверяет все истинные / ложные результаты и в зависимости от того, какое значение оказывается, я форматирую каждый из них, используя:

ISNUMBER = VALUE(B42)
DATE FORMATTED AS B42*1
ELSE TEXT - AS ORIGINAL

=IF(M42 = "NUMBER", VALUE(B42), IF(M42 = "DATE", B42*1, B42))

Итак, теперь мне просто нужно выяснить, как проверить, является ли что-то как текст, так и число, потому что 7-5601-RT проверяет как то же самое, что и число:"FALSE, FALSE, TRUE, TRUE"