2017-02-13 1 views
-1

Ich habe eine Excel-Datei mit manchmal repeteated Werte einer Spalte C:Excel-Makro Autofilter und Exportergebnis

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 

Ich möchte ein Makro erstellen, dass Filter C Spalte für jeden Wert (a, b, c, d, .., n) und speichern Sie das Ergebnis in einer neuen Datei.

In meinem Beispiel die Makro Rückkehr 4-Datei F1, F2, F3, F4 Whit diesen Inhalt:

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 

Wie das Makro geschrieben werden könnte?

+1

Wahrscheinlich von Anfang an zu schreiben oder? Entschuldigung, aber Sie haben nur Anforderungen fallen gelassen. Die Idee hier ist, dass Sie Code zeigen, und dann Leute helfen, Probleme in diesem Code zu beheben. Ansonsten hört es sich so an, als würden Sie andere Leute erwarten, die Ihre Arbeit für Sie erledigen. – GhostCat

Antwort

0

Verwenden Sie eine Oledb-Abfrage, um die unterschiedlichen Werte von Spalte c in ein Array zu bekommen ... und schreiben Sie dann eine weitere Abfrage, um Werte für verschiedene Werte des Arrays zu erhalten.

1

Hier ist der Code. Sie müssen die erstellten Dateien jedes Mal manuell speichern. Lassen Sie mich wissen, wenn Sie einen Standardspeicherort festlegen und alle Dateien automatisch speichern möchten.

\ code \

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

Ja, mein Ziel ist alle Dateien in meinem Desktop zu speichern. Vielen Dank! – padibro

+0

Vielen Dank. Bitte markiere meine Antwort als Antwort :) –

Verwandte Themen