基于日期筛选在Google Sheets中生成动态价格表
Google Sheets 基于日期自动选择EOSS/BAU价格的Query实现
核心公式
假设原始数据存于名为数据的工作表,表头为:A=SKU、B=EOSS开始日期、C=EOSS结束日期、D=EOSS价格、E=BAU价格。在新工作表的A2单元格输入以下公式:
=QUERY(数据!A:E, "SELECT A, IF(DATE '"&TEXT(TODAY(),"yyyy-MM-dd")&"' >= B AND DATE '"&TEXT(TODAY(),"yyyy-MM-dd")&"' <= C, D, E) WHERE A IS NOT NULL LABEL IF(DATE '"&TEXT(TODAY(),"yyyy-MM-dd")&"' >= B AND DATE '"&TEXT(TODAY(),"yyyy-MM-dd")&"' <= C, D, E) '当前适用价格'", 1)
公式拆解
- 数据源指定:
数据!A:E指向存储产品价格信息的原始数据区域 - 日期判断逻辑:
TEXT(TODAY(),"yyyy-MM-dd")将当前日期转换为Query函数可识别的字符串格式DATE '"&...&"' >= B AND DATE '"&...&"' <= C判断当前日期是否落在EOSS促销区间内
- 价格选择:IF函数根据判断结果返回EOSS价格(D列)或BAU常规价格(E列)
- 过滤空行:
WHERE A IS NOT NULL剔除无SKU的无效行 - 表头设置:
LABEL ... '当前适用价格'为生成的价格列设置清晰表头 - 表头参数:最后一个参数
1表示原始数据包含表头,Query会自动识别并生成对应表头
自定义日期查询
如果需要基于指定日期而非当前日期判断,只需将公式中的TODAY()替换为目标日期单元格引用(如$F$1),修改后的公式示例:
=QUERY(数据!A:E, "SELECT A, IF(DATE '"&TEXT($F$1,"yyyy-MM-dd")&"' >= B AND DATE '"&TEXT($F$1,"yyyy-MM-dd")&"' <= C, D, E) WHERE A IS NOT NULL LABEL IF(DATE '"&TEXT($F$1,"yyyy-MM-dd")&"' >= B AND DATE '"&TEXT($F$1,"yyyy-MM-dd")&"' <= C, D, E) '指定日期适用价格'", 1)
内容的提问来源于stack exchange,提问作者Abhay
相关产品推荐
相关产品推荐

