【问题标题】:Collect data from multiple worksheets in one new sheet在一张新工作表中收集来自多个工作表的数据
【发布时间】:2020-09-22 09:19:16
【问题描述】:

我正在尝试将 AG1 列中的数据附加到一个新工作表中的多个工作表中。
(例如:工作表 1 到 A 列,工作表 2 到 B 列等)。

Sub Macro1()
'
' Macro1 Macro
'

'
    Sheet1.Activate
    Range("AG2:AG5000").Select
    Selection.Copy
    Sheets("Try").Select
    Range("A1").Select
    ActiveSheet.Paste
    
    Sheets2.Activate
    Range("AG2:AG5000").Select
    Selection.Copy
    Sheets("Try").Select
    Range("B1").Select
    ActiveSheet.Paste
End Sub

到目前为止,我只能使用“录制宏”中的宏。


问题是:
(1)张数总是不同,
(2) 每张纸的名字总是不同的。

【问题讨论】:

  • 你试过什么?请在您的问题中包含您迄今为止提出的代码。
  • “到新工作表中的一行”与“工作表 1 到 A 列,...”不匹配。你想要什么“组合”?行还是列?这个“合并”是否意味着复制新工作表中的每一列?
  • @braX 对不起,忘记输入我的代码
  • @FaneDuru 我的错,对不起
  • @FaneDuru 也许正确的词是“收集”。是的,我尝试在工作表“尝试”中复制所有现有工作表的 1 个范围。也许我必须先了解宏,然后再在这里提出问题,但我不知道我想做什么

标签: excel vba


【解决方案1】:

试试下面的代码。

Sub CopyFromMultiple()
Dim sh As Worksheet
Dim pColumn As Long

pColumn = 1
    
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Try" Then
            sh.Range("AG2:AG5000").Copy Sheets("Try").Cells(1, pColumn)
            pColumn = pColumn + 1
        End If
    Next

End Sub

【讨论】:

    【解决方案2】:

    请尝试下一个方法:

    Sub testCollectingColData()
     Dim sh As Worksheet, shTr As Worksheet, arr As Variant, colNo As Long
     
     Set shTr = Worksheets("Try")
     For Each sh In ActiveWorkbook.Sheets
        If sh.Name <> shTr.Name Then
            colNo = colNo + 1
            arr = sh.Range("AG2:AG5000").Value
            shTr.Range(shTr.cells(1, colNo), shTr.cells(5000 - 1, colNo)).Value = arr
        End If
     Next
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多