将列D中的所有值从数量未知的工作表中复制到主工作表中单个值的列A中

时间:2018-07-22 14:25:41

标签: excel vba

这是我关于SO的第一个问题,非常感谢您的直接帮助:

我有一个包含多个工作表的Excel文件。在每个工作表的D列中,我已经基于每一行的动态数据创建了插入SQL语句。现在,我要将在每个工作表的D列中创建的所有插入语句复制到一个大列中,以便可以将它们全部运行到数据库中。

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

要实施:

  1. 创建标题为Master的新工作表
  2. 给单元格A1标头名称
  3. 打开VBE
  4. 插入模块
  5. 按原样将代码复制并粘贴到模块中

代码将:

  1. 遍历每张纸
  2. Col D复制D2 To Last Non-Blank Row中的单元格
  3. 仅在Master中下一个可用的非空白行中的Col A上粘贴值
  4. 所有工作表的第2-3个循环

Option Explicit

Sub MyDearMacro()

Dim ws As Worksheet, Master As Worksheet
Set Master = ThisWorkbook.Sheets("Master")

Dim CopyRange As Range, PasteRange As Range

Application.ScreenUpdating = False
    For Each ws In Worksheets
        If ws.Name <> "Master" Then
            Set CopyRange = ws.Range("D2:D" & ws.Range("D" & ws.Rows.Count).End(xlUp).Row)
            Set PasteRange = Master.Range("A" & Master.Rows.Count).End(xlUp).Offset(1)
            CopyRange.Copy: PasteRange.PasteSpecial xlPasteValues
        End If
    Next ws
Application.ScreenUpdating = True

MsgBox "Please take the tour page of Stack OverFlow and show an attempt to solve on your next post.", vbCritical

End Sub

结束语:

如果您不想重复(如果存在),则需要对此进行修改。如果您的SQL语句没有覆盖复制范围中的每一行,那么您可能还需要对此进行修改(您可能最终用空白单元格分隔了语句)。再说一次,循环完成后,请删除Col A工作表上Master中的空白和重复项。