Excel рассчитывает разные даты по одной и той же формуле для серверной и локальной установки

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

Microsoft® Excel® 2016 (16.0.5443.1000) MSO (версия 2402, сборка 16.0.5443.1001) 32-разрядная версия

Microsoft® Excel® для Microsoft 365 MSO (версия 2402, сборка 16.0.17328.20282), 64-разрядная версия

В обоих файлах указанная ячейка J4 содержит дату 01.05.2024. Сервер выглядит американским и думает, что сегодня 1 мая, а моя машина, должно быть, британская и видит 5 января. Я живу в Великобритании, но работаю с американским программным обеспечением, поэтому ячейку действительно следует интерпретировать как 1 мая. В любом случае мне бы хотелось, чтобы все было единообразным, чтобы я мог подготовить файлы и отправить их по электронной почте.

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

StoneGiant 09.05.2024 16:06

Спасибо за ответ. Это просто текст, похожий на дату. Но вот как выводятся данные и с чем мне приходится работать. И Excel удается правильно интерпретировать ее как дату EOMONTH, просто он интерпретирует ее по-разному в разных моих установках Excel. Вы правы насчет ТЕКСТА, я изменю формат даты для этих ячеек на правильное.

Raphaël Briand 09.05.2024 16:27

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

StoneGiant 09.05.2024 16:33

Мне придется написать что-то громоздкое, чтобы разобрать строку и привести ее в правильный формат — спасибо за идею. Я не думаю, что вы знаете, как изменить стандартные форматы даты в Excel?

Raphaël Briand 09.05.2024 16:41

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

StoneGiant 09.05.2024 16:48

Мне любопытно узнать, что вернет CELL для J4 при просмотре файла на сервере и локально. Если у вас есть время, не могли бы вы опубликовать результаты =CONCATENATE("format: ",CELL("format",J4), " type: ", CELL("type",J4))?

nkalvi 09.05.2024 19:03

Поскольку вы готовите Excel на сервере, просто сохраните/скопируйте значения дат как даты, а не как текстовые строки. Даты хранятся в виде чисел и будут правильно интерпретироваться как правильная дата независимо от региональных настроек.

Ron Rosenfeld 09.05.2024 21:31

@nkalvi Конечно, вот результаты: Сервер: 'формат: тип G: l' Локальный: 'формат: тип D1: l'

Raphaël Briand 10.05.2024 10:34

Спасибо, Рафаэль. Я предполагаю, что это один и тот же файл, который вы открыли в обоих местах; хотя тип является текстовой константой в обоих случаях, я не уверен, почему он интерпретируется как общий на сервере и как дата локально. D1 означает «д-ммм-гг или дд-ммм-гг», используя CELL вы можете улучшить формулу.

nkalvi 10.05.2024 16:14
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
9
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку значение J4 является строковым значением, Excel неявно преобразует это значение в дату в функции EOMONTH. Неявное преобразование на сервере использует региональные настройки для Америки. Неявное преобразование на локальном компьютере использует региональные настройки Великобритании.

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

Попробуй это:

= EOMONTH( DATE( VALUE( RIGHT( J4, 4 ) )
               , VALUE( LEFT( J4, 2 ) )
               , VALUE( MID( J4, 4, 2 ) ) ), 0 )

Для меня это был эффективный обходной путь

Raphaël Briand 09.05.2024 17:24

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