求Excel公式:按ID合并行,年份列存在Y则保留Y
Excel 多ID合并年份列公式方案
一、通用版(兼容所有Excel版本)
假设原数据结构:
- ID列:
A2:A100 - 2011年列:
B2:B100,2012年列:C2:C100,2013年列:D2:D100,2014年列:E2:E100
操作步骤:
- 提取不重复ID:点击「数据」选项卡→「高级筛选」,选择“将筛选结果复制到其他位置”,勾选“选择不重复的记录”,把不重复ID放到新列(比如
G2开始的区域)。 - 在新表格的2011年列(
H2)输入公式:
公式逻辑:统计当前ID下2011年列出现“Y”的次数,只要有1次就返回“Y”,否则留空。=IF(COUNTIFS($A$2:$A$100,G2,$B$2:$B$100,"Y")>0,"Y","") - 修改年份列引用,复制公式到2012-2014年对应单元格:
- 2012年(
I2):=IF(COUNTIFS($A$2:$A$100,G2,$C$2:$C$100,"Y")>0,"Y","") - 2013年(
J2):=IF(COUNTIFS($A$2:$A$100,G2,$D$2:$D$100,"Y")>0,"Y","") - 2014年(
K2):=IF(COUNTIFS($A$2:$A$100,G2,$E$2:$E$100,"Y")>0,"Y","")
- 2012年(
- 把所有公式下拉到不重复ID的最后一行即可。
二、Excel 365/2021 动态数组版(高效自动生成)
如果使用支持动态数组的Excel版本,无需手动提取不重复ID,公式自动溢出结果:
- 提取不重复ID(自动生成完整列表):
=UNIQUE(A2:A100) - 生成2011年列的对应结果:
公式逻辑:遍历每个不重复ID,统计该ID下2011年列有“Y”的记录数,有则返回“Y”。=BYROW(UNIQUE(A2:A100),LAMBDA(x,IF(SUMPRODUCT(--(A2:A100=x),--(B2:B100="Y"))>0,"Y",""))) - 若想一次性生成完整表格,可使用以下公式:
该公式会自动合并不重复ID与四个年份列,生成完整的目标表格,无需手动下拉操作。=HSTACK(UNIQUE(A2:A100),BYCOL(B2:E100,LAMBDA(col,BYROW(UNIQUE(A2:A100),LAMBDA(id,IF(MAX((A2:A100=id)*(col="Y"))=1,"Y",""))))))
内容的提问来源于stack exchange,提问作者user12501522
相关产品推荐
相关产品推荐

