Excel:在最后一个之前复制规则/

问题描述

我尝试在上次之前复制文本 /

示例:

  • 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 中没有工作。返回错误无效公式。

=IF(ISERROR(FIND(" ",A2,FIND(" ",1)+1)),LEFT(A2,1)+1))) 

每次我遇到问题这个公式是无效的:

enter image description here

解决方法

不是一个明确的答案,但您可以这样做(我在示例中使用了单元格 A1):

  1. = LEN(A1)-LEN(SUBSTITUTE(A1;"/";"") - 这将计算您在 A1 单元格中有多少 /
  2. 然后你可以在SUBSTITUTE函数中使用这个计数:
    = SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")))
    为了用其他一些唯一符号替换最后一个 / 出现 - # 在我的示例中
  3. 使用 FIND 从第一个符号开始搜索来定位这个新符号:
    =FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)
    它将为您提供 # 的位置,即初始字符串中最后一个 / 的位置。
  4. 将此位置用于 LEFT 功能:
    =LEFT(A1; FIND("#"; SUBSTITUTE(A1;"/";"#";LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))); 1)-1)
,

您可以使用多种方式,例如:


MATCH() 最后一次出现的正斜杠:

=LEFT(A1,MATCH(2,1/(MID(A1,SEQUENCE(LEN(A1)),1)="/"))-1)

或者如果没有 Microsoft365:

=LEFT(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()]"))

enter image description here


编辑:

如果现在在 GS 中完成,您可以在内部使用 REGEXEXTRACT()INDEX()

=INDEX(IF(A2:A="",REGEXEXTRACT(A2:A,"(^.*)\/")),)

这会将您的所有答案放在同一列中。

,

正如其他人已经演示的那样,只是在环中加入另一个版本的 SUBSTITUTE|RIGHT

=SUBSTITUTE(A2,"/"&TRIM(RIGHT(SUBSTITUTE(A2,REPT(" ",99)),"")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...