Excel 如何将行转换为列,并插入行以容纳新行?
我有以下数据集:Excel 如何将行转换为列,并插入行以容纳新行?,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有以下数据集: A B Bob black, brown, blue Jane red, yellow Mary orange 我希望获得以下输出: A B Bob black Bob brown Bob blue Jane red Jane yellow Mary orange 或者,A列中的名称不必重复。我猜我需要将行转换为列,但我在添加额外的行以使数据对齐方面遇到了困难 我们将非常感谢您的帮助。以下是您在VBA中的操作方法: Dim last
A B
Bob black, brown, blue
Jane red, yellow
Mary orange
我希望获得以下输出:
A B
Bob black
Bob brown
Bob blue
Jane red
Jane yellow
Mary orange
或者,A列中的名称不必重复。我猜我需要将行转换为列,但我在添加额外的行以使数据对齐方面遇到了困难
我们将非常感谢您的帮助。以下是您在VBA中的操作方法:
Dim lastRow As Integer, rng As Range
With Sheet1 ' <-- Use the appropriate worksheet.
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = lastRow To 1 Step -1
Set rng = .Range("B" & i)
Dim items() As String
items = Split(rng.Value, ",")
rng.Value = items(0)
For j = 1 To UBound(items)
.Rows(i + j).Insert
rng.Offset(j).Value = Trim$(items(j))
'rng.Offset(j, -1).Value = rng.Offset(0, -1).Value ' <-- Optional
Next j
Next i
End With
花太多的时间在更多的事情上rows@DmitrijHolkin加工10万行需要20秒,生产3万行。显然,可以通过将值复制到数组并一次性将其设置回原来的值来优化它,但这会使事情变得过于复杂,而且我认为OP不可能有那么多行。您可以将范围设置为数组或字典,排序,然后调整大小以显示相同行数所需的时间<20秒