使用excel中的VBA合并多个excel文件

需求是这样的:
在Windows下,用excel文件让多个小组填写了统计信息,现在我需要把收集的多个文件汇总到一个文件中,前三行为标题可以忽略,第四行为收集信息的列名,处理每一行数据的时候,发现某一行的第一列为空将不再复制处理本文件中下面的行。
在office的Excel中视图下面的宏中,创建一个新的宏,并命名为ConsolidateExcelFiles,

Sub ConsolidateExcelFiles()
    Dim FolderPath As String
    Dim FileName As String
    Dim wbSource As Workbook
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim LastRow As Long
    Dim DestRow As Long
    Dim i As Long
    Dim fd As FileDialog
    Dim FirstFile As Boolean
    Dim HeaderRow As Long
    Dim StartRow As Long

    ' 使用文件对话框选择文件夹路径
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    fd.Title = "选择要合并的文件所在的文件夹"
    If fd.Show = -1 Then
        FolderPath = fd.SelectedItems(1) & "\"
    Else
        MsgBox "未选择文件夹,操作取消。"
        Exit Sub
    End If

    ' 询问用户列名所在的行号
    HeaderRow = Application.InputBox("请输入列名所在的行号:", Type:=1)
    If HeaderRow < 1 Then
        MsgBox "无效的行号,操作取消。"
        Exit Sub
    End If

    ' 创建一个新的工作簿用于汇总
    Set wsDest = ThisWorkbook.Sheets(1)
    DestRow = 1
    FirstFile = True

    ' 获取文件夹中的第一个文件
    FileName = Dir(FolderPath & "*.xls*")

    ' 遍历文件夹中的所有文件
    Do While FileName <> ""
        ' 打开源工作簿
        Set wbSource = Workbooks.Open(FolderPath & FileName)
        Set wsSource = wbSource.Sheets(1)

        ' 找到源工作表的最后一行
        LastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row

        ' 如果是第一个文件,复制列名
        If FirstFile Then
            wsSource.Rows(HeaderRow).Copy wsDest.Rows(DestRow)
            DestRow = DestRow + 1
            FirstFile = False
        End If

        ' 从列名行的下一行开始复制数据
        StartRow = HeaderRow + 1
        For i = StartRow To LastRow
            ' 如果第一列为空,则停止处理该文件
            If IsEmpty(wsSource.Cells(i, 1).Value) Then Exit For

            ' 复制数据到目标工作表
            wsSource.Rows(i).Copy wsDest.Rows(DestRow)
            DestRow = DestRow + 1
        Next i

        ' 关闭源工作簿
        wbSource.Close SaveChanges:=False

        ' 获取下一个文件
        FileName = Dir
    Loop

    MsgBox "汇总完成!"
End Sub

这里的VBA脚本通过文件夹选择的方式来选择要合并哪个文件夹下面的Excel文件
在这里插入图片描述
然后输入收集信息表中列名所在的行数:
在这里插入图片描述
最后合并的文件中只会记录一行列名,后面其他重复的列名将会被忽略掉:
在这里插入图片描述

如果需要经常使用,可以将此包含宏的Excel保存为一个xlsm格式的文件,方便后续的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975729.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法】2022年第十三届蓝桥杯大赛软件类省赛Java大学C组真题

个人主页&#xff1a;NiKo 算法专栏&#xff1a;算法设计与分析 目录 题目 2680:纸张尺寸 题目 2664:求和 题目 2681: 矩形拼接 题目 2665: 选数异或 题目 2682: GCD 题目 2667: 青蛙过河 题目 2683: 因数平方和 题目 2668: 最长不下降子序列 题目 2680:纸张尺寸 题目…

2025雅森北京展今天开幕,全景展现新能源汽车时代

推动汽车后市场全产业链向新向优转型升级 在2月21日举行的第36届中国国际汽车服务用品及设备展览会&#xff0c;中国国际新能源汽车技术、零部件及服务展览会&#xff08;雅森北京展CIAACE&#xff09;上&#xff0c;雅森国际总裁谢宇表示&#xff0c;当前正处在汽车行业新旧动…

PHP.INI的作用以及如何设置

php.ini是网站服务器上的一个重要配置文件&#xff0c;它包含了决定PHP运行环境特性的关键设置&#xff0c;直接关系到网站能否顺畅运行。每次 PHP 启动时&#xff0c;系统都会读取这个文件&#xff0c;加载相应的配置并将其应用到网站的脚本上。 尽管服务器通常预装了一些默认…

新版IDEA配置 Tomcat

配置tomcat 先检查自己的tomcat是否已经安装完成以及是否有其他问题&#xff0c;这里不对Tomcat方面的问题进行讲解。 新版IDEA需要在已有项目中添加Web部分的项目结构。 安装完成之后&#xff0c;打开要创建Web项目的项目(这里演示使用新建项目) 第一步&#xff0c;先给项…

整理好的java面试八大常用算法

原创不易&#xff0c;如果有转载需要的话&#xff0c;请在首行附上本文地址&#xff0c;谢谢。 文中整理了八大常见的排序算法&#xff0c;冒泡排序、选择排序、快速排序、插入排序、堆排序、希尔排序、归并排序和基数排序的简单思想&#xff0c;每种算法配有动图分析和相应的…

Baklib智能平台:数据驱动下的企业知识安全与协作

内容概要 在数字化转型加速渗透的今天&#xff0c;企业知识资产的智能化管理与安全防护已成为核心竞争力构建的关键环节。Baklib作为新一代知识中台&#xff08;Knowledge Hub&#xff09;的典型代表&#xff0c;以数据驱动技术为核心引擎&#xff0c;重构了企业知识管理的底层…

