【问题标题】:Splitting multi value cells in Excel into rows将Excel中的多值单元格拆分为行
【发布时间】:2016-11-08 11:16:24
【问题描述】:

我在excel中遇到问题,我打算通过VBA将一个多值单元格拆分为行。

这是我当前的表

那我就试着弄成这样

谢谢

【问题讨论】:

  • 你试过自己做吗?
  • 我从这个地方得到的印象是,这个想法是你先做一个刺,然后发布你的代码,我们会帮助你。从头开始编写人们的代码通常不是完成的事情。您是否尝试过搜索 - 我经常看到此类问题出现?

标签: vba excel split


【解决方案1】:

这会做你想做的事。我假设您的“电子邮件”列是 B 列,而您从第 1 行开始。

Option Explicit

Const ANALYSIS_ROW As String = "B"
Const DATA_START_ROW As Long = 1

Sub ReplicateData()
    Dim iRow As Long
    Dim LastRow As Long
    Dim ws As Worksheet
    Dim iSplit() As String
    Dim iIndex As Long
    Dim iSize As Long

    'Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With ThisWorkbook
        .Worksheets("Sheet1").Copy After:=.Worksheets("Sheet1")
        Set ws = ActiveSheet
    End With

    With ws
        LastRow = .Cells(.Rows.Count, ANALYSIS_ROW).End(xlUp).Row
    End With


    For iRow = LastRow To DATA_START_ROW Step -1
        iSplit = Split(ws.Cells(iRow, ANALYSIS_ROW).Value2, ",")
        iSize = UBound(iSplit) - LBound(iSplit) + 1
        If iSize = 1 Then GoTo Continue

        ws.Rows(iRow).Copy
        ws.Rows(iRow).Resize(iSize - 1).Insert
        For iIndex = LBound(iSplit) To UBound(iSplit)
            ws.Cells(iRow, ANALYSIS_ROW).Offset(iIndex).Value2 = iSplit(iIndex)
        Next iIndex
Continue:
    Next iRow

    Application.CutCopyMode = False
    Application.Calculation = xlCalculationAutomatic
    'Application.ScreenUpdating = True
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多