将此单元格拆分为多行

时间:2021-07-19 02:55:14

标签: excel vba

我正在尝试将一些单元格拆分为多行。我目前正在尝试将单元格分成 G 列(见下图,并且)在下面的行中具有所有相同的数据,只是将单元格分成多行。这有可能吗?

从这里开始: enter image description here

并以此结束:

enter image description here

3 个答案:

答案 0 :(得分:0)

如果宏功能正常,这里是示例代码

Sub Split()
  Dim meargedline As String
  Dim rowNumber As Integer
  rowNumber = 2
  Dim splitData

  For i = 2 To 4
   meargedline = Cells(i, 3)
   splitData = VBA.Split(meargedline, Chr(10))

   For j = LBound(splitData, 1) To UBound(splitData, 1)
    Cells(j + rowNumber, 4) = Cells(i, 1)
    Cells(j + rowNumber, 5) = Cells(i, 2)
    Cells(j + rowNumber, 6) = splitData(j)
   Next j
   rowNumber = rowNumber + UBound(splitData, 1) + 1
Next i

enter image description here

答案 1 :(得分:0)

这将执行基本循环并生成输出。请注意常量并确保为您的工作簿指定。 You can see an example of it here

Sub runSplitter()
Const topRightCellAddress = "E20"
Const startCellToSetValues = "A1" 'where new rows will be placed
Const sheetOneName = "Start" 'make sure these match"
Const sheetTwoName = "Output"
Const codeOfLineSplitter = 10 'asci code line splitter


Dim firstSheet As Worksheet, secondSheet As Worksheet
    Set firstSheet = Sheets(sheetOneName)
    Set secondSheet = Sheets(sheetTwoName)

Dim aCell As Range
    Set aCell = firstSheet.Range(topRightCellAddress)

Dim aRR() As String
Dim r As Long
Do While Not IsEmpty(aCell)
    aRR = Split(aCell.Value2, Chr(codeOfLineSplitter), -1)
    
    Dim i As Long
    With secondSheet.Range(startCellToSetValues)
    For i = LBound(aRR) To UBound(aRR)
        
        .Offset(r, 0).Value2 = aCell.Offset(0, -2).Value2
        .Offset(r, 1).Value2 = aCell.Offset(0, -1).Value2
        .Offset(r, 2).Value2 = aRR(i)
        r = r + 1
    Next i
    
    End With
    
    Set aCell = aCell.Offset(1, 0)
Loop

End Sub

答案 2 :(得分:-1)

您可以使用电源查询来实现您想要的目标。点击此处参考 https://www.youtube.com/watch?v=wJ6y2anloW4

相关问题