谷歌表格REGEXMATCH匹配两类网站路径用户数的公式优化问题
问题:统计网站两个板块用户数量的公式异常解决
我需要统计访问网站两个板块的用户数量:
/blog/resources.company
最初使用带|分隔符的REGEXMATCH函数编写统计公式:
=SUMPRODUCT(('raw data'!$B$2:$B),REGEXMATCH('RAW - New Users'!$A$2:$A,"/blog/|resources.company"))
但使用分两次调用REGEXMATCH再加和的公式时,统计到的用户数更多:
=SUMPRODUCT(('raw data'!$B$2:$B),REGEXMATCH('RAW - New Users'!$A$2:$A,"/blog/") + REGEXMATCH('RAW - New Users'!$A$2:$A,"resources.company"))
已确认是正则中的.导致第一个公式异常,尝试过/blog/|resources\.company但无效,需修改第一个公式,让REGEXMATCH能同时匹配包含resources.company和/blog/的内容。
公式逻辑差异分析
两个公式的统计逻辑本质不同:
- 第一个公式:统计至少访问其中一个板块的用户总数,每个用户仅被计算1次(无论访问几个板块)
- 第二个公式:统计访问/blog/的用户数 + 访问resources.company的用户数,同时访问两个板块的用户会被重复计算
你遇到的转义后无效问题,可能是正则匹配范围未覆盖数据实际格式,以下是修正方案:
修正方案
1. 确保正则正确匹配字面.(保持逻辑或,不重复计数)
在Google Sheets的REGEXMATCH中,.是匹配任意单个字符的元字符,必须转义为\.才能匹配字面意义的.。若数据中目标子串在任意位置,可添加.*确保全范围匹配:
=SUMPRODUCT(('raw data'!$B$2:$B),REGEXMATCH('RAW - New Users'!$A$2:$A,".*(/blog/|resources\.company).*"))
2. 匹配逻辑与第二个公式一致(允许重复计数交叉用户)
若要和第二个公式的统计结果对齐,可将正则改为匹配任意一个条件时累加计数,最直接的写法是保留双REGEXMATCH结构并修正转义:
=SUMPRODUCT(('raw data'!$B$2:$B),(REGEXMATCH('RAW - New Users'!$A$2:$A,"/blog/") + REGEXMATCH('RAW - New Users'!$A$2:$A,"resources\.company")))
若要整合为单个REGEXMATCH,可利用正则的正向预查实现多条件计数,但写法较复杂,推荐使用上述更直观的双函数结构。
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

