用excel按时间段查订单,先把日期列整理成标准的真日期格式,再按实际需求选对应的方法:只是临时看一眼数据直接用筛选就行,要把结果单独固定存到别的区域就用高级筛选,想要改起止日期结果自动更新的话,filter函数用着最顺手。本次操作环境:microsoft excel,版本是microsoft 365。
下面拿一份订单流水表演示,表格至少要有日期、金额这两个字段,真实在用的订单表还可以保留订单号、客户、门店、渠道这些列。注意日期列里别混着文本格式的假日期,不然区间筛选条件会直接失效。
第一步:开启订单表筛选按钮
随便点订单表里的任意一个单元格,切到顶部「数据」选项卡,点一下「筛选」就行。等表头每个字段右边都弹出下拉小箭头,就说明Excel已经把第一行识别成表头了,之后就能按日期、金额、渠道这些维度继续筛选。

第二步:在日期条件区写开始和结束日期
要是你需要反复调整时间段查数据,没必要每次都手动点菜单改条件。直接在表格旁边空出两格当条件区,一格填开始日期,一格填结束日期,比如开始日期填 >=2023-3-1,结束日期填 <2023-4-1。同一个字段名下放两个条件,Excel会自动识别成这个字段的取值上下限。

第三步:用高级筛选指定数据区域和条件区域
想要把筛选出来的结果直接导出到指定位置,直接点「数据」选项卡里的「高级」按钮。列表区域选你整张原始订单表,条件区域选刚才填好的日期条件区;不想改动原表内容的话,就选「将筛选结果复制到其他位置」,再点一下你要放结果的起始单元格就行。

第四步:用 FILTER 函数做动态订单查询
用Microsoft 365的话,更推荐把起止日期单独放在两个单元格里,之后在你要放结果的位置输入FILTER公式。之后只要改起止日期,查询结果会自动溢出刷新,根本不用反复点开筛选菜单。示例公式可以直接用:
=FILTER(A2:G115,(A2:A115>=I10)*(A2:A115<J10),"没有匹配订单")

FILTER 函数语法和参数
FILTER的完整语法是:
=FILTER(array, include, [if_empty])
| 参数 | 写法示例 | 作用 |
|---|---|---|
array |
A2:G115 |
要返回的订单数据区域,可以包含多列。 |
include |
(A2:A115>=I10)*(A2:A115<J10) |
筛选条件。两个条件相乘表示同时满足开始日期和结束日期。 |
[if_empty] |
"没有匹配订单" |
没有查到数据时显示的提示文字,省略后可能返回计算错误。 |
公式里结束条件写 <J10 的话,建议你把结束日期的单元格填成下一天或者下个月第一天;要是你想直接选当天当结束日期,把条件改成 <=J10 就行。如果你的订单时间精确到时分秒,最稳妥的写法就是把结束条件设成「小于下一天的0点」,这样不会漏掉当天深夜的订单。
常见错误怎么改
返回 #CALC!,说明当前没有符合条件的记录,补全第三个参数「没有匹配订单」就不会报错了。返回 #VALUE! 的话,先检查你选的数据源区域行数,和筛选条件覆盖的行数是不是对得上。要是结果位置弹出 #SPILL!,说明公式自动展开的区域被别的内容挡住了,把结果区域下方和右侧空格里的内容清掉,重新计算就好。
要是日期怎么筛都不对,先去确认日期列是不是文本格式。临时可以把日期列改成「短日期」格式,或者用 DATEVALUE 函数、分列功能、直接给日期乘1这几种方法,把假的文本日期转成标准真日期。另外如果你用的是WPS或者老版本的Excel,先确认软件支不支持FILTER函数,不支持的话用普通筛选或者高级筛选就够稳。
扩展示例:同时限定时间段和订单金额
平时按时间段查订单,经常还要叠加金额、客户、渠道这些限制。比如要查3月里金额大于500的订单,直接把公式改成:
=FILTER(A2:G115,(A2:A115>=I10)*(A2:A115<J10)*(B2:B115>500),"没有匹配订单")
多个条件继续用乘号连接,意思是所有条件都要满足。如果要查“客户是张三或李四”的订单,可以把“或”条件放在括号里用加号连接,再和日期条件相乘。


















