Excel / Makro einen Teil exportieren aus einer Auswertung?

SchmuseTigger

Lt. Commander
Registriert
Juni 2009
Beiträge
1.556
Moin,

Ich habe hier so eine sau-dämliche Auswertung die mehrere Lehrzeilen einfügt zwischen Lieferanten (was sowas wie filtern schwer macht).

Ich hab mal ein Bild (sagt mehr als tausend Worte :)

Kunde.png

Das sind natürlich tausende von Kunden.

So, die Idee wäre jetzt ein Makro wo man nur die Lieferantennummer eingibt und der zieht mir dann die Zeilen von dem Lieferanten entweder in eine neue Excel oder in einen neuen Reiter. Hauptsache aus der riesigen Datei raus und zusammen.

Hat jemand eine Idee wie man sowas machen kann?

Danke!
 
Kannst du das Makro was die Liste erstellt bearbeiten? Dann würde ich vermeiden Leerzeilen einzufügen.

Ansonsten, wenn es nur daran liegt, dass der Autofilter bei der ersten Leerzeile aufhört, darf man beim aktivieren des Filters nicht nur die erste Zeile markieren, sondern den gesamten Datenbereich. Dann erkennt der Autofilter den zu filternden Bereich genauer.

Gruß
Spike
 
Nein, das ist eine Analyse die aus einem ERP System kommt. Also das könnte man sicher bearbeiten, aber die Abteilung die das macht liefert das genau so.

Mit Filtern auf vollem Markieren muss ich mal testen. Weil mit dem Auto-Filter Ding mag es das nicht.
 
Darf ich fragen welches ERP? Eigenentwickeltes Programm oder Standardkost? Denn wenn man mal denkt wie eine Datenbank, sind die Datensätze die man im Screenshot sieht inkonsistent (Zeile 126 und 127 lassen sich alleinstehend nicht sinnvoll zuordnen).

Ein Makro was die Daten aus der aktiven Arbeitsmappe herausfischt und in ein neues Tabellenblatt der aktiven Arbeitsmappe kopiert, könnte so aussehen:
Code:
Option Explicit
Const wsNameQuelle = "Summe pro Lieferant, Kunde"
Const spalteLieferantQuelle = 2
Const startZeile = 2

Public Sub startLieferantenDaten()
    Dim sucheLieferant As Variant
    'gesuchte Liferanten-Nummer abfragen'
    sucheLieferant = InputBox("Lieferanten-Nummer eingeben", "Lieferant suchen")
    If sucheLieferant <> "" Then
        holeLieferantenDaten Trim(sucheLieferant)
    End If
End Sub

Private Sub holeLieferantenDaten(ByVal lieferantenNummer As String)
    Dim wsQuelle As Worksheet, wsZiel As Worksheet, i As Long, ZeilenZähler As Long
    'in der aktiven Mappe ein neues Tabellenblatt einfügen'
    ActiveWorkbook.Worksheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
    Set wsQuelle = ActiveWorkbook.Worksheets(wsNameQuelle)
    Set wsZiel = ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
    'Tabellenkopf kopieren'
    wsQuelle.Rows("1:1").Copy Destination:=wsZiel.Rows("1:1")
    'alle Zeilen in der Quelle durchgehen, ob Daten zum Lieferant vorhanden'
    ZeilenZähler = startZeile
    For i = startZeile To wsQuelle.UsedRange.SpecialCells(xlCellTypeLastCell).Row
        If Trim(wsQuelle.Cells(i, spalteLieferantQuelle).Text) = lieferantenNummer Then
            wsQuelle.Rows(i & ":" & i).Copy Destination:=wsZiel.Rows(ZeilenZähler & ":" & ZeilenZähler)
            ZeilenZähler = ZeilenZähler + 1
        End If
    Next
    'Wurde etwas verarbeitet? Nutzer entsprechend informieren'
    If ZeilenZähler = startZeile Then
        MsgBox "Lieferant nicht gefunden", vbExclamation
    Else
        MsgBox (ZeilenZähler - startZeile) & " Zeilen zum Lieferanten gefunden", vbInformation
    End If
End Sub
 
Das ERP heißt Baan. Ist äh.. >10 Jahre alt und wird seit.. sagen wir auch so um den Bereich rum nicht mehr unterstüzt. Also erinnert an Windows 3.1 von der Oberfläche. Die Rüsten hier auf SAP um, aber dauert noch gut 6 Monate.

Aber danke für den Code, werde das mal testen!!
 
Hauptsache ihr kommt dabei nicht vom Regen in die Traufe... ;)

Bitte sehr. Wenn noch Hilfe beim anpassen benötigt wird, helf ich gern auch noch weiter.
 
Zurück
Oben