我如何根据行值插入一行,例如 我在单元格中有以下案例
SFF465
SFF465+466
SFF466+467+468+469
SFF469+DFG234
DFG235
DFG236+237+238+239
如果同一单元格中有多个值,我想为第二批插入新行。例如,在第一行中不应该有任何更改,但在第二行中,两个批次都需要分成不同的行。我需要在第二行SFF465
和第三行SFF 466
。因此第二行将仅从SFF465+466
更改为SFF465
。
同样的事情是当前的第三行有四个数字,并希望将它们分别分为当前行下面的SFF466
,SFF467
,SFF468
,SFF469
。 / p>
在第四行,您可以看到两种不同的产品。我想通过在当前第四行的正下方添加另一行来拆分。因此,将当前第四行转换为SFF469
,将第五行转换为DFG234
。
所需格式为
SFF465
SFF465
SFF466
SFF466
SFF467
SFF468
SFF469
SFF469
DFG234
DFG235
DFG236
DFG237
DFG238
DFG239
提前致谢。
我使用相对引用编写代码并使用If Then
和Do While
循环修改它们。
Sub Vcpy()
' ' Vcpy Macro
If ActiveCell.Value <> Empty Then
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 4).Range("A1").Select
Selection.Copy
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveSheet.Paste Application.CutCopyMode = False
ActiveCell.Offset(1, 1).Range("A1").Select
Loop
End If
End Sub
答案 0 :(得分:0)
我不知道如何使你的代码工作,但我有一个不同的解决方案。验证您给定的示例数据集。
Sub RowSplitter()
Dim rng As Range
Dim arr() As String
Dim str As String
Set rng = Range("A1")
Do While (rng.Value <> "")
' Determine if we need to split
If Len(rng.Value) > 6 Then
' Split values into an array
arr() = Split(rng.Value, "+")
For i = 1 To UBound(arr())
str = ""
' Insert row
rng.Offset(i).Insert Shift:=xlDown
' Calculate string to insert from array
If Len(arr(i)) < 4 Then str = Left(arr(0), 3)
str = str & arr(i)
' Enter value from array
rng.Offset(i).Value = str
Next i
rng.Value = arr(0)
End If
Set rng = rng.Offset(1)
Loop
End Sub