在QUERY函数内计算到期日,筛选超30天逾期记录
在Google Sheets的QUERY函数中直接计算到期日筛选逾期记录
可以直接在QUERY函数内完成到期日计算,无需新增辅助列,以下是可行的公式及说明:
可行公式
假设你的账单日期在A列,付款条件在B列,数据范围为A2:B,公式如下:
=QUERY(A2:B, "SELECT A, B WHERE DATEVALUE(A) + INTEGER(REGEXEXTRACT(B, '\d+')) < DATEVALUE('"&TEXT(TODAY()-30,"yyyy-mm-dd")&"')")
公式拆解
DATEVALUE(A):将A列的账单日期转换为可计算的数值格式,避免日期格式导致的运算错误INTEGER(REGEXEXTRACT(B, '\d+')):通过正则表达式提取B列付款条件中的数字部分(例如从Net 30或15 Days中提取30或15),并转为整数类型用于日期运算DATEVALUE('"&TEXT(TODAY()-30,"yyyy-mm-dd")&"'):计算并转换出「当前日期往前推30天」的数值,作为逾期判断的阈值- 核心逻辑:账单日期 + 付款期限 < 30天前的日期,即到期日已超过30天,符合逾期筛选要求
你原写法的问题说明
你尝试的"SELECT A WHERE A + RIGHT(B:B,2) - 30 > 30"存在几个问题:
- QUERY函数中需使用列标识(如
B)而非整列引用B:B RIGHT(B,2)仅能提取末尾两位字符,若付款天数是一位数(如Net 7)或格式不固定,会提取到无效内容;正则表达式REGEXEXTRACT(B, '\d+')能适配任意长度的数字提取,通用性更强- 直接用日期单元格加数字可能因格式问题导致运算异常,转为数值后计算更可靠
注意事项
- 确保A列是标准日期格式,否则
DATEVALUE会返回错误 - 若付款条件有特殊格式,只需调整正则表达式即可(例如格式为
30/Net时,'\d+'依然能正确提取数字)
内容的提问来源于stack exchange,提问作者Rex Nguyen
相关产品推荐
相关产品推荐

