使用动态数组解析字符串

使用动态数组解析字符串

使用 Excel 365 中最近引入的动态溢出数组,我编写了一个非常简单的公式来将字符串中的字符解析为单个单元格。例如,如果我有:

qwertyuiop$

A1,我选择一个单元格并输入:

=MID($A$1,ROW(1:11),1)

公式如下:

在此处输入图片描述

这样就避免了输入=MID($A$1,ROWS($1:1),1)并手动向下复制。

我遇到的问题是11。 我用11因为我知道A1是 11。我想改变MID()公式,使其适应A1而不是我重新输入公式。

我试过:

=MID($A$1,ROW(1:LEN(A1)),1)

但这失败了。我目前的解决方法是:

=FILTER(MID($A$1,ROW(1:9999),1),MID($A$1,ROW(1:9999),1)<>"")

这看起来真是一种愚蠢的做法11一个变量。

我提供了一个 VBA 解决方案,但是被拒绝了。

答案1

使用 SEQUENCE

=MID(A1,SEQUENCE(LEN(A1)),1)

在此处输入图片描述

SEQUENCE 的优点在于,如果您希望数组水平溢出,那么您只需使用:

=MID(A1,SEQUENCE(,LEN(A1)),1)

在此处输入图片描述


如果您设置了 Row,则使用:

=MID(A1,ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1))),1)

答案2

一种方法是使用 来INDIRECT评估LEN()并将其与起始范围连接起来。这非常接近您的原始公式,是一种替代方法。

=MID($A$1,ROW(INDIRECT("1:" & LEN(A1))),1)

在此处输入图片描述

相关内容