По сути, мы хотим создать код VBA, который автоматически создает рабочие книги для каждого типа хранилища (столбец / переменная в нашем наборе данных).
Например, у нас есть одна исходная рабочая книга со следующей таблицей:
Store Seller Item Price
A | Youtube | Banana | 5,00
B | Youtube | Apple | 6,00
A | Google | Apple | 7,00
C | Google | Pear | 5,00
B | Amazon | Citron | 4,50
Что мы хотим достичь с помощью кода VBA для приведенной выше таблицы, это три отдельные рабочие книги дляТип магазина A, B и C. Книга должна иметь название Тип магазина.Таким образом, это выглядело бы так:
~ A.xls ~
Store Seller Item Price
A | Youtube | Banana | 5,00
A | Google | Apple | 7,00
~ B.xls ~
Store Seller Item Price
B | Youtube | Apple | 6,00
B | Amazon | Citron | 4,50
~ C.xls ~
Store Seller Item Price
C | Google | Pear | 5,00
У меня был очень грубый способ сделать это (см. Ниже), но не хватает нескольких вещей:
- Эффективныйloop
Windows(“Map4”).Activate
портит потенциальную петлю 101 - И способ именования файла в соответствии с
‘Type of store’
Sub Macro1()
ActiveSheet.Range("$A$1:$A$8" & "$C$1:$C$8").AutoFilter Field:=2,
Criteria1:="aa"
Workbooks.Add
Windows("Test_split file.xlsm").Activate
Range("A1:C8").Select
Selection.Copy
Windows("Map4").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\Users\bjprent\Documents\aa.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
ActiveSheet.Range("$A$1:$C$8").AutoFilter Field:=2, Criteria1:="bb"
Workbooks.Add
Windows("Test_split file.xlsx").Activate
Range("A1:C8").Select
Selection.Copy
Windows("Map4").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\Users\bjprent\Documents\bb.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub
Заранее благодарю за любую помощь!:)