Office 365 Excel如何提取指定工作表间A列唯一邮箱并统计频率?
跨指定工作表提取唯一邮箱并统计频次(Office 365)
1. 提取动态唯一邮箱列表(Summary表A2单元格)
在Summary工作表的A2单元格输入以下公式,它会自动提取Start和Stop之间所有工作表A列的唯一邮箱,并动态溢出填充到下方行:
=UNIQUE(TOCOL(INDIRECT("'"&TEXTJOIN("','",,FILTER(MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),ROW(GET.WORKBOOK(1))>MATCH("Start",MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),0),ROW(GET.WORKBOOK(1))<MATCH("Stop",MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),0)))&"'!A:A"),2)
公式拆解:
MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255):从系统返回的工作表全称中提取纯工作表名称(去掉前面的[工作簿名.xlsx]前缀)MATCH("Start",...,0)/MATCH("Stop",...,0):定位Start和Stop工作表在列表中的位置FILTER(...):筛选出位于Start和Stop之间的所有目标工作表名称TEXTJOIN("','",,...):将筛选后的工作表名拼接成可被INDIRECT识别的引用格式INDIRECT(...):转换成对目标工作表A列的实际引用TOCOL(...,2):将所有目标工作表A列的数据合并为单一列,忽略空单元格UNIQUE(...):去除重复值,生成动态唯一邮箱列表
2. 自动统计邮箱出现频次(Summary表B2单元格)
在B2单元格输入以下公式,它会自动对应A列的每个邮箱,统计其在所有目标工作表A列中的出现次数,同样动态溢出填充:
=BYROW(A#,LAMBDA(email,COUNTIF(TOCOL(INDIRECT("'"&TEXTJOIN("','",,FILTER(MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),ROW(GET.WORKBOOK(1))>MATCH("Start",MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),0),ROW(GET.WORKBOOK(1))<MATCH("Stop",MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,255),0)))&"'!A:A"),2),email)))
公式核心:
BYROW(A#,LAMBDA(email,...)):遍历A列的每个邮箱值COUNTIF(...):统计当前邮箱在合并后的所有A列数据中的出现次数- 无需手动下拉公式,Office 365的动态数组功能会自动完成填充
注意事项
- 确保Start和Stop工作表的名称完全准确,公式会严格匹配这两个标记工作表的位置
- 若目标工作表名称包含空格或特殊字符,公式中的单引号已自动处理此类引用问题
- 该方案依赖Office 365的动态数组功能(UNIQUE、TOCOL、BYROW等),需确保你的Excel版本支持这些函数
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

