You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Excel公式在不同工作表提取指定人员的唯一产品ID

获取Excel中人员X购买的唯一产品ID(公式实现方案)

问题背景

现有包含人员(Person)、产品ID(Product id)的购买记录如下:

  • X 43
  • Y 58
  • X 34
  • X 28
  • X 34
  • Y 26
  • Y 57

需要在Excel的不同工作表中,通过公式获取人员X购买的唯一产品ID(已知数据透视表可实现,但需要公式解法),预期结果为:43、34、28。


方案1:适用于Excel 365/2021(支持动态数组)

这是最简洁的解法,利用UNIQUEFILTER函数组合实现:

假设原始数据存放在Sheet1中:A列为「Person」,B列为「Product id」。在目标工作表的任意空白单元格(比如A1)输入以下公式:

=UNIQUE(FILTER(Sheet1!B:B, Sheet1!A:A="X"))

公式解释:

  1. FILTER(Sheet1!B:B, Sheet1!A:A="X"):先从Sheet1的B列中筛选出所有Person为「X」的产品ID(会包含重复的34)
  2. UNIQUE(...):对筛选结果进行去重,最终得到唯一的产品ID列表,公式会自动溢出显示所有结果,无需手动下拉填充。

方案2:适用于旧版Excel(不支持动态数组)

如果你的Excel版本不支持动态数组函数,可使用数组公式结合INDEX+MATCH+COUNTIF实现:

假设原始数据的范围是Sheet1!$A$2:$B$8(A2:A8是Person,B2:B8是Product id),在目标工作表的A1单元格输入以下数组公式,输入完成后按Ctrl+Shift+Enter确认(旧版Excel需手动触发数组计算):

=INDEX(Sheet1!$B$2:$B$8, MATCH(0, COUNTIF($A$1:A1, Sheet1!$B$2:$B$8)*(Sheet1!$A$2:$A$8<>"X"), 0))

输入完成后,下拉填充单元格直到出现#N/A,此时前面的单元格就是人员X购买的唯一产品ID。

公式解释:

  1. COUNTIF($A$1:A1, Sheet1!$B$2:$B$8):统计当前单元格上方已经出现过的产品ID,避免重复输出
  2. *(Sheet1!$A$2:$A$8<>"X"):排除Person不是「X」的记录
  3. MATCH(0, ..., 0):找到第一个既不属于已输出列表、又属于Person X的产品ID的位置
  4. INDEX(...):根据位置取出对应的产品ID

内容的提问来源于stack exchange,提问作者Harshal Gajare

火山引擎 最新活动