dsa*_*uce 2 excel excel-formula
我有一列字符串,示例如下。每个字符串都是分隔的文本组合。每行都有不同数量的文本。我想基于该列创建一列,每行一个文本。
从:
a;b
x;y;z
p;q;r;s;t
Run Code Online (Sandbox Code Playgroud)
到:
a
b
x
y
z
p
q
r
s
t
Run Code Online (Sandbox Code Playgroud)
如何使用单个公式实现这一目标?
我尝试过TRANSPOSE(TEXTSPLIT(TEXTJOIN(";",TRUE, data),";"))
但是失败了,因为 TEXTJOIN 部分导致超过 32767 个字符。
我还尝试构建 mxn 的二维数组,其中 m=no。原始数据中的行数,且 n=no。的文本。但是,MAKEARRAY 仍然会生成单个列。如果它有效,我会使用 TOCOL 或类似的东西来转换为单列。
=MAKEARRAY(ROWS(data),COLUMNS(MAX(num_of_texts_in_each_row)), LAMBDA(r,c, LET(
drow, INDEX(data,r,1),
splits, TEXTSPLIT(drow,";"),
INDEX(splits,,c)
)))
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用 REDUCE:
=DROP(REDUCE(0,A1:A3,LAMBDA(a,b,VSTACK(a,TEXTSPLIT(b,,";")))),1)
REDUCE 的行为类似于 BYROW,其中 VSTACK 在完整溢出值之后将每行的溢出结果堆叠在一起。由于它从 0 开始,我们使用 DROP 第一个值来获得所需的结果。
我们也可以避免 DROP,但这会使公式更复杂、更长,但仅供参考:
=REDUCE(TEXTSPLIT(A1,,";"),A2:A3,LAMBDA(a,b,VSTACK(a,TEXTSPLIT(b,,";"))))
| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |