在Excel中将值筛选并联接到一个单元格中

7nbnzgx9  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(128)

我想在Excel中筛选并将返回的单元格合并到一个单元格中。
产品表:
| 库存单位|产品名称|颜色|品牌名称|库存|
| - -|- -|- -|- -|- -|
| 细胞P1| iPhone 14手机|红色|苹果公司|一个|
| 细胞P2|安卓13|绿色|萨姆斯|第0页|
| 细胞P3| iPhone 12手机|黄金级|苹果公司|一个|
| 细胞P4|安卓15|黑色|萨姆斯|一个|
| 细胞P5| iPhone 16手机|绿色|苹果公司|第0页|
导出工作表:
条件:

  • 品牌==苹果
  • 库存〉0
  • 产品名称= [产品名称+““+颜色]

| 产品名称|库存|
| - -|- -|
| iPhone 14红色|一个|
| iPhone 12黄金版|一个|
我尝试了几件事,这是最接近我想要实现的目标:

=FILTER({Products!B2:B,Products!C2:C,Products!E2:E},REGEXMATCH(Products!D2:D, "Apple"))

...但我无法将产品名称和颜色合并到一个单元格中。

krugob8w

krugob8w1#

你可以在H2单元格中尝试以下操作:

=FILTER(HSTACK(B2:B6 &" "& C2:C6, E2:E6), (D2:D6=G2) * (E2:E6 > 0))

或者使用LET函数先定义输入变量,为便于阅读表达式:

=LET(rng, A2:E6, prod, INDEX(rng,,2), color, INDEX(rng,,3), 
  brands, INDEX(rng,,4), stocks, INDEX(rng,,5), brand, G2, 
  FILTER(HSTACK(prod &" "& color, stocks) , (brands=brand) * (stocks > 0) )
)

输出如下:

如果您的excel版本没有HSTACK,只需将此调用替换为:

CHOOSE({1,2}, prod &" "& color, stocks)

如果您希望生成标题作为输出的一部分,那么您可以使用VSTACK(如果您的Excel版本中有它):

=LET(rng, A2:E6, prod, INDEX(rng,,2), color, INDEX(rng,,3), 
  brands, INDEX(rng,,4), stocks, INDEX(rng,,5), brand, G2, 
  VSTACK({"Product Name", "Stock"},
    FILTER(HSTACK(prod &" "& color, stocks) , (brands=brand) * (stocks > 0) )
  )
)

相关问题