Горизонтальные и вертикальные разделители массивов - Международный - программирование
Подтвердить что ты не робот

Горизонтальные и вертикальные разделители массивов - Международный

В продолжение предыдущего вопроса о горизонтальных и вертикальных массивах у меня возник вопрос о соответствующих разделителях.

Определение проблемы:

Вот пример неправильного способа сравнения двух массивов:

{=SUMPRODUCT(--({"Apple","Pear"}={"Apple","Lemon","Pear"}))}

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

{=SUMPRODUCT(--({"Apple","Pear"}={"Apple";"Lemon";"Pear"}))}

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

Работа на машине с голландским кодом страны в приложении, однако, это не совсем другая история. Это расстраивает, что мои разделители будут разными, соответственно ; и \. Будучи в состоянии довольно просто извлечь точку с запятой, оказалось сложно найти любую документацию по этим разделителям для международной версии.

Решение:

Незнание этих разделителей заранее затрудняет работу с этими формулами для любого пользователя в различных международных версиях приложения. Довольно простым решением будет использование TRANSPOSE():

{=SUMPRODUCT(--({"Apple";"Pear"}=TRANSPOSE({"Apple";"Lemon";"Pear"})))}

Проходя встроенную оценку, мы можем получить обратную косую черту как разделитель столбцов. Другой способ - использовать свойство Application.International и его xlColumnSeparator и xlRowSeparator.

Вопрос

Мы можем найти и даже переопределить xlDecimalSeparator и xlThousandsSeparator через Excel (Файл> Параметры> Дополнительно) или VBA (Application.DecimalSeparator = "-"), но где мы можем найти:

  • Место, где можно увидеть, какие xlRowSeparator и xlColumnSeparator используются в вашем собственном приложении, кроме описанных мной обходных путей. Ищите интерфейс, похожий на тысячи и десятичный разделитель и/или официальную документацию MS.

Кроме того (не специально ищет это), есть:

  • Место, где их можно переопределить, как десятичный разделитель и тысяча разделителей
  • Если не через интерфейсы Excel, можем ли мы каким-то образом перебить это с помощью VBA?

Мне очень любопытно, есть ли официальная документация и/или может ли быть сделано вышеупомянутое.

4b9b3361

Ответ 1

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

Без каких-либо официальных документов по этому вопросу и, казалось бы, случайных разделителей строк и столбцов, @Gserg продемонстрировал хитрость для получения информации для любого LCID с использованием этого уникального идентификатора в службе поддержки MS Office в разделе "Создание одномерных и двумерные константы ". Хотя это информация службы поддержки MS Office, разделителями, которые вы видите, являются ЛОЖЬ. Они могут выступать как . a , a ; a : a \ или даже |. Вы получаете эти результаты, изменяя LCID с URL-адреса на интересующий LCID, например: fr-fr.

Хотя существует около 600 различных LCID, все они перенаправляются к стандартному LCID. С помощью @FlorentB. мы обнаружили, что не только документация поддержки MS Office неверна, но, похоже, что эти разделители не так уж случайны. Глядя на страны, использующие десятичную точку, они используют , в качестве разделителя столбцов (горизонтальный массив) и ; в качестве разделителя строк (вертикальный массив). Однако страны, использующие десятичную запятую, используют \ в качестве разделителя столбцов и ; для строк соответственно.

Изменяя настройки страны системы, проверяя все значения по умолчанию LCID в Excel, мы получили приведенную ниже матрицу, в которой показаны все разделители строк и столбцов для каждого значения по умолчанию:

| LCID  | Row | Column |
|-------|-----|--------|
| ar-sa | ;   | ,      |
| bg-bg | ;   | \      |
| cs-cz | ;   | \      |
| da-dk | ;   | \      |
| de-de | ;   | \      |
| el-gr | ;   | \      |
| en-gb | ;   | ,      |
| en-ie | ;   | ,      |
| en-us | ;   | ,      |
| es-es | ;   | \      |
| et-ee | ;   | \      |
| fi-fi | ;   | \      |
| fr-fr | ;   | \      |
| he-il | ;   | ,      |
| hr-hr | ;   | \      |
| hu-hu | ;   | \      |
| id-id | ;   | \      |
| it-it | ;   | \      |
| ja-jp | ;   | ,      |
| ko-kr | ;   | ,      |
| lt-lt | ;   | \      |
| lv-lv | ;   | \      |
| nb-no | ;   | \      |
| nl-nl | ;   | \      |
| pl-pl | ;   | \      |
| pt-br | ;   | \      |
| pt-pt | ;   | \      |
| ro-ro | ;   | \      |
| ru-ru | ;   | \      |
| sk-sk | ;   | \      |
| sl-si | ;   | \      |
| sv-se | ;   | \      |
| th-th | ;   | ,      |
| tr-tr | ;   | \      |
| uk-ua | ;   | \      |
| vi-vn | ;   | \      |
| zh-cn | ;   | ,      |
| zh-hk | ;   | ,      |
| zh-tw | ;   | ,      |

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

Таким образом, даже без надлежащей MS-документации и места в интерфейсе Excel (как в случае с тысячами и десятичными разделителями), по этому вопросу очевидно, что знание десятичного разделителя в вашей стране автоматически означает, что вы используете либо \, либо , как разделитель столбцов.

| Dec_Seperator | Row | Column |
|---------------|-----|--------|
| .             | ;   | ,      |
| ,             | ;   | \      |

Я бы с удовольствием получил больше информации о вышеупомянутом и/или наличие любой правильной документации MS Office, чтобы добавить к этому.