Excel VBA - 多工作簿多工作表汇总实例集锦(7)

2019-08-31 22:57

End If Next st

t = d.items

[f3].Resize(d.Count, 1) = Application.Transpose(t)

Exit Sub

For i = 3 To [b65536].End(3).Row

Cells(i, 6) = d(\ Next i End Sub

14,多工作簿汇总(FileSearch 和 Dir)

‘2010-5-5

‘汇总表.xls__解决一个月的汇总 Sub rmxb0505()

Dim myFs As FileSearch

Dim myPath As String, Filename$

Dim i&, n&, r%, Arr1(), rq, sl, rr, yy, Myc%

Dim Sht1 As Worksheet, sh As Worksheet, yg$, bb Dim aa, nm1$, m, arr, r1, j&, Rmx, Ymx, Rmxhj Dim js, ks, x, y, col%, nm$ Application.ScreenUpdating = False On Error Resume Next Set Sht1 = ActiveSheet

Myc = [iv2].End(xlToLeft).Column

Range(\Rmx = Range(\Sheet2.Activate

Ymx = Range(\Sht1.Activate

Set myFs = Application.FileSearch

myPath = ThisWorkbook.Path '& \发货工作量统计\\\ With myFs

.NewSearch

.LookIn = myPath

.FileType = msoFileTypeNoteItem .Filename = \

.SearchSubFolders = True

If .Execute(SortBy:=msoSortByFileName) > 0 Then n = .FoundFiles.Count

ReDim myfile(1 To n) As String For i = 1 To n

myfile(i) = .FoundFiles(i) Filename = myfile(i)

aa = InStrRev(Filename, \ yg = Left(Filename, aa - 1) bb = InStrRev(yg, \

yg = Right(yg, Len(yg) - bb) '员工姓名 nm = Right(Filename, Len(Filename) - aa) nm1 = Left(nm, Len(nm) - 4)

If nm1 <> \汇总表\ Workbooks.Open myfile(i) r = 0

Dim wb As Workbook Set wb = ActiveWorkbook Set sh = wb.Sheets(\ sh.Activate

bb = Left(nm1, Len(nm1) - 1) rq = Split(bb, \ '日期 rr = Val(Right(rq, 2)) '日

yy = Val(Left(rq, Len(rq) - 2)) '月 sl = Val(Split(bb, \ '订单数 Set r1 = Sht1.Rows(1).Find(yg, , , 1) If Not r1 Is Nothing Then col = r1.Column - 1

Rmx(rr, col) = Rmx(rr, col) + sl '订单总数 End If

m = sh.[a65536].End(xlUp).Row arr = Range(\ For j = 1 To UBound(arr)

If arr(j, 1) = \仓库配货单\ r = r + 1

ReDim Preserve Arr1(1 To r) Arr1(r) = j End If Next

For j = 1 To r

If j <> r Then

js = Arr1(j + 1) - 1 Else

js = m End If

ks = Arr1(j) + 3 For x = ks To js

If Trim(arr(x, 2)) = \

If InStr(arr(x, 2), \注意\订单明细\

0 Or InStr(arr(x, 2), \装箱单\ Else

Rmx(rr, col + 1) = Rmx(rr, col + 1) + 1 '配货明细 Rmx(rr, col + 2) = Rmx(rr, col + 2) + Val(arr(x, 8)) '配货量数

End If 100:

Next Next

wb.Close savechanges:=False Set wb = Nothing End If Next Else

MsgBox \该文件夹里没有任何文件\ End If End With

Set myFs = Nothing Sht1.Activate

[b3].Resize(31, UBound(Rmx, 2)) = Rmx If InStr(Sht1.Name, \月\

Sht1.Name = yy & \月\ End If [a1].Select

Rmxhj = Range(\

For i = 1 To 3 * UBound(Rmxhj, 2) / (Myc - 1) 'Step 3 Ymx(yy, 4 * i - 2) = Rmxhj(1, 3 * i - 2) Ymx(yy, 4 * i - 1) = Rmxhj(1, 3 * i - 1) Ymx(yy, 4 * i) = Rmxhj(1, 3 * i) Next

Sheet2.[b3].Resize(12, UBound(Ymx, 2)) = Ymx Application.ScreenUpdating = True End Sub

Sub rmxb0505a()

Dim myPath As String, Filename$, myXL Dim i&, n&, r%, Arr1(), rq, sl, rr, yy, Myc%

Dim Sht1 As Worksheet, sh As Worksheet, yg$, bb Dim aa, nm1$, m, arr, r1, j&, Rmx, Ymx, Rmxhj Dim js, ks, x, y, col%, arml

Application.ScreenUpdating = False On Error Resume Next Set Sht1 = ActiveSheet

Myc = [iv2].End(xlToLeft).Column arml = Range(\

Range(\Rmx = Range(\Sheet2.Activate

Ymx = Range(\Sht1.Activate

For y = 1 To UBound(arml, 2) Step 3 yg = arml(1, y)

myPath = ThisWorkbook.Path & \ Filename = Dir(myPath & \ Do While Filename <> \ aa = myPath & Filename

nm1 = Left(Filename, Len(Filename) - 4) bb = Left(nm1, Len(nm1) - 1) rq = Split(bb, \ '日期 rr = Val(Right(rq, 2)) '日

yy = Val(Left(rq, Len(rq) - 2)) '月

If nm1 <> \汇总表\ Workbooks.Open aa r = 0

Dim wb As Workbook Set wb = ActiveWorkbook Set sh = wb.Sheets(\ sh.Activate

sl = Val(Split(bb, \ '订单数 Set r1 = Sht1.Rows(1).Find(yg, , , 1) If Not r1 Is Nothing Then col = r1.Column - 1

Rmx(rr, col) = Rmx(rr, col) + sl '订单总数 End If

m = sh.[a65536].End(xlUp).Row arr = Range(\ For j = 1 To UBound(arr)

If arr(j, 1) = \仓库配货单\ r = r + 1

ReDim Preserve Arr1(1 To r) Arr1(r) = j End If Next

For j = 1 To r

If j <> r Then

js = Arr1(j + 1) - 1 Else

js = m End If

ks = Arr1(j) + 3 For x = ks To js

If Trim(arr(x, 2)) = \

If InStr(arr(x, 2), \注意\> 0 Or InStr(arr(x, 2), \订单明细\> 0 Or InStr(arr(x, 2), \装箱单\ Else

Rmx(rr, col + 1) = Rmx(rr, col + 1) + 1 '配货明细

Rmx(rr, col + 2) = Rmx(rr, col + 2) + Val(arr(x, 8)) End If 100:

Next Next

wb.Close savechanges:=False Set wb = Nothing End If

Filename = Dir Loop Next

Sht1.Activate

[b3].Resize(31, UBound(Rmx, 2)) = Rmx If InStr(Sht1.Name, \月\

Sht1.Name = yy & \月\ End If [a1].Select

Rmxhj = Range(\

For i = 1 To 3 * UBound(Rmxhj, 2) / (Myc - 1) Ymx(yy, 4 * i - 2) = Rmxhj(1, 3 * i - 2) Ymx(yy, 4 * i - 1) = Rmxhj(1, 3 * i - 1) Ymx(yy, 4 * i) = Rmxhj(1, 3 * i) Next

Sheet2.[b3].Resize(12, UBound(Ymx, 2)) = Ymx Application.ScreenUpdating = True End Sub

15,多工作簿汇总(FileSearch) by:Long III

Private Sub CommandButton1_Click()

Dim Twb As Workbook, Wb As Workbook Dim rng As Range

'配货量数


Excel VBA - 多工作簿多工作表汇总实例集锦(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二年级数学巧算与速算

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: