Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中

这篇具有很好参考价值的文章主要介绍了Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们有一张表里面有很多sheet 具有相同的表结构,如果需要汇总到一张表中,那么我们可以借助VBA 去实现汇总自动化

示例1 :
Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中,VBA _ Excel & PPT,excel,VBA

Sub 复制所有工作表内容()
    Dim ws As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    
    ' 设置目标表格,即要将所有工作表内容复制到的表格
    Set targetSheet = ThisWorkbook.Sheets("汇总")
    
    ' 清除目标表格中已有的数据
    targetSheet.Rows("2:1000000").Clear
    
    ' 添加目标表格的表头
    targetSheet.Range("A1:C1").Value = ThisWorkbook.Sheets("汇总").Range("A1:C1").Value
    
    ' 循环遍历每个工作表
    For Each ws In ThisWorkbook.Sheets
        ' 排除指定的工作表
        If ws.Name <> "汇总" Then
            ' 获取源工作表最后一行的行号
            lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
            
            ' 复制源工作表的 A 到 M 列内容到目标表格中的下一行
            ws.Range("A2:M" & lastRow).Copy targetSheet.Cells(targetSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1, "A")
        End If
    Next ws
    
    MsgBox "所有工作表内容已复制到目标表格中!", vbInformation
End Sub

运行结果如下:
Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中,VBA _ Excel &amp; PPT,excel,VBA
示例2 :
如下图所示
汇总的时候需要插入一个新列,填入各个sheetname ;
各个sheet 有合并单元格,汇总之后需要拆分合并单元格并填充空白单元格;
各个sheet 由几个单独表格组成,并且表格之间有Note 和空白行,汇总之后需要删除这些note 或者空白行
Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中,VBA _ Excel &amp; PPT,excel,VBA文章来源地址https://www.toymoban.com/news/detail-661347.html

Sub 复制所有工作表内容()
    Dim ws As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim rng  As Range
    Dim cell As Range
    Dim deleteRange As Range
    Dim i As Integer




    ' 设置目标表格,即要将所有工作表内容复制到的表格
    Set targetSheet = ThisWorkbook.Sheets("Sheet1")
    
    ' 清除目标表格中已有的数据
    targetSheet.Rows("2:1048000").Select
    Selection.Delete Shift:=xlUp

    
    ' 添加目标表格的表头

    Sheets("全国").Select
    Range("E2:AU2").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("F1:AV1").Select
    ActiveSheet.Paste
    
    ' 循环遍历每个工作表
    For Each ws In ThisWorkbook.Sheets
        ' 排除指定的工作表
        If ws.Name <> "Sheet1" Then
            ' 获取源工作表最后一行的行号
            lastRow = ws.Cells(1048000, "D").End(xlUp).Row
        sheetName = ws.Name
        ws.Columns(1).Insert Shift:=xlToRight '在第一列之前插入新的一列
        
        '将对应的工作表名称填充到新插入的列中
        ws.Range("A3:A" & lastRow).Value = sheetName
        
        
            ' 复制源工作表的 A 到 AU 列内容到目标表格中的下一行
           ws.Range("A3:AV" & lastRow).Copy targetSheet.Cells(targetSheet.Cells(1048000, "E").End(xlUp).Row + 1, "A")
         End If
    Next ws
    
 
    Set ws = ThisWorkbook.Worksheets("Sheet1")
   lastRow = ws.Cells(1048000, "A").End(xlUp).Row
    Set rng = ws.Range("B2:AV" & lastRow)
    
    
    
    For Each cell In rng
        If InStr(1, cell.Value, "Note", vbTextCompare) > 0 Then
            If deleteRange Is Nothing Then
                Set deleteRange = cell.EntireRow
            Else
                Set deleteRange = Union(deleteRange, cell.EntireRow)
            End If
        End If
    Next cell
    
    
        For Each cell In rng
        If InStr(1, cell.Value, "销售额", vbTextCompare) > 0 Then
            If deleteRange Is Nothing Then
                Set deleteRange = cell.EntireRow
            Else
                Set deleteRange = Union(deleteRange, cell.EntireRow)
            End If
        End If
    Next cell
    
            For Each cell In rng
        If InStr(1, cell.Value, "Jan", vbTextCompare) > 0 Then
            If deleteRange Is Nothing Then
                Set deleteRange = cell.EntireRow
            Else
                Set deleteRange = Union(deleteRange, cell.EntireRow)
            End If
        End If
    Next cell

    If Not deleteRange Is Nothing Then
        deleteRange.Delete
    End If



    '删除空白的整行
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row '获取最后一行的行号

 
 

    Set rng = ws.Range("A2:AV" & lastRow) '替换为你要操作的区域范围
    

      For i = lastRow To 1 Step -1
          If Application.WorksheetFunction.CountA(rng.Rows(i)) = 1 Then
             rng.Rows(i).Delete
          End If
      Next i
      
   

 Dim m As Integer
 Dim n As Integer
 
 

  For i = 1 To lastRow
      '判断该单元格是否是合并单元格
       If Cells(i, 2).MergeCells = True Then
          m = Cells(i, 2).MergeArea.Count
          n = Cells(i, 2).MergeArea.Rows.Count
          '记录合并单元格的个数
          Range(Cells(i, 2), Cells(i + m - 1, 2)).UnMerge      '拆分单元格
          
          Range(Cells(i, 2), Cells(i + m - 1, 2)).FillDown       '填充单元格

          i = i + m - 1
          
      End If
 Next
 
 
 
 For i = 1 To lastRow
      '判断该单元格是否是合并单元格
       If Cells(i, 3).MergeCells = True Then
          m = Cells(i, 3).MergeArea.Count
          n = Cells(i, 3).MergeArea.Rows.Count
          '记录合并单元格的个数
          Range(Cells(i, 3), Cells(i + m - 1, 3)).UnMerge      '拆分单元格
          If m > 1 And n > 1 Then
          Range(Cells(i, 3), Cells(i + m - 1, 3)).FillDown       '填充单元格
          End If
          i = i + m - 1
          
      End If
 Next
 

  
    
 
    
    MsgBox "所有工作表内容已复制到目标表格中!", vbInformation
