vba代码数据拆分问题

实现的效果是将上面的A B列数据拆分出来。

cpp 复制代码
Sub SplitByColumnA()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim key As String
    Dim dict As Object
    Dim keys() As String
    Dim colCount As Long
    Dim startCol As Long
    Dim idx As Long
    Dim rowPtr() As Long
    Dim maxRow As Long

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    If lastRow < 1 Then
        MsgBox "A 列没有数据!"
        Exit Sub
    End If

    Set dict = CreateObject("Scripting.Dictionary")
    ReDim keys(1 To lastRow)
    colCount = 0

    ' 第一遍:按 A 列实际内容收集唯一标签(完全按原样,不删冒号)
    For i = 1 To lastRow
        key = Trim(ws.Cells(i, "A").value)
        If key <> "" Then
            If Not dict.Exists(key) Then
                colCount = colCount + 1
                dict.Add key, colCount
                keys(colCount) = key
            End If
        End If
    Next i

    If colCount = 0 Then
        MsgBox "A 列没有有效标签!"
        Exit Sub
    End If

    ' 自动找输出起始列:当前表最右边已用列再往右空一列
    startCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column + 2
    If startCol < 2 Then startCol = 2

    ' 写表头(第一行)
    For i = 1 To colCount
        ws.Cells(1, startCol + i - 1).value = keys(i)
    Next i

    ' 初始化每个标签的写入行指针,从第 2 行开始
    ReDim rowPtr(1 To colCount)
    For i = 1 To colCount
        rowPtr(i) = 2
    Next i

    ' 第二遍:按 A 列分组,把 B 列的值写入对应列
    For i = 1 To lastRow
        key = Trim(ws.Cells(i, "A").value)
        If key <> "" And dict.Exists(key) Then
            idx = dict(key)
            ws.Cells(rowPtr(idx), startCol + idx - 1).value = ws.Cells(i, "B").value
            rowPtr(idx) = rowPtr(idx) + 1
        End If
    Next i

    ' 找最大行数(用于后续画图或判断范围)
    maxRow = 1
    For i = 1 To colCount
        If rowPtr(i) - 1 > maxRow Then maxRow = rowPtr(i) - 1
    Next i

    ws.Columns("A:Z").AutoFit

    MsgBox "拆分完成!共 " & colCount & " 组,结果从第 " & startCol & " 列开始。"
End Sub
相关推荐
跨境猫小妹10 小时前
跨境电商订单导出CSV用Excel打开后订单号变成科学计数法如何定位并修复
excel·跨境电商·营销策略
weixin_4404016921 小时前
大数据技术-数据分析(EXcel+Python数据处理+SQL)
大数据·python·数据分析·excel
jaysee-sjc2 天前
【苍穹外卖】Day12:工作台数据看板与 Excel 报表导出
java·开发语言·数据库·spring boot·spring·微信·excel
ms365copilot2 天前
Copilot 代理开始进入Word、Excel、PowerPoint,不再只是“问一句答一句”
word·excel·copilot
wuyk5552 天前
PyQt6-第14讲-数据库与Excel双向同步
数据库·python·ui·excel·pyqt
qq_364682152 天前
AI如何将录音内容自动整理成Excel清单
人工智能·excel
Logic1012 天前
Excel信息+照片文件夹,自动合成word格式化文档
word·excel·办公自动化·邮件合并·office技巧·自动插入图片·插入域
Data-Miner3 天前
一个省大模型积分的 Excel 数据处理方案:脱敏生成逻辑,脚本复用把 token 降到 0
人工智能·windows·excel
Logic1013 天前
表格智能记账3 销售与库存智能联动,自动标红库存预警
excel·条件格式·excel技巧·vlookup·sumif
技术小甜甜4 天前
【Copilot】能选 Claude 和 GPT-6 了,Excel 分析该交给谁
gpt·excel·copilot·claude·microsoft365·gpt-6