標題:
分別單獨儲存成EXCEL檔
[打印本頁]
作者:
koala2099
時間:
2012-6-15 00:19
標題:
分別單獨儲存成EXCEL檔
請教會的大大幫個忙~:dizzy:
統計201204是一份總表
01、02、04.....分別代表一個倉庫
每個倉庫資料量不同(皆有上千筆)
其中的倉庫也有可能會無資料
需依倉庫分別單獨儲存成EXCEL檔(只需該倉庫的資料)
當月有幾個倉庫就會有幾個EXCEL檔
作者:
hugh0620
時間:
2012-6-15 10:00
回復
1#
koala2099
Private Sub CommandButton1_Click()
'======篩選有幾個倉庫===========
Sheet1.Range("B2:B65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet1.Range( _
"P2"), Unique:=True
A = Sheet1.Range("P65536").End(xlUp).Row '共有幾個倉庫
B = Sheet1.Range("C65536").End(xlUp).Row '共有多少筆資料要被執行
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then Exit Sub
patch = .SelectedItems(1)
Application.DefaultFilePath = patch
If .ButtonName = "確定" Then
For I = 2 To A
Workbooks.Add
ActiveWorkbook.Sheets(1).Name = Sheet1.Range("P" & I)
With ActiveWorkbook
Sheet1.Range("A1:J1").Copy .Sheets(1).Range("A1")
For J = 2 To B
If Sheet1.Range("P" & I) = Sheet1.Range("B" & J) Then
.Sheets(1).Range("A" & 2 + N) = Sheet1.Range("A" & J)
.Sheets(1).Range("B" & 2 + N) = Sheet1.Range("B" & J)
.Sheets(1).Range("C" & 2 + N) = Sheet1.Range("C" & J)
.Sheets(1).Range("D" & 2 + N) = Sheet1.Range("D" & J)
.Sheets(1).Range("E" & 2 + N) = Sheet1.Range("E" & J)
.Sheets(1).Range("F" & 2 + N) = Sheet1.Range("F" & J)
.Sheets(1).Range("G" & 2 + N) = Sheet1.Range("G" & J)
.Sheets(1).Range("H" & 2 + N) = Sheet1.Range("H" & J)
.Sheets(1).Range("I" & 2 + N) = Sheet1.Range("I" & J)
.Sheets(1).Range("J" & 2 + N) = Sheet1.Range("J" & J)
N = N + 1
End If
Next
.SaveAs Application.DefaultFilePath & "\" & Sheet1.Range("P" & I)
.Close
End With
N = 0
Next
End If
End With
Sheet1.Range("P:P").Delete
ActiveWorkbook.Save
End Sub
複製代碼
作者:
register313
時間:
2012-6-16 18:45
回復
1#
koala2099
Sub NewWb()
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Ar = Sheets("倉庫").[A1].CurrentRegion
For k = 2 To UBound(Ar)
d(Ar(k, 2)) = ""
Next
For Each dx In d
[A1].AutoFilter Field:=2, Criteria1:=dx
[A1].CurrentRegion.Copy
Workbooks.Add
With ActiveWorkbook
.ActiveSheet.Paste
.ActiveSheet.Name = dx
.SaveAs ThisWorkbook.Path & "\" & dx & ".xls"
.Close
End With
Next
[A1].AutoFilter
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "工作表依條件另存活頁簿,執行完畢!"
End Sub
複製代碼
作者:
GBKEE
時間:
2012-6-17 11:05
回復
1#
koala2099
Option Explicit
Sub Ex() '進階篩選 + 自動篩選
Dim Rng As Range, xi As Integer
Application.ScreenUpdating = False
With ActiveSheet '作用中的工作表
'使用 AdvancedFilter 進階篩選 篩選不重復的資料 取得有料的倉庫------------
'參數 Action: =xlFilterCopy (複製在別的範圍)
'參數 CriteriaRange (準則範圍) ':=.Cells(1, .Columns.Count - 1).Resize(2) 準則範圍。如果省略此引數則無準則。
'準則範圍 的條件為空白為所有篩選的資料
'參數 CopyToRange 選擇性的 Variant。如果 Action 為 xlFilterCopy,此引數指定被複製列的目標範圍。否則忽略此引數。
'參數 Unique 選擇性的 Variant。若為 True,則僅篩選唯一的記錄;若為 False,則篩選出所有符合準則的記錄。預設值為 False。
.Cells(1, .Columns.Count - 1) = "aaa" '
.Range("B:B").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Cells(1, .Columns.Count - 1).Resize(2), _
CopyToRange:=.Cells(1, .Columns.Count), Unique:=True
'------------------------------------------------------------------
Set Rng = .Columns(.Columns.Count).SpecialCells(xlCellTypeConstants) '倉庫別的範圍
.AutoFilterMode = False '取消 這工作表的自動篩選
For xi = 2 To Rng.Count '倉庫的迴圈
.[A1].AutoFilter Field:=2, Criteria1:=Rng(xi) '自動篩選 第2欄 中 指定 倉庫
.[A1].CurrentRegion.Copy '複製自動篩選到的資料
With Workbooks.Add(1) '新開活頁簿 工作表1張
.Sheets(1).Paste '第1張工作表 貼上資料
.Sheets(1).Name = Rng(xi) '第1張工作表 命名:倉庫別
.SaveAs ThisWorkbook.Path & "\" & Rng(xi) & ".xls" '新開活頁簿 存檔
.Close '新開活頁簿 關閉
End With
Next
.Cells(1, .Columns.Count - 1).Resize(, 2).EntireColumn.Clear '清除進階篩選的資料
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
koala2099
時間:
2012-6-22 22:19
回復
4#
GBKEE
SORRY~忙於工作
過了這麼多天才上來回覆
剛試了完成符合需求
感謝大大的協助0.0端午節佳節快樂
作者:
user999
時間:
2012-7-24 17:12
回復
3#
register313
能順道請教一下,如果執行完後所產生的excel檔,能否再執行一次時 ,在各自excel工作簿新增一個sheet,而不是蓋過原execl檔案
謝謝!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)