Excel/VB 将文件A的数据(源数据)提取到文件B(目标文件)

问题背景

如果一切数据都跑在后台,数据之间的迁移在全部自动化的情况下,无疑使用csv+python等处理更理想。但不是什么都能全自动化的,如果数据的输入都是excel,而且还要能方便的在所有人的机器上跑,那基于excel的VB来实现一些简单数据处理也是非常方便的。
咳咳,扯远了。这章总结的是,如何从一个固定格式的工作表A,提取出想要的数据,按自己设定好的格式,写入另一个工作表B。

设计思路

1、需要掌握的技能

  1. 需要掌握获取文件路径、文件的打开和关闭等文件操作(实际实现时我都是ctrl+A全选然后ctrl+V贴到专门准备好的一个工作表里,怎么方便怎么来了)
  2. 需要知道怎么一行行/一列列地遍历指定工作表的有效数据,核心是,用For循环,循环条件是有效行的行号/列号
  3. 知道行号/列号,能方便的读写该行/列任意单元格的值
  4. 用IF ELSE对获取到的值进行条件处理

2、实现逻辑

  1. For循环,遍历源文件A的标志数据列[A]
  2. IF条件检查[A]的值"aa"的有效性,满足条件则准备处理目标文件B
  3. For循环,遍历目标文件B的目标数据列[B]
  4. IF条件检查[B]的整列值里是否包含"aa",包含则按同类项累加,不包含则遍历结束后新增"aa"行
  5. 根据实际情况,步骤2和4会增加一定复杂度,但总体逻辑都可以拆分为1~4步骤的结合

模块功能实现

  1. VBA文件路径获取、文件的打开、关闭
Sub DemoFileOp()

Dim WbookSrc

paths = ThisWorkbook.Path & "\"        '获取当前路径
Set WbookSrc = Workbooks.Open(paths & "Src.xlsx")  '打开源excel文件
......
'关闭释放内存,否则高频操作excel会挂
WbookSrc.Quit Save:=True  '保存excel
Set WbookSrc = Nothing      '释放内存

End Sub

PS: 如果输入输出不是多个文件,一般来说手动复制源数据到工作表里会更方便。这个只是我一开始查到可以这么玩,实际操作把这块砍掉了。这里放着看以后有需要的时候再捡起来。

  1. VBA For循环对数据行/列遍历
'****************************** 遍历行 ******************************
Sub DemoForRow()

Dim SrcRcdNum

For SrcRcdNum = 2 To ThisWorkBook.Worksheets(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值