Функция Excel TEXT не работает должным образом

Допустим, у меня есть следующие значения в ячейках

A1 : `=Now()` which displays 17.03.2014 13:45 
A2 : 12.03.2014

Оба в формате даты, и у меня есть функция в других ячейках, как это:

B1 : `=TEXT(A1;"dd.mm.yyyy")`
B2 : `=TEXT(A2;"dd mm yyyy")`

В первом случае я получил #VALUE Ошибка в ячейке Во втором случае я получил: dd 03 yyyy вроде только месяц работает.

Я нахожусь под Windows 7 и Office 2013 Professional.

Есть предположения, что это может быть?

3 ответа

Решение

Ваш код работает нормально для меня.

Хотя я должен использовать

B1 : =TEXT(A1,"dd.mm.yyyy")    
B2 : =TEXT(A2,"dd mm yyyy")

Я догадываюсь, почему я использую , вместо ; связано с разницей в языке. Ошибка, скорее всего, из-за dd.mm.yyyy

Например, я знаю в Германии, я не могу использовать dd потому что d (день) на немецком языке является тегом, и как таковой он требует tt

Я думаю, что месяц в порядке, основываясь на вашем dd 03 yyyy... Швейцария использует много языков, я думаю, и поэтому понятия не имею, что попробовать, но что-то вроде tt.mm.jjjj

Чтобы использовать текстовый формат на английском языке функции Excel TEXT, в то время как у вас есть различные международные настройки системы (Панель управления / Регион и Настройки языка), так что команда =TEXT("12/12/2000", "yyyy") будет работать правильно, измените регистр:

Key Name: HKEY_CURRENT_USER\Control Panel\International Value 25 Name: iCountry Type: REG_SZ Data: 44

Будьте осторожны, в любом случае, такая функция вернет # ЗНАЧЕНИЕ! ошибка в любое время файл будет открыт на любом компьютере с другими международными настройками.

Простое решение, будь то непосредственное форматирование ячейки или использование TEXT(), — это использовать код страны для языка, для которого вы знаете правильные коды форматирования.

Например, я нахожусь в США, имею американскую версию Excel и знаком с ее форматами кода даты. Поэтому я хотел бы использовать их и гарантировать, что они «выходят» независимо от чьей-либо версии Windows или Excel или страны, в которой они находятся, я бы сделал это следующим образом (скажем, для TEXT(), но это была бы та же идея в пользовательском форматировании):

      =TEXT(A1,[$-en-US]"dd-mm-yyyy")

Функция соберет значение в A1, попросит Excel обработать его как дату, Excel ответит: «Хорошо, это круто» (т. е. значение, скажем, 43857, а не «лошадь»), потому что это положительное число, которое является требованием, чтобы что-либо рассматривалось как дата, и позвольте функции перейти к рендерингу этого как даты в установленном порядке. Вместо того, чтобы даватькак и для «лошади» или -6.

Затем функция прочитает строку форматирования и увидит код языка. Затем он удалял обычный набор кодов форматирования, загружаемый при запуске, и загружал коды форматирования для английского («en») и, в частности, американского английского («US»). Остальная часть строки использует коды из этого набора, поэтому она правильно их интерпретирует и отправляет соответствующую строку обратно в TEXT() для ее отображения в ячейке (и перехода к другим формулам, если таковые существуют).

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

Однако основная проблема, которая возникает с этой проблемой в целом, очень и очень легко решается с помощью кодов стран. Теперь они даже не являются сложными или загадочными, поскольку синтаксис [$-409] был заменен такими вещами, как [$-en-us] и [$-he-IL] и так далее.

Другие вопросы по тегам