Excel 2010:跨三张表的查找与统计实现(无需新增辅助列)
嘿,刚好我对Excel 2010的函数组合很熟,这三个需求完全不用新增辅助列就能搞定,给你一步步拆解:
假设你的Region表A列是区域名称,需要填充和Name/Code表关联的内容(比如该区域对应的所有名称),由于Excel 2010没有TEXTJOIN函数,我们可以用数组公式来实现。在Region表的B2单元格输入以下公式,然后按Ctrl+Shift+Enter(数组公式必须按这个组合键确认),再下拉填充:
=TEXT(LEFT(LOOKUP(REPT("z",255),IF(Name表!$B$2:$B$100=A2,Name表!$A$2:$A$100&",")),LEN(LOOKUP(REPT("z",255),IF(Name表!$B$2:$B$100=A2,Name表!$A$2:$A$100&",")))-1),"")
提示:把公式里的Name表!$B$2:$B$100改成Name表中存储区域的列范围,Name表!$A$2:$A$100改成Name表中存储名称的列范围,根据你的实际表结构调整。
这个用COUNTIF就能轻松实现,完全不需要辅助列。在Region表的统计列(比如C2)输入以下公式,下拉填充即可:
=COUNTIF(Name表!$B$2:$B$100,A2)
这里的Name表!$B$2:$B$100是Name表中记录区域的列,A2是Region表当前行的区域名称,按需替换范围。
如果不想在Name表新增辅助列,我们可以在汇总区域(比如一个空白工作表或者Region表的某列)直接生成名称-代码的对应关系,用INDEX+MATCH组合公式:
在空白区域的第一行(比如D2)输入名称提取公式(数组公式,按Ctrl+Shift+Enter):
=IFERROR(INDEX(Name表!$A$2:$A$100,ROW(INDIRECT("1:"&COUNTA(Name表!$A$2:$A$100)))),"")
在旁边的E2单元格输入代码匹配公式(同样按Ctrl+Shift+Enter):
=IFERROR(INDEX(Code表!$B$2:$B$100,MATCH(D2,Code表!$A$2:$A$100,0)),"")
提示:Name表!$A$2:$A$100是Name表的名称列,Code表!$A$2:$A$100是Code表的名称列,Code表!$B$2:$B$100是Code表的代码列,根据实际调整范围。
如果只是需要单独查看某个名称的代码,也可以直接在任意空白单元格输入:
=VLOOKUP("目标名称",Code表!$A$2:$B$100,2,FALSE)
把"目标名称"换成你要查询的单元格引用也可以,比如Name表!A2。
内容的提问来源于stack exchange,提问作者topstuff