End Sub

到了这里,关于Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Excel·VBA合并工作簿2

    其他合并工作簿的方法,见之前的文章《Excel·VBA合并工作簿》 与之前的文章《Excel·VBA合并工作簿(3,合并文件夹下所有工作簿中所有工作表)》类似,但是按照表头名称,将表格数据汇总至合并表格,表头名称相同的在同一列 举例 共5个工作簿13个工作表,并且改变了C、

    2024年01月21日
    浏览(41)
  • PowerPoint VBA: 一键雅黑——一键将PPT所有内容改为微软雅黑字体

    用Office PowerPoint制作幻灯片时,微软雅黑是一款视觉效果较好的字体,而且所有Office都预置了该字体,不用担心字体未安装的情况。如何一键修改PPT所有内容的字体为“微软雅黑”?这里分享一个VBA小工具。

    2024年02月03日
    浏览(73)
  • VBA:Application.GetOpenFilename打开指定文件夹里的excel类型文件(xls、xlsx)

    \\\'GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。 \\\'Application.GetOpenFilename(“文件类型筛选规则(就是说明)”,“优先显示第几个类型的文件”,“标题”,“是否允许选择多个文件名”) 打开类型只限excel文件 \\\'“文件类型

    2024年02月11日
    浏览(48)
  • excel vba 将多张数据表的内容合并到一张数据表

    功能描述:  一个Excel文件有很多个 样式相同 的数据表, 需要将多张数据表的内容合并到一张数据表里。 vba实现代码如下:  文件链接:数据表合并.bas 下载后直接在excel 查看代码处导入文件即可。

    2024年02月11日
    浏览(45)
  • uni-app点击复制指定内容(点击复制)

    uni.setClipboardData(OBJECT)

    2024年02月09日
    浏览(41)
  • linux 根据指定内容搜索所有文件

    在Linux中,你可以使用 grep 命令来搜索包含指定内容的文件。 grep 命令用于在文件中搜索指定的模式,并将匹配的行打印出来。 下面是使用 grep 命令搜索所有文件的示例: 在上面的命令中, -r 选项表示递归地搜索目录下的所有文件, \\\"指定内容\\\" 是你要搜索的内容, /path/to

    2024年02月14日
    浏览(50)
  • VBA:按照Excel工作表中的名称列自动汇总多个工作薄中对应sheet中所需要的数据

    需求如下: B列为产品名为合并单元格,C列为供应商名,G、H列为金额数据; 数据源放在同一个文件夹内,B列产品名来源于工作薄名称中间的字符串,C列供应商名来源于工作薄中的sheet名; G、H列金额数据来源于工作薄中sheet中固定单元格P25:Q25的数值; 根据B列产品名自动打

    2024年02月11日
    浏览(40)
  • python遍历文件夹下的所有子文件夹,并将指定的文件复制到指定目录

    在1文件夹中有1,2两个文件夹 将这两个文件夹中的文件复制到 after_copy中 源文件 复制后: 参考1 源文件 复制后 参考2 如果复制bmp文件就将 suffix = \\\".json\\\" 改为 suffix = \\\".bmp\\\"

    2024年02月11日
    浏览(91)
  • Python-pdfplumber读取PDF所有内容并自行提取指定内容

    🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:一晌小贪欢的博客主页 👍 该系列文章专栏:Python办公自动化专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 ❤️ 欢迎各位佬关注! ❤️ 最近接到一个需求

    2024年02月15日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包