根据单元格值在Excel中插入单元格

时间:2016-09-20 20:46:20

标签: mysql excel vba excel-vba

我正在从活动目录环境中导出大型组的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扩展它以解决其余的值。

3 个答案:

答案 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