乍看之下,mid和len(去掉大括号)以及textsplit的组合可以实现这一点。然而,这并不能处理单个元素中出现分号或逗号的边缘情况。参见下面的示例。
Let A1=1
Let B1="Semicolon ; in me"
Let A2="Comma , in me"
let B2=4
ARRAYTOTEXT(A1:B2,1)={1,"Semicolon ; in me";"Comma , in me",4} = (C)
ARAYTOTEXT_INV(C) = Spilled range identical to A1:B2
现在使用(C)的textsplit会发现语音标记中的分号和逗号,并且会过多地拆分文本。我想我需要使用一些regex来获得想要的结果。
反函数将应用于许多这样的范围,所以需要是最优的。答案也需要能够充分处理数字和空白值。
编辑:需要能够解决以下情况以及正常的文本:
1.没有语音标记的数字。
1.未用引号括起的空白。
1.集合的集合(这是不太可能发生的授予),如{"{"“a,"","“B,"";“a”、“B "、"}"、"{c”、“d”、"}";“c "、“d"、"}"}
1.边缘情况{",",";“),您可以想象一个元素是公式“=FIND(“,",a1)”。
在下图中,您可以使用ARRAYTOTEXT(B3:C4,1)来获取B7中的值。我需要一个可以放置在B10中(溢出到B10:C11中)的函数,以给予原始值,即ARRAYTOTEXT的反函数。See Excel Example
2条答案
按热度按时间gc0ot86w1#
这实际上一点也不简单。但不妨试试:
A3
中的公式:我不认为这会勾住你的边缘案件。
kuuvgm7e2#
我对自己的问题有了一个突破口。这似乎对所有情况都有效。有没有人能让这个更有效率?
您可以在
B4:D6
中的原始范围下方链接的图像中看到。你可以在
B8
ARRAYTOTEXT(B4:D6,1)
中看到。您可以在
B10:B12
TEXTTOARRAY(B8)
中看到(所需的功能)。在
B14:D16
中可以看到B4:D6=B10:D12
中的所有细胞。How it has worked out