【问题标题】:Create copies of original workbook inputting new data from list创建原始工作簿的副本,从列表中输入新数据
【发布时间】:2015-12-21 20:51:54
【问题描述】:

尝试复制我的原始工作表,但对于列表/数组中的多个项目使用不同的数据。

我的原始工作表的格式设置为引用数据数组工作表中的单元格。

例如

TEST TIME Output1 Output2

   A        3         5           9  
   .        .         .           .
   .        .         .           .
   .        .         .           .
   Z        2         9           4

上面将类似于我的数据数组工作表,我会将单元格引用到格式化的工作表。最终结果将是 26 个名为 A 测试、B 测试、...和 ​​Z 测试的工作表。

有没有办法一遍又一遍地复制工作表,在数组中创建新的参考单元格?

我有什么:

Sub AddSheets()
Dim cell As Excel.Range
Dim SCHPipe As Excel.Worksheet
Dim MacroTBF1 As Excel.Workbook

Set SCHPipe = ActiveSheet
Set MacroTBF1 = ActiveWorkbook
For Each cell In SCHPipe.Range("B12:B15")
    With MacroTBF1
   .Sheets("OriginalTBF").Copy after:=.Sheets(.Sheets.Count)
   End If

Next cell
End Sub

我不知道如何将数据引用到正在创建的每个工作表。这不断收到无效的错误消息。

【问题讨论】:

  • 是的,您绝对可以使用宏来做到这一点。您尝试过什么,具体是什么给您带来了困难?
  • 我在使用 VBA 时断断续续,所以我的编码从来都不好。但是我无法弄清楚如何循环遍历一组数据。二、将单元格引用到新创建的工作表。
  • 另外,我的意思是说我的数据在“Output1”列中,对于列中的每个值,它将进入一个单独的工作表但在同一个单元格中(如 B24... )。我正在尝试做与此人示例类似的事情...stackoverflow.com/questions/21311844/…

标签: excel vba


【解决方案1】:

类似这样,您需要调整数据和模板表的布局:

Sub AddSheets()
    Dim cell As Range
    Dim SCHPipe As Worksheet, shtOrig As Worksheet
    Dim MacroTBF1 As Workbook, shtNew As Worksheet


    Set SCHPipe = ActiveSheet
    Set MacroTBF1 = ActiveWorkbook
    Set shtOrig = MacroTBF1.Sheets("OriginalTBF")


    For Each cell In SCHPipe.Range("B12:B15")

        If cell.Value <> "" Then

            shtOrig.Copy after:=MacroTBF1.Sheets(MacroTBF1.Sheets.Count)
            Set shtNew = MacroTBF1.Sheets(MacroTBF1.Sheets.Count)

            With shtNew
                .Name = cell.Value & " Test"
                .Range("A1").Value = cell.Value
                .Range("A2").Value = cell.Offset(0, 1).Value
                .Range("D49").Value = IIf(cell.Offset(0, 1).Value = "-", _
                                          cell.Offset(0, 5).Value, "")
            End With
        End If

    Next cell
End Sub

【讨论】:

  • 它正在工作! (谢谢)我只需要每张工作表名称的 B 列值。(哪个 .Name = cell.Value & " 测试执行?)我正在尝试更改 .Range("A1").Value = cell.Value ** 和 ** .Range("A1").Value = cell.Offset(0,1).Value** 部分但没有运气。如果我想在 shtOrig 中使用不同的值,我该怎么做?说我想要单元格 F12,它会是 ** =cell.Offset(0,4)** (来自 B12)吗?
  • 是的,如果你想要 F12,那是在同一行上从 B12 开始的四列(所以第一个参数为零)
  • 我试图在 (.Range("A2").Value = Cell.Offset(0,1).Value.) 下放置一个 IF 语句,如果 shtOrig 中的单元格 C12 等于“-”然后将 G12 放在新工作表的 D49 中的 shtOrig 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多