如何用Excel公式基于Table B数据按条件填充Table A年份列
Excel公式实现按ID匹配年份"Yes"标记
VLOOKUP无法满足需求的原因是:它仅会返回匹配ID的第一行对应年份的值,无法判断该ID下是否存在任意一行的对应年份为"Yes"。以下是两种可行的解法:
方法1:COUNTIFS函数(兼容所有Excel版本)
假设Table A的A列为ID,B列为2015年数据,在B2单元格输入公式:
=IF(COUNTIFS(TableB[ID],A2,TableB[2015],"Yes")>0,"Yes","")
公式说明:
COUNTIFS(TableB[ID],A2,TableB[2015],"Yes"):统计Table B中ID等于A2且2015列为"Yes"的行数- 若统计结果大于0,说明该ID在2015年存在"Yes"记录,返回"Yes";否则返回空值
适配非结构化引用场景:如果未将数据转为Excel表格,用单元格区域替代(比如Table B的ID范围为$A$2:$A$12,2015列范围为$B$2:$B$12),公式改为:
=IF(COUNTIFS($A$2:$A$12,A2,$B$2:$B$12,"Yes")>0,"Yes","")
同理,2016列(C2)和2017列(D2)只需修改对应年份的列引用,下拉填充即可。
方法2:动态数组公式(适用于Excel 365/2021及以后版本)
单单元格公式(自动填充整列)
在Table A的B2单元格输入以下公式,Excel会自动向下填充所有行:
=BYROW(A2:A<替换为最后一行行号>,LAMBDA(x,IF(COUNTIFS(TableB[ID],x,TableB[2015],"Yes")>0,"Yes","")))
另一种写法(用FILTER+TEXTJOIN)
=IF(ISNUMBER(SEARCH("Yes",TEXTJOIN(",",TRUE,FILTER(TableB[2015],TableB[ID]=A2)))),"Yes","")
可选调整:
如果需要在无"Yes"记录时显示"否",只需将公式中的""替换为"否"即可。
内容的提问来源于stack exchange,提问作者user12501522
相关产品推荐
相关产品推荐

