如何统计同一单元格中两字符共同出现次数并批量生成矩阵?
解决字符共同出现次数矩阵统计问题
我来帮你搞定这个需求!针对你要统计两个字符在同一单元格共同出现次数并构建矩阵的问题,在Google Sheets里可以通过以下步骤实现:
1. 先准备矩阵的行/列字符列表
首先得从你的数据范围$B$2:$C$6里提取所有需要统计的唯一字符,作为矩阵的行标题和列标题:
- 在任意空白单元格(比如F2)输入公式:
这个公式的作用是:=UNIQUE(FLATTEN(SPLIT(TEXTJOIN("", TRUE, $B$2:$C$6), "")))TEXTJOIN("", TRUE, $B$2:$C$6):把数据区域里所有单元格的内容合并成一个完整字符串SPLIT(..., ""):把合并后的字符串拆分成单个字符FLATTEN:把拆分后的多维结果转成一维数组UNIQUE:提取其中不重复的字符,得到你的核心字符列表
- 把这个列表转置成矩阵的列标题:在G1单元格输入
=TRANSPOSE($F$2:$F),就能把行标题的字符变成列标题。
2. 核心统计公式
假设你的行标题在$F$2:$F,列标题在$G$1:$1,在G2单元格(对应行字符F2、列字符G1)输入以下公式:
=SUMPRODUCT(--(ISNUMBER(SEARCH($F2, $B$2:$C$6))), --(ISNUMBER(SEARCH(G$1, $B$2:$C$6))))
公式逻辑拆解:
SEARCH($F2, $B$2:$C$6):检查数据区域每个单元格是否包含行标题的字符,找到返回位置,没找到返回错误值ISNUMBER(...):把位置结果转成TRUE,错误值转成FALSE--(...):把布尔值TRUE转换为1,FALSE转换为0SUMPRODUCT:将两个数组(行字符匹配结果、列字符匹配结果)对应元素相乘后求和,最终得到同时包含两个字符的单元格总数
3. 批量应用到整个矩阵
输入完G2的公式后,把鼠标放在单元格右下角,等光标变成十字形:
- 先向右拖动,覆盖所有列标题对应的单元格
- 再向下拖动,覆盖所有行标题对应的单元格
公式里的混合引用($F2固定列、G$1固定行)会自动调整,轻松完成整个矩阵的统计。
可选优化:精确匹配独立字符
如果你的单元格里字符是用分隔符(比如逗号)分开的(例如"A,B,C"),想要避免部分匹配(比如"AB"被误判为包含"A"和"B"),可以把SEARCH换成REGEXMATCH,公式修改为:
=SUMPRODUCT(--REGEXMATCH($B$2:$C$6, "\b"&$F2&"\b"), --REGEXMATCH($B$2:$C$6, "\b"&G$1&"\b"))
这里的\b是单词边界,确保匹配的是独立的单个字符。
内容的提问来源于stack exchange,提问作者Amod
相关产品推荐
相关产品推荐

