Обрабатывать вставку десятичной точки с точкой (1.7), когда локаль ожидает запятую (1,7)

672
Dr. Gianluigi Zane Zanettini

У меня есть источник данных, где точка используется в качестве десятичного разделителя, то есть: 1.49означает «полтора». Не могу изменить это.

Этот номер должен быть скопирован в числовую ячейку в Excel или Calc. Файл является общедоступным, и любой может его получить ( получить его здесь ), поэтому я не могу контролировать пользовательский ПК / программу.

Большинство пользователей имеют итальянский язык с языковым стандартом it_IT, где десятичные дробные разделены запятыми, то есть: 1,49означает «один с половиной» (обратите внимание на запятую вместо точки).

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

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

enter image description here

Итак, мой вопрос:

  1. Можно ли принудительно установить языковой стандарт файла / листа в «en_US», независимо от пользовательского языкового стандарта?
  2. Можно ли привязать атрибут Language?
  3. Любая другая идея? (пожалуйста, не «попросите пользователя изменить настройки»)

Я бы предпочел избегать макросов, если это возможно.

Спасибо!

Обновление : я нахожусь на Windows 10 x64, и я только что обновил до LibreOffice 5.4.4 x64. Настройка языка для каждой ячейки по-прежнему не сохраняется. Это даже не ясно мне, если он должен быть сохранен или, если это просто настройка вида (догадается бывшим, так как сохранить кнопки загораются, когда я делаю это ..)

3
Интересно. Я подтвердил с помощью Calc 5.3.6.1 в Linux, что он забывает язык ячеек. RonJohn 6 лет назад 1
Вы использовали формат XLS. В Excel нет свойства «Язык» для ячейки, поэтому при сохранении в формате xls эта информация удаляется. Формат ods native Calc имеет это свойство, поэтому вы можете иметь две ячейки с различными языковыми настройками, например: 1,49 и 1,49, и все же результат будет 2,98 или 2,98 в зависимости от формата ячейки, который содержит функцию SUM. В ods copy-paste ячейка, закрытие открытого файла не вредит настройкам ячейки. Вы должны использовать формат ods? Вероятно, не так, как пользователи Excel получат грязную подсказку, что содержимое файла не читается. Поэтому, безусловно, интересно, есть ли какое-нибудь «простое» решение для этого. wlod 6 лет назад 1

2 ответа на вопрос

0
Hannu

Ручное решение, которое будет повторяться при каждой вставке:

После копирования и вставки; вставленные ячейки выделены ...
Немедленно используйте Find & Replace, сначала замените любое "." (разделитель тысяч) с "" (то есть "ничего"), затем замените "," (оригинальный разделитель десятичных дробей) на "." новый десятичный разделитель).

Возможно, вам придется использовать «Специальная вставка», чтобы добавить 0 или умножить на 1, чтобы их можно было интерпретировать как числа (==> поместите 1 или 0 в любую ячейку, скопируйте их, затем выполните «Специальная вставка» и выберите «добавить»). значение "или" умножить значение ") .

Автоматизация: «Записать макрос», сделать выше, «Остановить запись». Там у вас также есть возможность назначить сочетание клавиш.

0
Dr. Gianluigi Zane Zanettini

Мои друзья из TurboLab.it предложили лучшее решение на данный момент:

  1. установить ячейку, предназначенную для принятия ввода пользователя как «текст»
  2. во временной ячейке рядом замените точку запятой на что-то вроде =SUBSTITUTE(E16;".";",")
  3. посчитаем замененное значение
  4. преобразовать его, если необходимо

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

Единственным существенным недостатком является то, что это работает, только если у пользователя есть локаль, где "запятая" - это десятичный разделитель, например, итальянский.

НТН.

Похожие вопросы