You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中拼接与指定日期匹配的对应列备注值(优先非VBA)

按匹配日期批量拼接对应备注的非VBA实现方案

以下方案全部不需要写VBA代码,根据你使用的Excel版本选择对应方法即可。
首先统一约定数据源位置(你可以根据自己实际表名、列位置替换参数):

  • 存放原始日期、备注的工作表命名为源数据表,其中A列为日期列、B列为备注列,有效数据从第2行开始
  • 存放结果的工作表中,A列为需要匹配的目标日期,从第2行开始,拼接后的备注内容写在同行B列

方法1:Excel 365/2021及以上版本(最简便,无需特殊操作)

直接在结果表B2单元格输入以下公式,下拉填充即可:

=TEXTJOIN("、",TRUE,FILTER(源数据表!$B$2:$B$1000,源数据表!$A$2:$A$1000=A2,""))

参数说明:

  • 第一个参数"、"是不同备注之间的分隔符,可以根据需求替换为逗号、换行符(换行用CHAR(10),需要提前把单元格设置为「自动换行」)等任意符号
  • 第二个参数TRUE表示自动跳过空的备注单元格,避免出现连续多余分隔符
  • FILTER函数负责遍历源表所有行,筛选出和当前行目标日期完全匹配的所有备注内容
  • 公式中$B$2:$B$1000、$A$2:$A$1000的范围可以根据源表实际数据行数调整,不建议直接选整列,会增加不必要的计算量

效果参考:
期望实现效果
源数据样式参考

方法2:Excel 2019版本(无FILTER函数的兼容写法)

如果你的Excel版本没有FILTER函数,可以用TEXTJOIN+IF的数组公式实现:
在结果表B2单元格输入以下公式后,不要直接按回车,按住Ctrl+Shift+Enter三键结束数组公式输入,之后再下拉填充即可:

=TEXTJOIN("、",TRUE,IF(源数据表!$A$2:$A$1000=A2,源数据表!$B$2:$B$1000,""))

方法3:Excel 2016及更早版本(无TEXTJOIN函数,用Power Query实现)

如果你的版本连TEXTJOIN函数都没有,又不想用VBA,可以用自带的Power Query功能实现,后续源数据更新只要点刷新就能同步结果:

  • 选中源表所有有效数据,按Ctrl+T将其转换为超级表,点击「数据」选项卡-「从表格/区域」,将数据加载到Power Query编辑器
  • 选中日期列,点击顶部菜单栏「分组依据」,分组操作选择「所有行」,自定义新列名(比如叫「分组结果」)后确认
  • 新增自定义列,输入公式Text.Combine([分组结果][备注列的实际列名],"、")
  • 删除多余的中间列,点击「关闭并上载」,把拼接好的结果加载到目标工作表即可

你之前用IF、IFS、CONCAT组合无法得到正确结果的核心原因:CONCAT本身不支持按条件遍历筛选整列数据,普通IF函数如果没有数组运算逻辑,只会匹配到第一个符合日期条件的备注,无法抓取同日期下的所有备注内容。

内容的提问来源于stack exchange,提问作者Chris R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:45:44