【问题标题】:How to use index match formula that automatically expands in Google Sheets如何使用在 Google 表格中自动扩展的索引匹配公式
【发布时间】:2023-03-22 01:34:02
【问题描述】:

在 Google 表格中,我使用过滤功能将名称拉入 A 列,将时间戳拉入 B 列。每次第二次出现的名称出现在列表的 A 列和 B 列中时,我希望列 C 旁边引用新时间戳的先前事件。然后,在 D 列中,我将计算名称时间戳和下一次出现该相同名称的差异。

目前我正在使用以下公式:

=IFERROR(INDEX(B3:B,MATCH(A2,A3:A,0)))

如果我向下拖动此公式,它会执行我需要执行的操作,但由于前两列中添加了多少行,由于过滤器和公式,行将添加到工作表底部一直需要被拖下去。 D 列中的持续时间是使用以下公式计算的,该公式会自动排列结果并自动扩展过滤结果:

=IFERROR(ARRAYFORMULA(IF(C2:C="","",C2:C-B2:B)))

我希望我的索引匹配公式也这样做,但似乎我不能将索引公式与数组公式一起使用。

我试图通过结合使用 vlookup 和范围偏移来实现这一点。第一行给了我想要的结果,但是所有后续行都没有引用偏移范围,可能是因为偏移量没有随着每个新数组结果而改变,这是尝试:

=IFERROR(ARRAYFORMULA(VLOOKUP(A2:A,OFFSET(A2:B,1,0),2,FALSE)))

有什么想法可以通过将公式放在一个单元格中来完成,还是必须使用脚本来完成?

我添加了当前方法HERE的示例电子表格

提前感谢您的帮助。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    公式

    代替

    INDEX, MATCH and OFFSET 
    

    试试下面的公式

    =ArrayFormula(IFERROR(VLOOKUP(
    TRANSPOSE(VALUE(REGEXEXTRACT(QUERY(TRANSPOSE(
    IF(FILTER(ROW(A2:A),LEN(A2:A))<TRANSPOSE(FILTER(ROW(A2:A),LEN(A2:A))),
    IF(FILTER(A2:A,LEN(A2:A))=TRANSPOSE(FILTER(A2:A,LEN(A2:A))),
    TRANSPOSE(FILTER(ROW(A2:A),LEN(A2:A))),
    ),)
    ),,2000000),"(\d+)"))),
    FILTER({ROW(A2:A),B2:B},LEN(A2:A)),2,0)))
    

    配方说明

    这部分创建一个方阵,显示匹配值的行号(如果它低于当前行):

    IF(FILTER(ROW(A2:A),LEN(A2:A))<TRANSPOSE(FILTER(ROW(A2:A),LEN(A2:A))),
    IF(FILTER(A2:A,LEN(A2:A))=TRANSPOSE(FILTER(A2:A,LEN(A2:A))),
    TRANSPOSE(FILTER(ROW(A2:A),LEN(A2:A))),
    ),)
    

    这部分取与当前行匹配的最小行(下一次出现的行值)

    TRANSPOSE(VALUE(REGEXEXTRACT(QUERY(TRANSPOSE(  ),,2000000),"(\d+)")))
    

    这部分返回相关值,如果有,否则为空:

    IFERROR(VLOOKUP(  ,FILTER({ROW(A2:A),B2:B},LEN(A2:A)),2,0)))
    

    【讨论】:

    • 这似乎是引用该名称的第一个实例以用于该名称的所有后续出现。我需要相反的,第一个条目只引用第二个,第二个引用第三个。
    • 我将处理这个逻辑,但这也没有给我下一次出现的值,但似乎让大部分单元格为空,然后每隔一段时间引用一个错误的名称。
    • @ToreyPrice:考虑创建一个包含示例数据的演示电子表格,以将其添加到您的问题中。
    • 我添加了一个示例表。顺便说一句,感谢您的快速回复。
    • 更新了我的答案。
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2021-10-31
    • 2018-09-21
    • 2013-12-20
    • 2022-07-11
    • 1970-01-01
    相关资源
    最近更新 更多