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

如何按日期合并拆分的交易描述列?公式或VBA实现咨询

解决同日期交易描述合并的问题

方法一:Excel公式实现(支持Excel 365/2021及以上)

1. 填充日期列空值

假设日期列是A列,描述列是B列,在C2单元格输入公式并下拉填充:
=IF(A2="",C1,A2)
此公式会将同一日期组的空日期单元格自动填充为上方的日期值。

2. 合并对应描述

  • 生成不重复日期列表:在D2单元格输入 =UNIQUE(C:C),自动列出所有唯一日期。
  • 合并描述:在E2单元格输入公式并下拉:
    =TEXTJOIN(" ",TRUE,FILTER(B:B,C:C=D2,""))
    这会将对应日期的所有描述用空格拼接成单个字符串。

无辅助列简化版(Excel 365动态数组)

直接在任意空白单元格输入以下公式,自动生成合并后的日期-描述结果:

=LET(
    填充日期, SCAN("", A:A, LAMBDA(x,y, IF(y="",x,y))),
    唯一日期, UNIQUE(填充日期),
    合并描述, MAP(唯一日期, LAMBDA(d, TEXTJOIN(" ", TRUE, FILTER(B:B, 填充日期=d, "")))),
    HSTACK(唯一日期, 合并描述)
)

方法二:VBA宏实现(兼容所有Excel版本)

如果使用旧版Excel(无TEXTJOIN等函数),可以用VBA批量处理:

  1. 按Alt+F11打开VBA编辑器,插入新模块。
  2. 粘贴以下代码:
Sub MergeSameDateDescriptions()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long, j As Long
    Dim currentDate As Variant
    Dim mergedDesc As String
    
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    i = 2 '假设表头在第一行,从第二行开始处理
    Do While i <= lastRow
        currentDate = ws.Cells(i, "A").Value
        mergedDesc = ws.Cells(i, "B").Value
        
        '合并下方同日期的描述行
        j = i + 1
        Do While j <= lastRow And ws.Cells(j, "A").Value = ""
            mergedDesc = mergedDesc & " " & ws.Cells(j, "B").Value
            j = j + 1
        Loop
        
        '写入合并后的描述
        ws.Cells(i, "B").Value = mergedDesc
        
        '删除多余的拆分行
        If j > i + 1 Then
            ws.Rows(i + 1 & ":" & j - 1).Delete
            lastRow = lastRow - (j - i - 1)
        End If
        
        i = i + 1
    Loop
End Sub
  1. 执行宏(F5),即可直接在原表格完成合并与清理。

注意:执行VBA前请备份数据,避免误操作导致数据丢失。

内容的提问来源于stack exchange,提问作者John Honai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:13:12