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

求Excel VBA代码:将A列与B-G列的YES内容合并

实现Excel列内容与指定列"YES"对应标题合并的VBA代码

功能说明

将A列的内容,与B至G列中单元格值为YES的对应列标题合并(忽略NO的列),最终结果输出到H列(可按需调整输出列)。

VBA代码实现

Sub MergeYesColumns()
    Dim ws As Worksheet
    Dim lastRow As Long, colIndex As Integer
    Dim mergedText As String
    Dim rowNum As Long, colNum As Integer
    
    ' 指定操作的工作表,可替换为具体表名如Sheets("DataSheet")
    Set ws = ActiveSheet
    ' 获取A列最后一行的行号
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 遍历数据行(从第2行开始,假设第1行为标题行)
    For rowNum = 2 To lastRow
        mergedText = ws.Cells(rowNum, "A").Value
        ' 遍历B到G列(对应列号2至7)
        For colNum = 2 To 7
            ' 不区分大小写判断是否为YES
            If UCase(ws.Cells(rowNum, colNum).Value) = "YES" Then
                mergedText = mergedText & ", " & ws.Cells(1, colNum).Value
            End If
        Next colNum
        ' 将合并结果写入H列
        ws.Cells(rowNum, "H").Value = mergedText
    Next rowNum
    
    MsgBox "合并操作完成!", vbInformation
End Sub

代码细节说明

  • 工作表指定:默认使用当前活动工作表,如需固定操作某张表,修改Set ws = ActiveSheet为Set ws = Sheets("你的工作表名称")
  • 行范围调整:如果数据从第1行开始(无标题行),将For rowNum = 2 To lastRow改为For rowNum = 1 To lastRow
  • 列范围调整:若需扩展或缩小目标列,修改colNum的起始(2)和结束(7)数值即可
  • 大小写兼容:通过UCase函数统一转换为大写判断,避免因输入Yes/yes导致的漏判
  • 输出列修改:要更改结果输出列,将ws.Cells(rowNum, "H").Value中的"H"替换为目标列标识(如"I"、"J")

使用步骤

  • 打开目标Excel文件
  • 按下Alt + F11打开VBA编辑器
  • 右键点击左侧工作簿节点,选择「插入」→「模块」
  • 将上述代码粘贴到模块编辑窗口中
  • 返回Excel界面,按下Alt + F8,在宏列表中选择MergeYesColumns并执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:22:08