【问题标题】:Excel: copy rule before last /Excel:在最后一个/之前复制规则
【发布时间】:2021-04-25 19:06:45
【问题描述】:

我尝试在最后 / 之前复制文本

示例:

  • 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(" ",A2,1)+1)),A2,LEFT(A2,FIND(" ",A2,FIND(" ",A2,1)+1))) 

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

【问题讨论】:

    标签: excel string excel-formula delimiter csv


    【解决方案1】:

    不是一个明确的答案,但你可以这样(我以单元格 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)

    【讨论】:

    • 为什么没有明确的答案?我认为你解释得很好。赞一个!
    • 嗯……我开始写的时候还不清楚 :)
    【解决方案2】:

    就像其他人已经展示过的那样,只是将另一个版本的SUBSTITUTE|RIGHT 扔进擂台。

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

    【讨论】:

      【解决方案3】:

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


      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,"(^.*)\/")),,)
      

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

      【讨论】:

      • 我看不懂那种语言,但我猜你需要将该公式翻译成你自己的语言环境或者你没有 Microsoft365 @Sylvester
      • JvdV,我可以请你帮忙吗?我可以给您发送一个 excel 文件,您可以尝试提取最后 / 之前的所有内容吗?因为大约有 50,000 条记录。谢谢!
      • @Sylvester,不,我不是在为你做这项工作。对不起。
      • Sylvester,您使用的是波兰语版本的 Excel,可能需要将所有函数名称翻译成波兰语。从 O365 开始也可以使用一些功能(比如我认为的 SEQUENCE)
      • @StarterKit 我尝试翻译成波兰语 - 但仍然与屏幕中的问题相同。感谢您的信息。我会尝试购买 365 许可证,但这需要一段时间。我正在分享 doc google 的链接。如果有人可以在这里粘贴我的结果,我将不胜感激! docs.google.com/spreadsheets/d/…
      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多