深度学习-7.超参数优化

Deep Learning - Lecture 7 Hyperparameter Optimization 简介超参数搜索用于超参数选择的贝叶斯优化启发性示例贝叶斯优化 引用 本节目标&#xff1a; 解释并实现深度学习中使用的不同超参数优化方法&#xff0c;包括&#xff1a; 手动选择网格搜索随机搜索贝叶斯优化 简介 …

【漫画机器学习系列】102.带泄露线性整流函数(Leaky ReLU)

Leaky ReLU&#xff08;带泄露线性整流函数&#xff09;详解 1. 什么是 Leaky ReLU&#xff1f; Leaky ReLU&#xff08;带泄露线性整流函数&#xff09;是一种改进的 ReLU&#xff08;Rectified Linear Unit&#xff0c;线性整流单元&#xff09;激活函数。与标准 ReLU 不同…

GeoHD - 一种用于智慧城市热点探测的Python工具箱

GeoHD - 一种用于智慧城市热点探测的Python工具箱 详细原理请参考&#xff1a;Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137. 代码下载&#xff1a;下载 1. 简介 在城市数据…

Github 2025-02-23 php开源项目日报 Top9

根据Github Trendings的统计,今日(2025-02-23统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目9JavaScript项目2Shell项目1TypeScript项目1Blade项目1Java项目1ASP项目1Vue项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:…

使用大语言模型(Deepseek)构建一个基于 SQL 数据的问答系统

GitHub代码仓库 架构 从高层次来看&#xff0c;这些系统的步骤如下&#xff1a; 将问题转换为SQL查询&#xff1a;模型将用户输入转换为SQL查询。 执行SQL查询&#xff1a;执行查询。 回答问题&#xff1a;模型根据查询结果响应用户输入。 样本数据 下载样本数据&#xf…

AI学习之-阿里天池

阿里天池&#xff08;Tianchi&#xff09;是阿里巴巴集团旗下的一个数据科学与人工智能竞赛平台&#xff0c;致力于推动数据科学和人工智能的发展。在天池平台上&#xff0c;人们可以参与各种数据竞赛和挑战&#xff0c;解决实际问题&#xff0c;提升数据科学技能。天池平台提供…

数据库管理-第295期 IT架构与爆炸半径(20250221)

数据库管理295期 2025-02-21 数据库管理-第295期 架构与爆炸半径&#xff08;20250221&#xff09;1 术语新解2 硬件&#xff1a;存储VS本地盘3 数据库3.1 多模VS专用3.2 集中式VS分布式 4 公有云VS非公有云总结 数据库管理-第295期 架构与爆炸半径&#xff08;20250221&#x…

嵌入式 Linux:使用设备树驱动GPIO全流程

文章目录 前言 一、设备树配置 1.1 添加 pinctrl 节点 1.2 添加 LED 设备节点 二、编写驱动程序 2.1 驱动程序框架 2.2 编译驱动程序 三、测试 总结 前言 在嵌入式 Linux 开发中&#xff0c;设备树&#xff08;Device Tree&#xff09;和 GPIO 子系统是控制硬件设备的重要工具…

w803|联盛德|WM IoT SDK2.X测试|pinout|(2):w803开发板简介

概述 W803-Pico是一款基于联盛德W803芯片为主控的开发板&#xff0c;支持IEEE802.11 b/g/n Wi-Fi&#xff0c;以及BT/BLE4.2协议蓝牙。芯片内置高性能32位处理器&#xff0c;主频高达240MHz。内置2MB Flash以及288KB RAM。硬件采用DIP封装&#xff0c;PCB板载天线&#xff0c;…

网络安全之探险

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 因为工作相关性&#xff0c;看着第三方公司出具的网络安全和shentou测试报告就想更深入研究一下&#xff0c;于是乎开始探索网络安全方面的知识&#xff0c;度娘、…

Seata1.5.2学习(二)——使用分布式事务锁@GlobalLock

目录 一、创建数据库 二、配置consumer-service 1.pom.xml 2.application.properties 3.启动类 4.其他代码 三、配置provider-service 1.pom.xml 2.application.properties 3.启动类 4.其他代码 四、分布式事务问题演示与解决办法 (一)分布式事务问题演示 (二)…

2024信息技术、信息安全、网络安全、数据安全等国家标准合集共125份。

2024信息技术、信息安全、网络安全、数据安全等国家标准合集&#xff0c;共125份。 一、2024信息技术标准&#xff08;54份&#xff09; GB_T 17966-2024 信息技术 微处理器系统 浮点运算.pdf GB_T 17969.8-2024 信息技术 对象标识符登记机构操作规程 第8部分&#xff1a;通用…

Linux基本指令(三)+ 权限

文章目录 基本指令grep打包和压缩zip/unzipLinux和windows压缩包互传tar&#xff08;重要&#xff09;Linux和Linux压缩包互传 bcuname -r常用的热键关机外壳程序 知识点打包和压缩 Linux中的权限用户权限 基本指令 grep 1. grep可以过滤文本行 done用于标记循环的结束&#x…

C语言番外篇(3)------------>break、continue

看到我的封面图的时候&#xff0c;部分读者可能认为这和编程有什么关系呢&#xff1f; 实际上这个三个人指的是本篇文章有三个部分组成。 在之前的博客中我们提及到了while循环和for循环&#xff0c;在这里面我们学习了它们的基本语法。今天我们要提及的是关于while循环和for…