我正在从活动目录环境中导出大型组的CSV。这些组中的许多组都有大量的嵌套,因此我需要插入单元格,以便工作表易于阅读。

例如,我的工作表如下所示:
WS示例


  诠释用户路径
  
  0用户1 CN
  
  0用户2 CN
  
  1个用户3 CN
  
  1个用户4 CN
  
  0用户5 CN
  
  1个用户6 CN
  
  2用户7 CN


我正在寻找适应性的VBA脚本的帮助,该脚本从第一列读取整数值,并在该特定行的列左侧插入相应数量的单元格。约束是列表不能更改行的顺序以保留嵌套结构。

到目前为止,这是我在VBA中拥有的

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
  Rows(Cells(i, 1).Column).Insert shift:=xlShiftRight
   End If
  Next
End Sub


当前,此代码段从该列开始计数1,并在列表顶部插入一个新行。我相信我逻辑中的错误是在If语句内,一旦解决了这个问题,我就知道可以使用ElseIf扩展它来解决其余的值。

最佳答案

这样就可以了。问题似乎在Rows(Cells(i, 1).Column).Insert shift:=xlShiftRight行中。如果将其分解,则其计算如下:

Cells(i,1).Column等于1,因为.Cells(i,1)的列为1。
Rows(1) 1来自上面。所以Rows(1)是1。
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

关于mysql - 根据单元格值在Excel中插入单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39603440/

10-13 08:06