【问题标题】:Increment based on different table基于不同表的增量
【发布时间】:2022-01-03 19:16:27
【问题描述】:

我有一个项目列表,我需要为其获取各种信息并在不同的表中进行一系列计算。

所以我有两个表,一个包含项目列表,另一个包含各种计算的“信息表”,目前仅用于第一个项目。

但我需要为列表中的每个项目提供信息表,因此我想做的不是手动更新坐标,而是复制并粘贴第一个项目的信息表并在顶部字段根据项目列表的增量更新。

有没有简单的方法在谷歌表格中做到这一点?

【问题讨论】:

    标签: if-statement google-sheets match vlookup nested-if


    【解决方案1】:

    如果您需要 B4 中的公式,请使用:

    =INDEX(IFNA(VLOOKUP(B4:B; D:E; 2; )))
    

    如果你想在 E6 中使用公式:

    =INDEX(IFNA(VLOOKUP(D6; A:B; 2; ))) 
    

    更新:

    根据需要在 D 列中多次使用

    =ARRAYFORMULA(IF(ROW()=6, A$4:B$4, INDIRECT(
     ADDRESS(MAX(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+1, 1, 4)&":"&
     ADDRESS(MAX(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+1, 2, 4))))
    

    【讨论】:

    • 感谢@player0!我不确定我是否理解代码,Vlookup 会寻找特定的键/项目?我需要的公式在 D6 中,我使用 =INDEX(IFNA(VLOOKUP(A4, A:B, 1))) 从列表中正确获取第一个元素但是如果我将信息表复制/粘贴到第一个下方, (在 d19 中)使用的项目是 A17 中的而不是 A2。
    • @user289829 答案已更新。见:docs.google.com/spreadsheets/d/…
    • @user289829 如果您粘贴公式的行是第 6 行,那么它将输出范围 A4:B4。如果您将此公式粘贴到任何其他第 7、8、10...30... 行等,它将采用上述范围(例如,如果您在第 12 行使用公式,它将采用 D6:D11 范围。如果您在第 20 行使用它,它将与范围 D6:D19 等一起使用,并且该范围内的所有输入都将针对 A 列进行搜索,并且每个匹配项都将输出行位置。接下来,我们使用 MAX 来获取最新找到的行,因为如果找到多个匹配项,则 MATCH 将输出所有找到的行。
    • @user289829 所以在我们得到最后一行找到的匹配项后,我们向它添加 +1 并使用ADDRESS()&":"&ADDRESS() 构造一个人工范围,并使用 INDIRECT 将此字符串范围转换为有效范围。例如,如果您需要输出 4 列而不是 2 列,则将第二个地址 ADDRESS(MAX(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+1, 2, 4) 更改为 ADDRESS(MAX(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+1, 4, 4)
    • @user289829 是的,当 A 列包含重复项时会发生这种情况。要对付它,您可以使用:=ARRAYFORMULA(IF(ROW()=6, A$4:B$4, INDIRECT( ADDRESS(COUNTA(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+4, 1, 4)&":"& ADDRESS(COUNTA(IFNA(MATCH(INDIRECT("D6:D"&ROW()-1), A:A, 0)))+4, 2, 4))))
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多