使用 Excel 公式将数组转换为字符串,可以吗?
我知道如何使用 VBA 来实现这一点,但我必须共享我的工作簿,而且我必须假设其他人无法启用我编写的 VBA。
例如我有以下数组:{ "a","b"}
我希望我的公式输出ab
原本我考虑使用,CONCATENATE({"a","b"})
但结果却是a
答案1
这可以通过公式来实现,但是,对超过 1000 个字符串的列表进行分类似乎可能会超出 Excel 对字符串的限制,或者给出难以处理的结果。请注意。
- 创建一个名为“Zone”或任何其他您想要的名称的隐藏工作表。
- 如果您获取的命名范围称为“x”,则在 A 列中输入“Count”,然后在其下方的单元格中输入 =counta(x) '这将为我们提供数组的大小。
- 将单元格命名为实际数字“Cnt”
- 然后在 c 列中从 c3 开始输入“数据”,这是一个标题
- 在 c4 输入 =index(x,1)
在 c5 处并延伸到可能范围的大小 =+IF(ROW()>Cnt+3,"",C4&INDEX(x,ROW()-3))
在 d2 输入“Answer”并在 d3 输入 =+OFFSET($C$3,Cnt,0)
- 将 d3 单元格命名为 Ans,您可以在需要的地方使用它。可能的修改是添加“,”例如 c4&","&index(x,row()-3)),使用 iferror 而不是 if(row()>cnt+3 来屏蔽错误,如果已将公式复制到 2000 个单元格,则测试 if(cnt>2000,"Error namespace too large - Call John Doe", ""),如果低估了命名范围的大小,则会出现错误消息。
答案2
2020 年答案(实际上是 2016 年之后的答案)
=TEXTJOIN("",FALSE,{"a","b"})
将返回“ab”
这是一个老问题,但在我的搜索结果中排名很高。自 2016 年以来,Excel 有一个TEXTJOIN()
函数,它接受分隔符、忽略空白标志以及数组、范围、单元格列表、字符串列表等。
例如,以下将返回范围内唯一值的有序列表。
=TEXTJOIN(", ",FALSE,SORT(UNIQUE(A1:A100)))