使用 for 循环通过一些 sheet 将列插入一个 sheet

Insert columns in one sheet using a for loop through some sheets

早上好。

我有一个 sheet 格式如下:

我希望它像这样使用 vba:

所以我的问题是以下一个。我想获得一个 vba 代码,插入如图所示的列,例如,如果我有“3 只动物”,我必须在第一个图像的 C 列和 D 列之间插入 D 列和 E 列. 我的工作簿在这个名为 Animal 1 之前有一个 sheet,但我可以有任意多的 sheet,"Animal 2, Animal 3, Animal 4, ...",问题是我不知道我要多少工作前有。所以我想要一个 vba 代码,它获取此 sheet 之前的 sheet 的数量,并插入与我将拥有的 sheet 一样多的列。

我的工作簿的 sheets 将是:"Title, Description, Animal 1, ... Animal X, CurrentSheet",所以我想要一个代码来计算 sheets "Animal 1, ... Animal X" 的数量并插入尽可能多的列因为有 sheets,就像图像中显示的那样,它是一个只有 3 sheets 的例子。

我知道我必须用 for 循环来做,但我找不到解决它的方法,抱歉我是 vba 的新手。

非常感谢您的回答,有什么不明白的可以问我。

PS:我正在使用这样的代码:

        Dim NumSheet As Long
        Dim I As Long

        NumSheet = ThisWorkbook.Worksheets.Count - 4 '4 sheets that I don't want to use for the columns insertion

        For I = 1 To NumSheet

            Columns("D:D").Select
            Selection.Insert Shift:=xlToRight

        Next I

这会计算以 "Animal" 开头的 sheet 的数量,然后将该数量的列插入另一个 sheet。

Sub x()

Dim ws As Worksheet, nCount As Long, i As Long

For Each ws In Worksheets
    If ws.Name Like "Animal*" Then nCount = nCount + 1
Next ws

With Sheets("Sheet4")
    .Columns("D:D").Resize(, nCount).Insert Shift:=xlToRight
    For i = 1 To nCount
        .Cells(1, i + 3).Value = "Price Animal " & i
    Next i
End With

End Sub