【问题标题】:Excel formula to find matching part of indexExcel公式查找索引的匹配部分
【发布时间】:2020-08-07 12:49:29
【问题描述】:

我正在使用像树形图这样的结构。 我有项目,每个项目都有索引,告诉它出现在树中的位置。 然后我得到这样的项目组:
第 1 项:A-1-1-2-1-1-1
项目 2:A-1-1-1-1-2
第 3 项:A-1-1-2-1-1-2
第 4 项:A-1-1-2-1

我需要找到每个组的索引的公共部分。在此示例中,公共部分将是“A-1-1-”。
是否可以使用 excel 公式在另一个字符串中找到匹配的部分字符串?我的同事说我需要使用递归制作 vba 宏来仅查找匹配字符串的一部分,但也许我们没有找到更简单的解决方案。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    用途:

    =LEFT(A1,MAX(IF(COUNTIF(A1:A4,LEFT(A1,ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1))))&"*")=COUNTA(A1:A4),ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1))))))
    

    根据一个人的版本,这可能需要在退出编辑模式时使用 Ctrl-Shift-Enter 而不是 Enter 来确认。

    【讨论】:

    • 效果很好!公平地说,我不是 100% 确定它是如何工作的。我对索引有点迷失(没有经常使用它),但我会教育自己理解它:) 非常感谢你提供了惊人的解决方案。
    • ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1))) 只是返回一个从 1 到字符串长度的序列号数组。现在我看,应该是ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1)))我来编辑。
    • 对于 ExcelO365,您可以使用:=LEFT(A1,MAX(IF(COUNTIF(A1:A4,LEFT(A1,SEQUENCE(LEN(A1)))&"*")=COUNTA(A1:A4),SEQUENCE(LEN(A1)))))。也是唯一不需要 CSE 确认的版本 =)
    猜你喜欢
    • 2017-03-22
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2023-03-12
    • 2017-10-04
    相关资源
    最近更新 更多