我有一个excel文件,其中C列有时会重复使用值:
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
我想为每个值(a,b,c,d,..,n)创建一个过滤C列的宏,并将结果保存到新文件中。
在我的例子中,宏返回4文件F1,F2,F3,F4 whit这个内容:
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
怎么写宏?
答案 0 :(得分: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
答案 1 :(得分:0)
使用Oledb查询将列c的不同值转换为数组...然后编写另一个查询以获取数组的不同值的值。