Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中将逗号分隔的值拆分为行_Excel_Excel 2010_Vba - Fatal编程技术网

在excel中将逗号分隔的值拆分为行

在excel中将逗号分隔的值拆分为行,excel,excel-2010,vba,Excel,Excel 2010,Vba,这是我的数据: 在这种情况下,使用方法Data->Text to columns->Transpose不起作用。我需要将逗号分隔的值转换为每一行,并复制其他列的数据以匹配。就像一个SQL表。也许有一个宏可以做到这一点 下面是我想要的结果: 我看不到您的屏幕截图,但我认为这个概念适合您 Option Explicit 'Qual coluna possui os termos que repetem? Const ANALYSIS_ROW As String = "K" 'Em qual l

这是我的数据:

在这种情况下,使用方法Data->Text to columns->Transpose不起作用。我需要将逗号分隔的值转换为每一行,并复制其他列的数据以匹配。就像一个SQL表。也许有一个宏可以做到这一点

下面是我想要的结果:

我看不到您的屏幕截图,但我认为这个概念适合您

Option Explicit

'Qual coluna possui os termos que repetem?
Const ANALYSIS_ROW As String = "K"

'Em qual linha começam os dados?
Const DATA_START_ROW As Long = 2

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
也许有一个宏可以做到这一点——当然有:也许你可以编写它。如果你被困住了,我们很可能会在这里帮助你。然而,对于一个特定的编程问题和定义的编程问题,我们无能为力,因为这不是一个为我编写代码的服务站点。