Google Sheets技术问题:如何返回对应特定值的列值数组及生成D/E/F列公式
在Google Sheets中提取对应特定值的数组及批量生成分组列方案
1. 提取单特定值对应的所有值数组
如果需要从某列(如B列)中提取另一列(如A列)等于特定值(如"类别1")的所有值并生成数组,直接使用FILTER函数:
=FILTER(B:B, A:A="类别1")
该公式会返回符合条件的所有值组成的动态数组,结果自动溢出到下方单元格。
2. 批量生成类似D、E、F列的分组结果
假设源数据为A列(类别)、B列(对应值),要生成D列(唯一类别)、E列(对应所有值的数组/列表)、F列(对应值数量),可通过以下公式组合实现:
步骤1:生成唯一类别列(D列)
在D1单元格输入:
=UNIQUE(A:A)
公式会提取A列所有不重复的类别,自动溢出填充D列。
步骤2:生成对应类别的值数组(E列)
在E1单元格输入:
=BYROW(D:D, LAMBDA(category, FILTER(B:B, A:A=category)))
该公式会遍历D列每个类别,返回对应所有B列值组成的数组,结果溢出到对应行的下方单元格。
若需将数组转为逗号分隔的文本,改用:
=BYROW(D:D, LAMBDA(category, TEXTJOIN(", ", TRUE, FILTER(B:B, A:A=category))))
步骤3:生成对应值的数量(F列)
如果F列用于统计每个类别对应的值数量,在F1单元格输入:
=COUNTIF(A:A, D:D)
3. 用QUERY函数一键生成分组结果
若想一步到位生成类别、对应值列表、计数的组合结果,使用QUERY函数:
=QUERY(A:B, "SELECT A, GROUP_CONCAT(B), COUNT(B) WHERE A IS NOT NULL GROUP BY A", 1)
公式直接返回三列结果:唯一类别、逗号拼接的对应值、对应值数量,无需分步骤操作。
内容的提问来源于stack exchange,提问作者Michael Swarts
相关产品推荐
相关产品推荐

