Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取excel中特定字符之间的字符串并用逗号分隔_Excel - Fatal编程技术网

提取excel中特定字符之间的字符串并用逗号分隔

提取excel中特定字符之间的字符串并用逗号分隔,excel,Excel,是否有一种方法可以在excel中的特定字符之间提取多个字符串,并用逗号分隔它们 例如: 我感谢每一个帮助 你的问题中没有“提取”,只是删除。下面的公式将不需要的字符替换为“”,从而将其删除。请试一试 =SUBSTITUTE(SUBSTITUTE(A2,"[",""),"]","") 你的问题中没有“提取”,只是删除。下面的公式将不需要的字符替换为“”,从而将其删除。请试一试 =SUBSTITUTE(SUBSTIT

是否有一种方法可以在excel中的特定字符之间提取多个字符串,并用逗号分隔它们

例如:

我感谢每一个帮助

你的问题中没有“提取”,只是删除。下面的公式将不需要的字符替换为“”,从而将其删除。请试一试

=SUBSTITUTE(SUBSTITUTE(A2,"[",""),"]","")
你的问题中没有“提取”,只是删除。下面的公式将不需要的字符替换为“”,从而将其删除。请试一试

=SUBSTITUTE(SUBSTITUTE(A2,"[",""),"]","")
下面需要一个支持动态数组和
LET
函数的Excel O365版本

如果我理解正确的话,你正在寻找类似的东西

此公式将使用动态数组函数列出字符串中所有
[
的所有位置

=LET(x,$B$2,
    y, SEQUENCE(LEN(x)),
    raw, IF(MID(x,y,1)="[",y,""),
    filtered, FILTER(raw,raw<>"",""),
    filtered)
=LET(x,$B$2,
y、 序列(LEN(x)),
原始,如果(中间(x,y,1)=“[”,y,”,
已筛选,筛选(原始,原始“”),
过滤)
LET
允许您使用参数对在公式中设置名称。第一个是名称;第二个是名称的值。最后一个参数是返回的值。在这种情况下,
x
被设置为单元格
B2
y
被设置为使用t列出从1到
x
长度的数字的数组动态数组函数
SEQUENCE
raw
是一个列表,如果该位置是
<代码>过滤> <代码>使用“代码>过滤器/<代码>函数删除所有空白行。<代码>过滤< /COD>是<代码>的最后一个参数,让函数返回,如果这个公式被输入到Cys<代码> A4<代码>,则<代码> A4< /代码>将显示<代码> 1 ,<代码> A5< /代码>我将显示
14
,而
A6
将显示
28

如果随后在
B4
中输入类似的公式,将
[
替换为
]
,则结果是
{7,21,35}
单元格
B4
B5
B6

最后,在单元格
B2
中,您可以输入
=TEXTJOIN(“,”,TRUE,MID(A2,A4#+1,B4#-A4#-1))
。这将返回您要查找的结果

如果您不熟悉动态数组,
A4#
表示从单元格
A4
开始的整个动态数组。在这种情况下,它与
A4:A6
相同

以下要求使用支持动态数组和
LET
功能的Excel O365版本

如果我理解正确的话,你正在寻找类似的东西

此公式将使用动态数组函数列出字符串中所有
[
的所有位置

=LET(x,$B$2,
    y, SEQUENCE(LEN(x)),
    raw, IF(MID(x,y,1)="[",y,""),
    filtered, FILTER(raw,raw<>"",""),
    filtered)
=LET(x,$B$2,
y、 序列(LEN(x)),
原始,如果(中间(x,y,1)=“[”,y,”,
已筛选,筛选(原始,原始“”),
过滤)
LET
允许您使用参数对在公式中设置名称。第一个是名称;第二个是名称的值。最后一个参数是返回的值。在这种情况下,
x
被设置为单元格
B2
y
被设置为使用t列出从1到
x
长度的数字的数组动态数组函数
SEQUENCE
raw
是一个列表,如果该位置是
<代码>过滤> <代码>使用“代码>过滤器/<代码>函数删除所有空白行。<代码>过滤< /COD>是<代码>的最后一个参数,让函数返回,如果这个公式被输入到Cys<代码> A4<代码>,则<代码> A4< /代码>将显示<代码> 1 ,<代码> A5< /代码>我将显示
14
,而
A6
将显示
28

如果随后在
B4
中输入类似的公式,将
[
替换为
]
,则结果是
{7,21,35}
单元格
B4
B5
B6

最后,在单元格
B2
中,您可以输入
=TEXTJOIN(“,”,TRUE,MID(A2,A4#+1,B4#-A4#-1))
。这将返回您要查找的结果

如果您不熟悉动态数组,
A4#
表示从单元格
A4
开始的整个动态数组。在这种情况下,它与
A4:A6
相同


您不能仅使用Excel 2007中的公式进行此操作。您需要VBA UDF。使用Excel O365具有动态公式访问权限,可以通过以下方式完成此操作:

=TEXTJOIN(", ",TRUE,TRIM(LEFT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"]",REPT(" ",100)),"[","</s><s> ")&"</s></t>","//s[starts-with(., ' ')]"),100)))
=TEXTJOIN(“,”,TRUE,TRIM(左(FILTERXML(“,”&SUBSTITUTE(SUBSTITUTE(A1,“,”),REPT(“,100)),“[”,”)&“//s[以(,“,”)”)开头,100)))

在Excel 2007中,您不能仅使用公式。您需要VBA UDF。使用Excel O365动态公式访问,可以像以下方式完成此操作:

=TEXTJOIN(", ",TRUE,TRIM(LEFT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"]",REPT(" ",100)),"[","</s><s> ")&"</s></t>","//s[starts-with(., ' ')]"),100)))
=TEXTJOIN(“,”,TRUE,TRIM(左(FILTERXML(“,”&SUBSTITUTE(SUBSTITUTE(A1,“,”),REPT(“,100)),“[”,”)&“//s[以(,“,”)”)开头,100)))

考虑到您使用的excel版本太旧,缺少动态数组函数,而且还有太多其他有用的函数,您可能需要在这里做一个很长的变通

首先使用
substitute
len
您必须找出每行中此类方括号的数量。然后您必须计算出此类数字的
max
公式

像这样做

假设您在
A2
中的文本值最多出现4次,请在
B2

=SUBSTITUTE(TRIM(REPLACE(LEFT(A2,FIND("]",A2&"]")-1),1,FIND("[",A2&"["),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",2),"]","#",2))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",2),"[","#",2)),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",3),"]","#",3))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",3),"[","#",3)),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",4),"]","#",4))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",4),"[","#",4)),"")), " ", ", ")
假设这是A2中的文本

I have a text [123] and some more [4523] and also [552222] how to extract [22]?
这将在
B2

=SUBSTITUTE(TRIM(REPLACE(LEFT(A2,FIND("]",A2&"]")-1),1,FIND("[",A2&"["),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",2),"]","#",2))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",2),"[","#",2)),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",3),"]","#",3))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",3),"[","#",3)),"")&" "&REPLACE(LEFT(A2,FIND("#",SUBSTITUTE(A2&REPT("]",4),"]","#",4))-1),1,FIND("#",SUBSTITUTE(A2&REPT("[",4),"[","#",4)),"")), " ", ", ")

考虑到您使用的excel版本太旧,缺少动态数组函数,而且还有太多其他可用的