Google Sheets公式开发:两列多日期列表匹配检测需求问询
两列逗号分隔日期的匹配判断方案
核心需求
判断表格中Incoming列和Outgoing列(均为逗号分隔的日期集合)是否存在至少一个相同日期,存在则标记True,否则标记False。
实现思路与公式
1. 单单元格公式(以C2为例)
适用于手动下拉的场景:
=IF(OR(A2="", B2=""), FALSE, REGEXMATCH(B2, TEXTJOIN("|", TRUE, SPLIT(A2, ", "))))
- 逻辑:将
Incoming列的日期拆分后用|连接成正则匹配模式,检查Outgoing列是否包含任意一个匹配日期;空值时返回False。
2. 批量自动处理公式(整列应用)
使用BYROW+LAMBDA实现逐行批量计算:
=BYROW(A2:B, LAMBDA(row, LET( in_dates, SPLIT(INDEX(row, 1), ", "), out_dates, SPLIT(INDEX(row, 2), ", "), IF(OR(COUNTA(in_dates)=0, COUNTA(out_dates)=0), FALSE, SUMPRODUCT(--COUNTIF(in_dates, out_dates))>0 ) ) ))
- 逻辑:
- 用
LET定义每行拆分后的日期数组in_dates和out_dates - 检查任意一列无日期时返回
False - 用
COUNTIF统计两个数组的交集数量,数量大于0则返回True
- 用
3. 另一种正则批量写法
=BYROW(A2:B, LAMBDA(row, IF(OR(INDEX(row,1)="", INDEX(row,2)=""), FALSE, REGEXMATCH(INDEX(row,2), TEXTJOIN("|", TRUE, SPLIT(INDEX(row,1), ", "))) ) ))
- 逻辑与单单元格公式一致,通过
BYROW遍历每行实现批量处理。
关键函数说明
SPLIT: 将逗号分隔的字符串拆分为日期数组TEXTJOIN: 将数组元素用指定符号(如|)连接,生成正则匹配的“或”模式REGEXMATCH: 检查字符串是否匹配指定正则模式BYROW+LAMBDA: 逐行处理表格区域,实现批量计算SUMPRODUCT+COUNTIF: 统计两个数组的交集数量,判断是否存在重叠项
内容的提问来源于stack exchange,提问作者Aleister Tanek Javas Mraz
相关产品推荐
相关产品推荐

