我正在从活动目录环境中导出大型组的CSV。其中许多组都有大量的嵌套,我需要插入单元格,以便工作表是人类可读的。
例如我的工作表看起来像这样: WS示例
Int用户路径
0 User1 CN
0 User2 CN
1 User3 CN
1 User4 CN
0 User5 CN
1 User6 CN
2 User7 CN
我正在寻找帮助调整VBA脚本的帮助,该脚本从第一列读取整数值,并在该列的左侧插入相应数量的单元格。约束是列表不能更改行的顺序以保留嵌套结构。
这是我到目前为止在VBA中所拥有的
intersectionWith
目前,此代码段会计算列中1的数量,并在列表顶部插入一个新行。我相信我的逻辑中的错误在If语句中,一旦我解决了,我知道我可以使用ElseIf扩展它以解决其余的值。
答案 0 :(得分:0)
这样做。该问题看起来像是Rows(Cells(i, 1).Column).Insert shift:=xlShiftRight
行。如果你打破了它,它计算如下:
Cells(i,1).Column
等于1,因为.Cells(i,1)
的列为1。
Rows(1)
1
来自上述内容。所以Rows(1)
是1。
无论您为shift指定了什么,Rows(1).Insert
都会在第1行上方插入。
Sub test()
Dim d As Integer
d = Range("A:A").End(xlDown).row
Dim c As Range
For i = d To 1 Step -1
If Cells(i, 1).Value Like "1" Then
Cells(i, 1).Insert shift:=xlToRight
End If
Next
End Sub
答案 1 :(得分:0)
这应该这样做。
Sub test()
Dim d As Integer
d = Range("A:A").End(xlDown).Row
Dim c As Range
For i = d To 1 Step -1
aMove = Val(Cells(i, 1))
If aMove > 0 Then
Range(Cells(i, 1), Cells(i, aMove)).Insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next
End Sub
答案 2 :(得分:0)
有很多方法可以做到这一点,但是通过使用columnA中的数字来定义要插入的单元格数量,你可以像这样做第二个循环:
Private Sub CommandButton1_Click()
Dim x, d, i As Integer
With ActiveSheet
d = .Range("A:A").End(xlDown).Row
For x = 2 To d
i = .Cells(x, 1).Value
For a = 1 To i
.Cells(x, 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Next a
Next x
End With
End Sub