Независимая от локали текстовая функция в Excel - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно отформатировать даты в Excel, и я пытаюсь использовать формулу TEXT.Проблема заключается в том, что интерпретация аргументов в Excel изменяется при изменении локали.

Например: если у меня в ячейке A1 есть дата, которую я хотел бы преобразовать в текст в формате год-месяц-день, я должен использовать =TEXT(A1, "yyyy-mm-dd"), если на моем ПК установленаАнглийский язык, но =TEXT(A1, "jjjj-MM-tt") (я шучу, нет, M должен быть в верхнем регистре), если он имеет немецкий язык.Это делает документ непереносимым.(Второй аргумент - это простой текст, и поэтому он не преобразуется при изменении локали.)

Примечания:

  • Это всего лишь пример, я знаю, что могу сделать длинный =TEXT(YEAR(A1), "00") & "-" & TEXT(MONTH(A1), "00") & "-" & DAY(A1) в этом случае.Меня интересует более общий случай.

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

  • Я мог бы написать UDF в VBA для решения проблемы, но яне могу использовать VBA в этом документе.

  • Меня не волнует изменение названий месяцев и т. д. Хорошо, если название месяца - июнь или июнь, в зависимости от локали.

Большое спасибо

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вот слегка обманчивый метод: используйте VLOOKUP для значения, которое будет меняться в зависимости от вашего языка системы - например, TEXT(1,"MMMM")

=VLOOKUP(TEXT(1,"MMMM"),{"January","yyyy-MM-dd";"Januar","jjjj-MM-tt"},2,FALSE)

На английском языке: Text(1,"MMMM") = "January", поэтому мы делаем VLOOKUP на массиве ниже, чтобы получить "yyyy-MM-dd"

"January" , "yyyy-MM-dd" ;
"Januar"  , "jjjj-MM-tt"

Auf Deutsche, Text(1,"MMMM") = "Januar", также wir machen einen SVERWEIS auf dem Array oben, эм "jjjj-MM-tt" zu erhalten! :)

Затем просто используйте это в вашей функции TEXT:

=TEXT(A1, VLOOKUP(TEXT(1,"MMMM"),{"January","yyyy-MM-dd";"Januar","jjjj-MM-tt"},2,FALSE))

Очевидно, что основная причина этой работы заключается в том, что TEXT(1,"MMMM") действителен как для немецкого, так и для английского языков. Если вы используете что-то наподобие филиппинского (где «Месяц» означает «Буван»), то вы можете столкнуться с некоторыми проблемами при поиске взаимно понятного ввода форматирования.

0 голосов
/ 05 июля 2019

Выберите соответствующие ячейки. Перейдите в Форматирование -> Число -> Дата. Из списка выберите то, что вам подходит. Вы даже можете создать свой собственный формат.

enter image description here


Используйте текстовую функцию:

=TEXT(date,format)

Миграция между различными версиями Excel (на разных языках) НЕ ДОЛЖНА быть проблемой, так как Excel выполнит преобразование за вас.

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

  • сохранить рабочий файл в одной версии;
  • скопировать файл на другой компьютер с Excel на другом языке;
  • открыть файл - формулы должны быть обновлены.

Я уверен, что это сделано для имен функций (ЕСЛИ <-> ЕСЛИ <-> WENN). Я не знаю наверняка о спецификаторах формата.


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

=TEXT(A1,"[$-409]mmmm, yyyy")

где в скобках указан код страны.

Список кодов приведен на странице .

Я не знаю, как функция остается "безопасной" при открытии в Excel для другого языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...