使用VBA从海量Excel文件中模糊获取数据并生成新表(附实例) - (三) VBA模糊查找数据

本文介绍了如何使用VBA进行模糊查找,从大量不同格式的Excel文件中提取特定字段(如姓名、性别、出生日期、年龄),并将数据汇总到新表。通过确认可能出现的区域,查找包含字段名的单元格,处理字段名与值的分离或混合情况,实现高效的数据整理。示例代码涵盖了不同场景,包括字段名与值相邻、在同一单元格、混合情况及无字段名的情况。
摘要由CSDN通过智能技术生成

前面两篇博客,我们介绍了VBA和使用VBA获取当前工作表和另一个工作簿的工作表中的数据。这篇我们来说说如何使用VBA模糊查找当前工作表中有用的数据。

我们有时会遇到这样的情况。我们手头有很多很多老的excel文件,他们都是关于提供的内容是类似的,但是他们的格式还有不同,因为表格的样式调整过,或是从别的地方复制过来的,导致格式不尽相同。但值得庆幸的是,你所要的数据在表格中的大致位置是可以确定的。

现在的任务是:把大量类似的excel文件进行整理,从中提取若干字段的值,并汇总到一个新的excel表格中。

比如挑选两种原始文件中的数据:
A类表格:
这里写图片描述
B类表格:
这里写图片描述

我们如何使用VBA批量从文件获取“姓名”、“性别”、“出生日期”和“年龄等呢?

处理实际任务时,可能会有很多种表格格式需要兼容。这里为了方便演示,我举出如下几个场景。

1. 字段名和字段值位于前后两个单元格中
字段名和字段值分开的情况,一般都是字段值在字段名的邻近靠后的单元格,类似上图中的姓名。

查找思路:
1. 确认可能出现的区域
2. 在区域内查找包含字段名的单元格
3. 获取字段名单元格水平后面的单元格
4. 获取字段值

示例代码:

'姓名字段名出现的范围是:A3到A5的区域内
With sheet.Range("A3:A5")
    '查找包含“姓名”的单元格
    Set c = .Find("姓名", LookIn:=xlValues)
    '如果找到
    If Not c Is Nothing Then
        '获取匹配单元格水平后面一个单元格的内容
        PName = sheet.Cells(c.Row, c.Column + 1).Value
    End If
End With

2. 字段名和字段值在一个单元格中
对于字段名和字段值在一个单元格中的情况,则需要把字段名和间隔符去掉,留下的值视为字段值

查找思路:
1. 确认可能出现的区域
2. 在区域内查找包含字段名的单元格
3. 去除字段名和间隔符
4. 获取字段值

示例代码:

'姓名字段名出现的范围是:A3到A5的区域内
With sheet.Range("A3:A5")
    '查找包含“姓名”的单元格
   Set c = .Find("姓名", LookIn:=xlValues)
   '如果找到
   If Not c Is Nothing Then
       '获取第一个匹配的单元格的内容
       PName = c.Valu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值