2017-02-13 78 views
-1

我有具有有时repeteated值的列C的Excel文件:Excel宏自动过滤器和出口结果

A | B | C 
------------ 
1 | 2 | a 
1 | 4 | b 
1 | 5 | c 
1 | 2 | d 
1 | 6 | a 
4 | 2 | d 
1 | 2 | a 
4 | 4 | c 
8 | 2 | c 
1 | 8 | d 

我想创建宏,对于每个值过滤器C柱(A,B, c,d,..,n)并将结果保存在新文件中。

在我的例子宏观回报4文件F1,F2,F3,F4白衣此内容:

A | B | C 
------------ 
1 | 2 | a 
1 | 6 | a 
1 | 2 | a 


A | B | C 
------------ 
1 | 4 | b 


A | B | C 
------------ 
1 | 5 | c 
4 | 4 | c 
8 | 2 | c 


A | B | C 
------------ 
1 | 2 | d 
4 | 2 | d 
1 | 8 | d 

怎么可以写成宏?

+1

大概到开始写呢?对不起,但你只是放弃了要求。这里的想法是你展示代码,然后人们帮助解决代码中的问题。否则,这听起来像你期望其他人为你做你的工作。 – GhostCat

回答

0

使用Oledb查询将列c的不同值存入数组...然后编写另一个查询以获取数组的不同值的值。

1

这是代码。您必须每次手动保存创建的文件。如果您希望我设置默认位置并自动保存所有文件,请告诉我。

\代码\

Function perform_click() 

Dim i, lastrow As Integer 
Dim ws1, ws2 As Workbook 

Set ws1 = ThisWorkbook 
lastrow = ws1.Sheets("Sheet1").Range("C500000").End(xlUp).Row 

ws1.Sheets("Sheet1").Range("C4:C" & lastrow).Copy Range("P4") 
ws1.Sheets("Sheet1").Range("P4:P" & lastrow).RemoveDuplicates 1, xlNo 


ActiveSheet.AutoFilterMode = False 

For i = 4 To ws1.Sheets("Sheet1").Range("P500000").End(xlUp).Row 

ws1.Sheets("Sheet1").Range("A3:C" & lastrow).AutoFilter 3, ws1.Sheets("Sheet1").Range("P" & i).Value 
Set ws2 = Workbooks.Add 
ws1.Sheets("Sheet1").Range("A3:C" & lastrow).SpecialCells(xlCellTypeVisible).Copy ws2.Sheets("Sheet1").Range("A3") 

Application.DisplayAlerts = False 
ws2.SaveAs "C:\Users\Praveen Behera\Desktop\F" & i & ".xlsx", 51 
Application.DisplayAlerts = True 

Set ws2 = Nothing 
Next i 

End Function 

Private Sub CommandButton1_Click() 

perform_click 

End Sub 
+0

是的,我的目标是保存我的桌面上的所有文件。谢谢! – padibro

+0

非常感谢。请将我的回复标记为答案:) –