乍一看,mid和len(去掉大括号)以及文本拆分的混合使用可以实现这一点。但是,这并不能处理单个元素中出现分号或逗号的边缘情况。请参见下面的示例。
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)会在语音标记中找到分号和逗号,并且分割文本太多。我想我需要使用一些正则表达式来获得想要的结果。
反函数将应用于许多这样的范围,所以需要是最优的。答案也需要能够充分处理数字和空白值。
编辑:需要能够解决以下情况以及正常的文本:
1.没有语音标记的数字。
1.未用引号括起的空白。
1.集合的集合(这是不太可能发生授予),如{"{“a,",”B,";“一"、”B"、}"、{“三"、”四";“c "、”d“、"}"}
1.边缘情况{",",";“),您可以想象一个元素是公式“=FIND(“,",a1)”。
在下图中,您可以使用ARRAYTOTEXT(B3:C4,1)来获取B7中的值。我需要一个可以放置在B10中(溢出到B10:C11中)的函数,以给予原始值,即ARRAYTOTEXT的反函数。See Excel Example
3条答案
按热度按时间xsuvu9jc1#
这实际上一点也不简单。但不妨试试:
A3
中的公式:我不认为这会勾住你的边缘案件。
sr4lhrrt2#
我对自己的问题有了一个突破口。这似乎对所有情况都有效。有没有人能让这个更有效率?
您可以在
B4:D6
中的原始范围下方链接的图像中看到。你可以在
B8
ARRAYTOTEXT(B4:D6,1)
中看到。您可以在
B10:B12
TEXTTOARRAY(B8)
中看到(所需的功能)。在
B14:D16
中可以看到B4:D6=B10:D12
中的所有细胞。How it has worked out
ht4b089n3#
根据键入公式
={1,"Semicolon ; in me";"Comma , in me",4}
会产生所需结果的观察结果这可以作为UDF使用
Evaluate
来完成,并且对输入的数据类型敏感对于不完整的输入(例如
{"a",}
),你必须对输入进行预处理以添加缺失的元素(例如一个空字符串""
),但是如果你这样做了,你也可以只处理整个字符串。请注意,此答案基于您的输入字符串是否为有效公式。
{"a",}
不是有效公式。