【问题标题】:LOOKUP a key range in another key range to get ALL corresponding values, instead of just the first在另一个键范围中查找一个键范围以获取所有对应的值,而不仅仅是第一个
【发布时间】:2021-12-05 04:36:23
【问题描述】:

我想获取 Range1 中与 Range2 中的键相对应的所有数据。 (如下图)

但我的公式无法正确显示数据:

=ARRAYFORMULA(TRANSPOSE(QUERY(Range1,"select Col2 where Col1 contains '"&A1:A&"'",0)))

谁能帮我告诉我公式中的问题?

范围1

Type Desc
beverage coke
food cookies
food bread
beverage beer
beverage coffee
food chips

范围2(理想结果)

ColA(pre-set) ColB(arrayformula in B1) ColC ColD
food cookies bread chips
beverage coke beer coffee
food cookies bread chips
food cookies bread chips
beverage coke beer coffee
beverage coke beer coffee

我的存在结果

ColA(pre-set) ColB(arrayformula in B1) ColC ColD
food cookies bread chips
beverage (cannot generate the output)
food
food
beverage
beverage

【问题讨论】:

    标签: google-sheets google-sheets-formula one-to-many lookup array-formulas


    【解决方案1】:

    假设您的源数据在 A 列和 B 列中,并且预期结果的最大列宽为 4,请尝试:

    =arrayformula(if(len(A2:A), vlookup(A2:A, regexreplace({unique(A2:A),  split(trim(transpose(query(if((transpose(unique(A2:A))=A2:A)*len(A2:A),B2:B&",",),,50000))), ",")}, ",$", ), {1, 2, 3, 4}, 0),))
    

    看看有没有帮助?

    【讨论】:

      【解决方案2】:
      =ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(QUERY(IF(TRANSPOSE(A12:A17)=A2:A7,B2:B7&"?",),,2^9)),"?")))
      

      大小:95 个字符

      说明:

      • 创建一个比较 Range 1(A2:A7) 与转置 Range2(A2:A17) 的二维数组

        =ARRAYFORMULA(TRANSPOSE(A12:A17)=A2:A7)
        
      Range 1 v Range2 -> food beverage food food beverage beverage
      beverage FALSE TRUE FALSE FALSE TRUE TRUE
      food TRUE FALSE TRUE TRUE FALSE FALSE
      food TRUE FALSE TRUE TRUE FALSE FALSE
      beverage FALSE TRUE FALSE FALSE TRUE TRUE
      beverage FALSE TRUE FALSE FALSE TRUE TRUE
      food TRUE FALSE TRUE TRUE FALSE FALSE
      • 将 TRUE 更改为 Range1 描述 (B2:B7) 和分隔符 ?

        =ARRAYFORMULA(IF(TRANSPOSE(A12:A17)=A2:A7,B2:B7&"?",))
        
      Range 1 v Range2 -> food beverage food food beverage beverage
      beverage coke? coke? coke?
      food cookies? cookies? cookies?
      food bread? bread? bread?
      beverage beer? beer? beer?
      beverage coffee? coffee? coffee?
      food chips? chips? chips?
      • 如果您在每一列中垂直查看,您将获得每个所需标题的所有所需值。此时,我们使用经典查询进行垂直连接:

        =ARRAYFORMULA(QUERY(IF(TRANSPOSE(A12:A17)=A2:A7,B2:B7&"?",),,2^9))
        
      Range 1 v Range2 -> food beverage food food beverage beverage
      beverage cookies? bread? chips? coke? beer? coffee? cookies? bread? chips? cookies? bread? chips? coke? beer? coffee? coke? beer? coffee?
      food
      food
      beverage
      beverage
      food
      • 现在,我们只需按分隔符进行 TRANSPOSE 和 SPLIT:

        =ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(QUERY(IF(TRANSPOSE(A12:A17)=A2:A7,B2:B7&"?",),,2^9)),"?")))
        
      Range 2 v - - - - - -
      food cookies bread chips
      beverage coke beer coffee
      food cookies bread chips
      food cookies bread chips
      beverage coke beer coffee
      beverage coke beer coffee

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        相关资源
        最近更新 更多