前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件夹中多工作薄指定工作表中提取指定字符的数据

文件夹中多工作薄指定工作表中提取指定字符的数据

作者头像
哆哆Excel
发布2022-10-25 12:49:12
9220
发布2022-10-25 12:49:12
举报
文章被收录于专栏:哆哆Excel

文件夹中多工作薄指定工作表中提取指定字符的数据

【问题描述】一个文件夹中有4年的公司的销售情况的Excel文件,一个月一个文件,每个文件中有一个工作表”销售情况”,请你在“销售情况”的工作表中,复制出”小龙女”的销售金额,并汇总到一个工作表,计算出“小龙女”这四年来的销售总额

【难点】一个有一个文件,每个文件要打开-----复制“小龙女”的销售金额----粘贴到汇总文件----关闭文件---“不保存”,再来………………,时间要多少。

【解决方法】

用VBA程序,Dir文件夹中的所有文件,workbooks.open每一个文件,Find(“小龙女”),找到它的行,再打这一行的单元格全部赋值给数组。数组的第一列全部保存“文件名“可以知道来源,

【说明】:还好,每个文件中只有一个”小龙女”一行数据,如果是多行,我也不知道怎么办,还没想到。

【代码如下】

Sub test()

Dim wbk As Object, sht_main As Worksheet

Dim mfile As String

Dim arr(1 To 50, 1 To 10)

Application.DisplayAlerts = False

Application.ScreenUpdating = False

ti = Timer

i= 0

mfile = Dir(ThisWorkbook.Path & "\*.xls*")

Set sht_main = ActiveSheet

Do Until mfile = ""

If mfile <> ThisWorkbook.Name Then

i = i + 1

Set wbk = Workbooks.Open(ThisWorkbook.Path & "\" &mfile)

With wbk.Sheets("销售情况")

r = .UsedRange.Find("小龙女").Row

'MsgBox mfile &"-----" & r

arr(i, 1) = mfile

For j = 2 To 10

arr(i, j) = .Cells(r, j -1).Value

Next j

End With

wbk.Close flase

Set wbk = Nothing

End If

mfile = Dir

Loop

sht_main.Range("a" & 2).Resize(UBound(arr, 1), UBound(arr,2)).NumberFormat = "@"

sht_main.Range("a" & 2).Resize(UBound(arr, 1), UBound(arr,2)) = arr

MsgBox "汇总完成" & Chr(10) &"共找到了" & i & "个文件" & Chr(10) & "用时:"& Format(Timer - ti, "00.00秒")

Application.DisplayAlerts = True

Application.ScreenUpdating = True

End Sub

======保存起来,以便以后的学习=====

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档