You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel结构化引用问题:实现FullOrders表短单订单自动标记

嘿,这个需求其实挺常见的,我来给你几个靠谱的解决方案,分Excel公式和Power Query两种场景,你看哪种适合你:

Excel 公式解决方案

如果是在Excel里直接用公式实现,有两种简单的写法:

方法1:COUNTIF 通用写法(兼容所有Excel版本)

这个方法用COUNTIF统计匹配的订单数量,只要存在匹配就返回1,否则0,公式如下:

=IF(COUNTIF(ShortedOrders[Order Number], FullOrders[@[Order Number]])>0, 1, 0)

解释

  • COUNTIF(ShortedOrders[Order Number], FullOrders[@[Order Number]]):统计ShortedOrders的订单号列里,和当前行FullOrders订单号匹配的数量
  • 只要数量大于0,说明该订单在未配齐列表里,返回1;否则返回0

方法2:XLOOKUP 简洁写法(适用于Excel 365/2021及以上版本)

如果你用的是新版Excel,XLOOKUP会更高效,写法也可以更简洁:

=--NOT(ISERROR(XLOOKUP(FullOrders[@[Order Number]], ShortedOrders[Order Number], 1)))

解释

  • XLOOKUP尝试在ShortedOrders里找到匹配的订单号,找到就返回1,找不到会报错
  • ISERROR判断是否报错,NOT反转结果后,用--把布尔值(True/False)转换成数字1/0,是个实用的小技巧
Power Query 解决方案(适用于Excel/Power BI)

如果你的数据量比较大,或者需要自动化更新,用Power Query会更稳定:

  • 把FullOrders和ShortedOrders都加载到Power Query编辑器(Excel里选「数据」→「从表格/范围」)
  • 选中FullOrders的查询,点击「合并查询」→「合并查询作为新查询」,选择ShortedOrders作为合并的表,匹配列都选Order Number,连接类型选左外部
  • 展开合并后的列,只保留Order Number列(随便哪一列都行,用来判断是否存在匹配)
  • 添加自定义列,公式写:
=if [ShortedOrders.Order Number] <> null then 1 else 0
  • 把自定义列重命名为Short?,再删掉合并过来的冗余列
  • 关闭并上载到表格,以后数据更新只要刷新就行
注意事项
  • 确保两个表的Order Number数据类型一致,比如都是文本或者数字,不然会出现明明订单号一样却匹配不到的情况
  • 如果是Excel普通区域(不是结构化表格),公式里的引用要改成区域地址,比如ShortedOrders!A:A这种,但还是推荐用结构化表格(Ctrl+T创建),引用更稳定

内容的提问来源于stack exchange,提问作者Nick B

火山引擎 最新活动