小编今天在处理数据时遇到一种情况:使用一个基因集(假设有200个基因),进行KEGG富集分析(clusterProfiler),得到了好多条通路,每条通路包含的基因种类和数量都不一样,如何快速得知这个基因集中,有多少个基因在通路中?
一、问题情景

假设得到了上面的KEGG结果(实际小编的数据有61条通路),clusterProfiler结果会直接统计每个通路中包含的基因数量。
我想快速计算geneSymbol列中,出现的基因数量。
请在微信客户端打开
二、问题解决
最有意思的就是这个了,小编经常用deepseek网页版处理技术问题,当deepseek傻掉了,再换kimi进行补救。于是乎deepseek纠结了10分钟,始终给出错误的统计结果……
最后还是小编的planB(kimi网页版),一次性就给出了正确的操作方法:
=COUNTA(UNIQUE(TRIM(TOCOL(TEXTSPLIT(TEXTJOIN("/",TRUE,P2:P62),"/"),3))))其中,
P2:P62为geneSymbol列中要统计的单元格范围
- TEXTJOIN("/", TRUE, A1:A61),把整列数据用
/连接成一个长字符串(忽略空单元格) - TEXTSPLIT(..., "/"),按"/"把这个长字符串重新拆成独立的基因(形成数组)
- TOCOL(..., 3),把拆分后的二维数组转成一列,参数
3表示忽略空白和错误值 - TRIM(...),去掉基因名前后可能存在的空格
- UNIQUE(...),对基因列表去重
- COUNTA(...),统计去重后的基因个数
三、举一反三
那这个excel函数操作是否可以处理多列数据呢?当然可以!

于是小编开始恶搞了
让AB列都有数据,只是把刚才的excel函数中P2:P62改为了A1:B10,就能够得到基因的数量了。
将这个excel函数简化,即去掉COUNTA后,就能够得到具体的基因名字是谁了
经过测试,完全没问题~
点关注,不迷路~勤收藏,不慌张~
夜雨聆风