【问题标题】:Insert columns in one sheet using a for loop through some sheets使用 for 循环在一些工作表中插入列
【发布时间】:2020-06-08 11:56:58
【问题描述】:

早上好。

我有一张纸,格式如下:

我希望它使用 vba 是这样的:

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

我的工作簿的工作表是:“标题,描述,动物 1,...动物 X,当前工作表”,所以我想要一个计算工作表数量的代码“动物 1,...动物 X”和插入与工作表一样多的列,就像图像中显示的那样,这将是一个只有 3 个工作表的示例。

我知道我必须用 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...”的张数?
  • 是的,有点,我的问题主要是如何插入列,具体取决于我有多少称为“动物...”的工作表。

标签: excel vba copy multiple-columns


【解决方案1】:

这会计算以“Animal”开头的工作表的数量,然后在另一个工作表上插入该数量的列。

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

【讨论】:

  • 是的,谢谢,效果很好!还有一个问题,是否可以在复制这些新列后命名它们的标题?我的意思是像在图像中一样,列 D 和 E 被添加到第二个图像上,并且名称为“Price Animal X”。
  • 以上修改。
  • 是的,就是这样!最后,如果您能提供帮助:例如,单元格“C5”的第一个值是=+'Animal 1'!K2,“C6”是=+'Animal 1'!K3,单元格“D5”的值是否可能是=+'Animal 2'!K2,依此类推全新的列?
  • 我认为这些问题已经足够了,我想是时候提出一个新问题了。
  • 好的,谢谢,如果我觉得我不能得到最后一个,我会做一个新的帖子。
猜你喜欢
  • 2021-04-28
  • 2015-02-13
  • 2022-01-06
  • 1970-01-01
  • 2011-09-29
  • 2018-08-07
  • 2014-09-17
  • 1970-01-01
  • 2021-06-08
相关资源
最近更新 更多