Excel 水平与垂直数组分隔符-国际
继前面关于水平数组和垂直数组的讨论之后,我对其各自的分隔符有一个问题 问题定义: 下面是一个比较两个阵列的错误方法示例:Excel 水平与垂直数组分隔符-国际,excel,vba,excel-formula,Excel,Vba,Excel Formula,继前面关于水平数组和垂直数组的讨论之后,我对其各自的分隔符有一个问题 问题定义: 下面是一个比较两个阵列的错误方法示例: {=SUMPRODUCT(--({"Apple","Pear"}={"Apple","Lemon","Pear"}))} 对于英语申请,正确的方法是使用国家代码: {=SUMPRODUCT(--({"Apple","Pear"}={"Apple";"Lemon";"Pear"}))} 在英文版Excel中(很可能不仅仅是英文版),这些分隔符分别是逗号,表示水平数组和分号用
{=SUMPRODUCT(--({"Apple","Pear"}={"Apple","Lemon","Pear"}))}
对于英语申请,正确的方法是使用国家代码:
{=SUMPRODUCT(--({"Apple","Pear"}={"Apple";"Lemon";"Pear"}))}
在英文版Excel中(很可能不仅仅是英文版),这些分隔符分别是逗号,
表示水平数组和分号代码>用于垂直的。在网上可以找到很多关于这个的信息
然而,在一台应用程序上有荷兰国家代码的机器上工作,这并不是一个完全不同的故事。我的定界符将分别是不同的,这确实令人沮丧代码>和a\
。由于能够相当简单地检索分号,因此在国际版本中查找有关这些分隔符的任何文档都很困难
解决方法:
如果事先不知道这些分隔符,那么使用各种国际版本的应用程序的任何人都很难使用这些类型的公式。一个相当简单的解决方法是使用TRANSPOSE()
:
通过内置评估,我们可以检索反斜杠作为列分隔符。另一种方法是使用and,它是xlcolumnseloper
和xlrowseloper
问题
我们可以通过Excel(文件>选项>高级)或VBA(Application.DecimalSeparator=“-”
)查找甚至覆盖xlDecimalSeparator
和xlThousandsSeparator
),但我们可以在哪里找到:
- 这是一个实际查看您自己的应用程序中使用了哪些
xlrowselector
和xlcolumnselector
的位置,而不是我描述的解决方法。寻找一个类似于千和十进制分隔符和/或官方MS文档的接口
此外(不是专门寻找这个),是否有:
- 一个可以覆盖它们的位置,就像小数点和千位分隔符一样
- 如果不是通过Excel界面,我们可以通过VBA以某种方式强制执行吗
我很好奇是否有官方文件,以及/或者是否可以完成上述工作。我并不认为这是正确的答案,但在其他用户的评论帮助下,也许下面可以澄清一些事情:
在没有任何官方文档的情况下,似乎随机的行和列分隔符@Gserg展示了一个技巧,可以在“创建一维和二维常量”下使用这些唯一id检索任何LCID的信息。虽然这是MS office支持信息,但您看到的分隔符为FALSE。它们可能会出现为
a,
a
a:
a\
甚至a
。您可以通过将LCID从URL更改为感兴趣的LCID来获得此结果,例如:fr
尽管有大约600个不同的LCID,但它们都被重定向到默认LCID。在@FlorentB的帮助下。我们发现,不仅MS office支持文档是错误的,而且这些分隔符似乎并不是随机的。在使用小数点时,他们使用,
作为列分隔符(水平数组)和代码>作为行分隔符(垂直数组)。但是,使用十进制逗号的国家/地区使用\
作为列分隔符和代码>分别用于行
更改系统国家/地区设置,检查Excel中的所有默认LCID,我们最终得到以下矩阵,显示每个默认LCID的所有行和列分隔符:
| 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文档的信息,以便添加到此文档。一个与语言无关的VBA
技巧是使用VBA函数构造数组。我不认为这只能用Excel来完成(但您可以通过更改系统设置来更改默认分隔符。我知道这不是您要问的问题。)在不同版本的Excel中使用特定于语言的分隔符确实令人恼火。:)我对整个前提感到困惑。如果搜索数组带有逗号/分号,并且您正在用它构建一个公式以将其放入单元格中,那么您为什么要关心局部分隔符呢<代码>公式
在美国英语中始终有效。如果你没有建立一个公式来放入一个单元格,你如何利用预先构建的字符串{“Apple”,“Pear”}
?你可以改变它们,但你绝对可以。你正在解决的实际问题是什么?不,现在还不清楚。如果您是以编程方式输入公式,那么就像我前面所说的,您不需要知道当前的分隔符.Formula
始终使用en us分隔符。如果您是手动输入公式,那么您应该知道分隔符,因为它们对于您的语言来说应该是自然的,如果您不知道,那么您可以参考Application.International
——同样,使用它会有什么问题还不清楚Application.International(xlcolumnseptor)
告诉您答案,您知道它,但由于某种原因它并不好
| Dec_Seperator | Row | Column |
|---------------|-----|--------|
| . | ; | , |
| , | ; | \ |