Excel: 复制最后一个之前的规则 /
Excel: copy rule before last /
我尝试在最后一个之前复制文本 /
样本:
- 14501/30305
- 14501/30305
- 14507/39756
- 15936/15943/15954
- 14507/15940/30405
- 15936/15943/15980
结果:
- 14501
- 14501
- 14507
- 15936/15943
- 14507/15940
- 15936/15943
我尝试了一些类似的方法,但在我的 excel 中没有任何效果。 Return 错误无效公式。
=IF(ISERROR(FIND(" ",A2,FIND(" ",A2,1)+1)),A2,LEFT(A2,FIND(" ",A2,FIND(" ",A2,1)+1)))
每次我遇到问题此公式无效:
您可以使用多种方式,例如:
MATCH()
正斜杠的最后一次出现:
=LEFT(A1,MATCH(2,1/(MID(A1,SEQUENCE(LEN(A1)),1)="/"))-1)
或者如果没有 Microsoft365:
=LEFT(A1,MATCH(2,1/(MID(A1,ROW(A1:INDEX(A:A,LEN(A1))),1)="/"))-1)
SUBSTITUTE()
正斜杠的最后一次出现:
=LEFT(A1,FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))-1)
TEXTJOIN()
除最后一部分外的任何其他内容:
=TEXTJOIN("/",,FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[position()<last()]"))
编辑:
如果现在在 GS 中完成,您可以在内部使用 REGEXEXTRACT()
和 INDEX()
:
=INDEX(IF(A2:A="",,REGEXEXTRACT(A2:A,"(^.*)\/")),,)
这会将您的所有答案都写在同一列中。
不是一个明确的答案,但你可以这样做(我用单元格 A1 作为我的例子):
= LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")
- 这将计算您在 A1 单元格中有多少 /
- 那么你可以在 SUBSTITUTE 函数中使用这个计数:
= SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")))
为了用其他一些 unique 符号替换最后一次出现的 /
- #
在我的示例中
- 使用 FIND 定位这个新的交易品种,从第一个交易品种开始搜索:
=FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)
它将为您提供 #
的位置,即初始字符串中最后一个 /
的位置。
- 将此位置用于 LEFT 函数:
=LEFT(A1; FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)-1)
就像其他人已经演示的那样,只是在环中投入另一个版本的 SUBSTITUTE|RIGHT
。
=SUBSTITUTE(A2,"/"&TRIM(RIGHT(SUBSTITUTE(A2,"/",REPT(" ",99)),99)),"")
我尝试在最后一个之前复制文本 /
样本:
- 14501/30305
- 14501/30305
- 14507/39756
- 15936/15943/15954
- 14507/15940/30405
- 15936/15943/15980
结果:
- 14501
- 14501
- 14507
- 15936/15943
- 14507/15940
- 15936/15943
我尝试了一些类似的方法,但在我的 excel 中没有任何效果。 Return 错误无效公式。
=IF(ISERROR(FIND(" ",A2,FIND(" ",A2,1)+1)),A2,LEFT(A2,FIND(" ",A2,FIND(" ",A2,1)+1)))
每次我遇到问题此公式无效:
您可以使用多种方式,例如:
MATCH()
正斜杠的最后一次出现:
=LEFT(A1,MATCH(2,1/(MID(A1,SEQUENCE(LEN(A1)),1)="/"))-1)
或者如果没有 Microsoft365:
=LEFT(A1,MATCH(2,1/(MID(A1,ROW(A1:INDEX(A:A,LEN(A1))),1)="/"))-1)
SUBSTITUTE()
正斜杠的最后一次出现:
=LEFT(A1,FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))-1)
TEXTJOIN()
除最后一部分外的任何其他内容:
=TEXTJOIN("/",,FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[position()<last()]"))
编辑:
如果现在在 GS 中完成,您可以在内部使用 REGEXEXTRACT()
和 INDEX()
:
=INDEX(IF(A2:A="",,REGEXEXTRACT(A2:A,"(^.*)\/")),,)
这会将您的所有答案都写在同一列中。
不是一个明确的答案,但你可以这样做(我用单元格 A1 作为我的例子):
= LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")
- 这将计算您在 A1 单元格中有多少/
- 那么你可以在 SUBSTITUTE 函数中使用这个计数:
= SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")))
为了用其他一些 unique 符号替换最后一次出现的/
-#
在我的示例中 - 使用 FIND 定位这个新的交易品种,从第一个交易品种开始搜索:
=FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)
它将为您提供#
的位置,即初始字符串中最后一个/
的位置。 - 将此位置用于 LEFT 函数:
=LEFT(A1; FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)-1)
就像其他人已经演示的那样,只是在环中投入另一个版本的 SUBSTITUTE|RIGHT
。
=SUBSTITUTE(A2,"/"&TRIM(RIGHT(SUBSTITUTE(A2,"/",REPT(" ",99)),99)),"")