VBA汇总

第一、将多张工作表中的数据合并到一张工作表中

Sub hebing()  '把各班成绩表中的记录合并到"成绩表"工作表中
    Dim sht As Worksheet
    Set sht = Worksheets("成绩表")
    
    sht.Rows("2:65536").Clear      '删除成绩表中的原有记录
    
    Dim wt As Worksheet, xrow As Integer, rng As range
    
    For Each wt In Worksheets                   '循环处理宏所在工作簿中的每张工作表
    
        If wt.Name <> "成绩表" Then
        '如果要执行的sheet名不为成绩表则执行以下语句,即不是成绩表的工作表顺序执行
        
            Set rng = sht.range("A1048576").End(xlUp).Offset(1, 0)
            '找到成绩表A列第一个空单元格
            'Range("A1048576")代表A列最后一行
            'End(xlUp)代表A列最后一个非空单元格
            'Offset(1, 0)代表最后一个非空单元格向下一行即第一个空单元格
            
            xrow = wt.range("A1").CurrentRegion.Rows.Count - 1
            'xrow等于-选中sheet的A1在内的一个连续的矩形区域的行数-1
            
            wt.range("A2").Resize(xrow, 7).Copy rng
            '然后,将该sheet的A2单元格扩展为xrow行7列的单元格区域,将以上区域复制到rng单元格的位置
            
        End If    
    Next  
end sub

第二、将多个工作簿中的数据合并到同一张工作表中

Sub HzWb()
    Dim bt As Range, r As Long, c As Long
    r = 1                                       '1 是表头的行数
    c = 7                                       '7 是表头的列数
    Dim wt As Worksheet
    Set wt = ThisWorkbook.Worksheets(1)         '将汇总表赋给变量wt
    
    wt.Rows(r + 1 & ":1048576").ClearContents   '清除汇总表中原表数据,只保留表头
    
    Application.ScreenUpdating = False
    
    Dim FileName As String, sht As Worksheet, wb As Workbook
    Dim Erow As Long, fn As String, arr As Variant
    FileName = Dir(ThisWorkbook.Path & "\*.xlsx")
    
    Do While FileName <> ""
    
        If FileName <> ThisWorkbook.Name Then                  ' 判断文件是否是汇总数据的工作簿
            Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1 ' 取得汇总表中第一条空行行号
            fn = ThisWorkbook.Path & "\" & FileName            ' 将第1个要汇总的工作簿名称赋给变量fn
            Set wb = GetObject(fn)                             ' 将变量fn 代表的工作簿对象赋给变量wb
            Set sht = wb.Worksheets(1)                         ' 将要汇总的工作表赋给变量sht
                                                               ' 将工作表中要汇总的记录保存在数组arr里
            arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(1048576, "B").End(xlUp).Offset(0, 5)) ' 将数组arr 中的数据写入工作表
            wt.Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
            wb.Close False
        End If
        
        FileName = Dir                            ' 用Dir 函数取得其他文件名,并赋给变量
        
    Loop
    
    Application.ScreenUpdating = True
    
End Sub


第三、将工作簿中的每张工作表都保存为单独的工作簿文件

Sub HzWb()
    Dim bt As Range, r As Long, c As Long
    r = 1                                       '1 是表头的行数
    c = 7                                       '7 是表头的列数
    Dim wt As Worksheet
    Set wt = ThisWorkbook.Worksheets(1)         '将汇总表赋给变量wt
    
    wt.Rows(r + 1 & ":1048576").ClearContents   '清除汇总表中原表数据,只保留表头
    
    Application.ScreenUpdating = False
    
    Dim FileName As String, sht As Worksheet, wb As Workbook
    Dim Erow As Long, fn As String, arr As Variant
    FileName = Dir(ThisWorkbook.Path & "\*.xlsx")
    
    Do While FileName <> ""
    
        If FileName <> ThisWorkbook.Name Then                  ' 判断文件是否是汇总数据的工作簿
            Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1 ' 取得汇总表中第一条空行行号
            fn = ThisWorkbook.Path & "\" & FileName            ' 将第1个要汇总的工作簿名称赋给变量fn
            Set wb = GetObject(fn)                             ' 将变量fn 代表的工作簿对象赋给变量wb
            Set sht = wb.Worksheets(1)                         ' 将要汇总的工作表赋给变量sht
                                                               ' 将工作表中要汇总的记录保存在数组arr里
            arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(1048576, "B").End(xlUp).Offset(0, 5)) ' 将数组arr 中的数据写入工作表
            wt.Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
            wb.Close False
        End If
        
        FileName = Dir                            ' 用Dir 函数取得其他文件名,并赋给变量
        
    Loop
    
    Application.ScreenUpdating = True
    
End Sub


  • 15
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
报价单 VBA 汇总是指利用 VBA(Visual Basic for Applications)编程语言来对报价单进行汇总和处理。具体可以分为以下几个步骤: 1. 打开报价单:首先,使用 VBA 代码打开报价单文件,可以是 Excel 或其他格式的文件。 2. 读取数据:接下来,通过 VBA 代码读取报价单中的数据,包括产品名称、价格、数量等信息,可以通过循环和条件判断等方式逐行读取数据。 3. 数据处理:在读取数据的过程中,可以进行一些数据处理操作,例如合并相同产品的报价信息,计算总价、平均价或其他统计数据等。 4. 汇总报表生成:根据需要,可以使用 VBA 代码生成汇总报表,将处理后的结果呈现出来。可以是以表格形式的报表,也可以是图表或其他形式的报表。 5. 自动化操作:除了汇总报表生成外,还可以利用 VBA 代码实现其他自动化操作,例如自动填充某些数据,自动调整格式,自动保存汇总报表等。 6. 错误处理:在编写 VBA 代码时,还要考虑到可能出现的错误情况,例如数据读取错误、报价单格式不符等。可以使用错误处理语句来处理异常情况,以保证代码的健壮性和稳定性。 总的来说,报价单 VBA 汇总是利用 VBA 编程语言对报价单进行读取、处理和汇总的过程。通过编写相应的代码,可以实现数据处理、报表生成和自动化操作等功能,提高工作效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值