rio1980
Goto Top

Excel VBA Makro Sammeltabelle erstellen

Hallo zusammen,

ich stehe vor einem für meine Begriffe hochkomplexen Makroproblem.face-smile Das Makro soll Daten aus unzähligen txt-Dateien importieren, daraus eine Sammeltabelle erstellen und nach bestimmten Suchkriterien aus dieser erstellen Sammeltabelle Übereinstimmungen in 3 anderen Dateien suchen, um aus diesen weitere Daten in die erstellte Sammeltabelle (natürlich an die richtigen Positionen) zu kopieren.

In einem Ordner "Textdateien" auf der C: Platte befinden sich unzählige Unterordner wobei sich in jedem dieser Ordner unter anderem auch eine txt-Datei befindet. All dieser txt-Dateien ähneln sich im Aufbau, sodass nach dem importieren (als Spaltentrennung soll ein : gelten) einer txt-Datei in Excel (2003) die Zellen A1 - B25 mit Daten gefüllt sind. Ich benötige dann die Daten aus den Zellen B1, B2, B4, B5, B6, B7 und B11 welche in meine Sammeltabelle in die Spalten A-G (für jede txt-Datei eine Zeile, sind im mom ca 100 Unterordner und somit 100 txt-Dateien und werden immer mehr) übernommen werden sollen. Wenn all diese Daten in die nun neu entstandene Sammeltabelle aufgenommen sind, müssten sich in der Spalte B nun Teilernummern befinden. Nach diesen Teilernummern müsste das Makro nun in 3 weiteren im sich im Aufbau ähnlichen Dateien, (z. Bsp.: "Datei1","Datei2","Datei3") wobei sich die Teilenummer immer in der Spalte A befindet, suchen und bei einem Treffer die Daten aus den Zellen B - H der entsprechenden Datei und Trefferzeile in meine Sammeltabelle in die Spalten H - N in die entsprechende Zeile kopieren.

Ich hoffe ich konnte das Problem bzw die Anforderung an das Makro anschaulich genug schildern...ist nicht immer so leicht ohne Anschauungsmaterial. face-smile
Die Frage für mich ist, ob das per Makro überhaupt lösbar ist und ob es sich alles in einem einzigen Makro verwirklichen lässt, oder ob man das in 2 Makros verpacken müsste. Für eure Hilfe und über eure Anregungen würde ich mich sehr freuen.

Bis dahin verbleibe ich mit vielen Grüßen
Rio

Content-Key: 172444

Url: https://administrator.de/contentid/172444

Printed on: April 18, 2024 at 16:04 o'clock

Member: Biber
Biber Sep 01, 2011 at 15:46:13 (UTC)
Goto Top
Moin Rio1980,

Die Frage für mich ist, ob das per Makro überhaupt lösbar ist und ob es sich alles in einem einzigen Makro verwirklichen lässt, oder ob man das in 2 Makros verpacken müsste

Ich sach' mal so:
Für mich ist noch gar nicht die Phase erreicht, in der ich mir zutrauen würde zu sagen
"Nimm einen 10er Ringschlüssel und einen Kreuzschlitzschraubendreher mit Bambusgriff, der Rest ergibt sich dann von allein."

Ein, zwei Punkte an dem Gesamtplan würde ich gern noch mal etwas trennschärfer formuliert haben wollen,
i.e. von "unzähligen" Unterordnern und unzähligen Input-Textdateien wissen wir ja jetzt, aber
  • die Zieldimensionen sind EINE Exceltabelle mit EINEM Sheet ??
  • oder mit einem Sheet pro Importiere-mir-alle-Daten-Lauf?
  • oder ein Excelsheet pro Woche?
  • Ist es eine einmalige oder einer regelmäßige Aktion, passiert es täglich, stündlich oder immer zur Grammy-Verleihung?
  • Soll, muss oder darf der Import manuell gestartet werden oder jeden Freitag mittag automatisch?
  • WTAF sind denn die "bestimmten Kriterien", nach denen da irgendwas zusammengeharkt werden soll? Stehen die auch in einer CSV-Datei oder "weiss" das Makro diese Kriterien oder gibt der/die UserIn dat ein?

Diese Rahmenparameter wären für mich schon wesentlich, ehe ich mich auf die Suche nach dem richtigen Werkzeug oder Schnitzmesser mache.

Grüße
Biber
Member: bastla
bastla Sep 01, 2011 at 16:32:56 (UTC)
Goto Top
Hallo Rio1980 und Biber!

Um mal zu sehen, ob ich einige Antworten auf Bibers Fragen erraten habe, ein [Edit] erweiterter [/Edit] Versuch, die vorgegebenen Daten einzulesen:
Sub Importieren()
Basis = "C:\Textdateien"  
Typ = "txt" 'Dateityp der zu verarbeitenden Dateien in Kleinbuchstaben  
Dateien = Array("C:\Datei1.txt", "C:\Datei2.txt", "C:\Datei3.txt")  

Adressen = Array(1, 2, 4, 5, 6, 7, 11) 'da alle Werte in Spalte B stehen, nur die Zeilennummern  
SchlSpalte = 2 'Spalte B = Schlüsselspalte für Suche in den Dateien  
Delim = ":" 'Trennzeichen  

AbZeile = 2 'ab dieser Zeile werden die Werte in die Zieltabelle geschrieben  
AbSpalte = 1 'Spalte A; ab dieser Spalte werden die Werte in die Zieltabelle geschrieben  

MaxFeld = UBound(Adressen) 'höchster Index in der Adressentabelle (= Anzahl der Felder - 1)  
Dim Daten()

Set fso = CreateObject("Scripting.FileSystemObject")  
Set d = CreateObject("Scripting.Dictionary")  

For Each Datei In Dateien 'alle Dateien in Dictionary einlesen  
    Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf) 'in Zeilenarray einlesen  
    For i = 0 To UBound(Zeilen) 'alle Zeilen durchgehen  
        Zeile = Trim(Zeilen(i)) 'ev leading/trailing blanks entfernen  
        If Zeile <> "" Then 'keine leere Zeile verarbeiten  
            Schl = Split(Zeile, Delim)(0) 'Schlüssel ist erstes Feld  
            If Not d.Exists(Schl) Then 'noch kein Datensatz mit diesem Schlüssel vorhanden  
                Werte = Split(Replace(Zeile, Schl & Delim, "", 1, 1), Delim) 'Werte (erst ab 2. Spalte) in Array übernehmen und ...  
                d.Add Schl, Werte '... dieses im Dictionary zum Schlüssel ablegen  
            Else 'Schlüssel gab es schon  
                MsgBox Schl & " ist bereits vorhanden!", vbCritical  
                '### weitere Vorgangsweise? ###  
            End If
        End If
    Next
Next

Zeile = AbZeile
Cells(Zeile, AbSpalte).Select 'Startzelle für Daten markieren und ...  
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).ClearContents '... ab hier Inhalte löschen  

For Each Ordner In fso.GetFolder(Basis).SubFolders 'alle Unterordner des Basisordners durchgehen  
    For Each Datei In fso.GetFolder(Ordner).Files 'alle Dateien des jeweiligen Unterordners durchgehen ...  
        If LCase(fso.GetExtensionName(Datei.Name)) = Typ Then '... und nur solche des vorgegebenen Typs verarbeiten  
            Zeilen = Split(Datei.OpenAsTextStream.ReadAll, vbCrLf) 'alle Zeilen der Datei in Array einlesen  
            ReDim Daten(MaxFeld)
            For i = 0 To MaxFeld 'alle Feldwerte lt Adressentabelle ermitteln  
                Daten(i) = Split(Zeilen(Adressen(i) - 1), Delim)(1) 'Zeile lt Adressentabelle zerlegen und zweites Feld (= Spalte "B") verwenden  
            Next
            Rows(Zeile).EntireRow.ClearContents 'Tabellenzeile löschen  
            Cells(Zeile, AbSpalte).Resize(1, MaxFeld + 1).Value = Daten 'Datensatz (Teil 1) in Zieltabelle eintragen  
            
            Schl = Cells(Zeile, SchlSpalte).Value 'Schlüsselbegriff auslesen  
            If d.Exists(Schl) Then 'wenn Daten zu diesem Schlüssel vorhanden, ...  
                Werte = d.Item(Schl) '... diese auslesen und ...  
                Cells(Zeile, AbSpalte + MaxFeld + 1).Resize(1, UBound(Werte) + 1).Value = Werte 'am Ende der Tabellenzeile hinzufügen  
            End If
            
            Zeile = Zeile + 1 'nächste Zeile der Zieltabelle  
        End If
    Next
Next
End Sub
Hinsichtlich "Datei1" bis "Datei3" wurde unterstellt, dass
  • es sich ebenfalls um Textdateien mit dem Trennzeichen ":" handelt
  • diese Dateien alle gleich strukturiert sind (Weshalb werden die Daten nicht gleich in einer Datei zusammengefasst?)
  • Überschneidungen der Teilenummern (eine Nummer kommt in mehreren Dateien vor) erkannt werden müssen (Was dann zu geschehen hätte, wäre noch zu klären)

Grüße
bastla

[Edit] "Nachschlagen" in den Dateien "Datei1" bis "Datei3" sowie Löschen (alter Daten) der Zieltabelle hinzugefügt [/Edit]
Member: Biber
Biber Sep 01, 2011 at 19:13:02 (UTC)
Goto Top
[OT] @bastla

Natürlich kenne ich auch die Situation, dass ich beim Heimkommen einen Zettel auf dem Küchentisch vorfinde mit den Worten:
"Zutaten für's Abendessen liegen im Kühlschrank. Fang ruhig schon mal an zu Kochen. Bin zum Essen wieder da."

...und im Kühlschrank liegen dann ein paar Fischfilets, ein halbes Glas Brombeermarmelade, 2 Becher Quark, 4 Stangen Rhabarber und der Rest einer Tube Gleitcreme.

Sollte ich wirklich mit diesen Infos schon anfangen und mache ich damit wirklich allen Beteiligten eine Freude?

Grüße
Biber
[/OT]
Member: bastla
bastla Sep 01, 2011 at 19:27:03 (UTC)
Goto Top
[OT] @Biber
Also Dir traue ich durchaus zu, daraus etwas Interessantes zu kreieren - und Du doch auch ... face-wink

... und wenn der Rhabarber schon mal da ist ...

Grüße
bastla
[/OT]
Member: Biber
Biber Sep 01, 2011 at 19:41:51 (UTC)
Goto Top
[OT ii] @bastla

Ich sach' ma so...

Natürlich gibt es erstmal Pluspunkte, wenn pünktlich etwas Warmes auf dem Tisch steht.
Jedenfalls eigentlich immer.

Aber ich sehe dennoch ein gewisses Restrisiko.... face-wink

Und überhaupt: zu den drei Dingen, bei denen Zeit nun wirklich keinerlei Rolle spielt, gehört für mich auch das Kochen.
Heisst ja nicht, dass ich deshalb etwas anbrennen lasse.

Grüße
Biber
[/OT ii]
Member: Rio1980
Rio1980 Sep 01, 2011 at 21:09:56 (UTC)
Goto Top
@Biber

Danke schon mal im Voraus dass du dir die Sache angesehen hast.
Ja, das Ziel soll EINE Sammeldatei und EIN Sheet sein...immerhin reden wir hier nach dem aussieben der Daten nur noch von 14 Spalten und ein paar hundert Zeilen, sollte machbar sein denke ich.
Es ist mit sicherheit eine Aktion die noch mehrfach durchgeführt wird, aber ein zeitlicher Abstand ist noch nicht ersichtlich, auch wenn ich schon mal sagen kann, dass es sicher nicht wöchentlich sein wird, sondern schon mehr Zeit ins Land gehen wird und ich somit auf luxeriöse und sicher aufwenidge Abfrage über schon erfasste Daten bei erneuter Durchführung des Makros auf Grund der ohenhin vorhandenen Komplexität verzichtet habe. Da das dann nicht regelmäßig gemacht wird werde ich den Import auch manuell nach Bedarf starten. Das Suchkriterium ist wie bereits weiter unten im ursprünglichen Text erklärt die Teilenummer.

@ Bastla

WOW! Auch wenn ich dass Makro erst Morgen auf der Arbeit testen kann, sieht es schon mal sehr gut aus und entspricht was das Einlesen der Textdateien angeht meinen Vorstellungen. Was die Dateien 1-3 angeht sind diese ganz normale excel Dateien und es sind drei an der Zahl, da drei verschiedene Mitarbeiter von verschiedenen PC´s aus parallel Daten editieren müssen.face-sad Im übrigen ist der Aufbau der Dateien identisch und doppelt oder dreifach vorhandene Teilenummern pro Datei und dateiübergreifend sind nicht vorhanden.

[OT]
Im übrigen finde ich euren Disput sehr erheiternd face-wink
[/OT]

Viele Grüße
Rio
Member: bastla
bastla Sep 01, 2011 at 21:45:29 (UTC)
Goto Top
Hallo Rio1980!

Die folgende Version holt die "Nachschlage"-Daten aus den Excel-Dateien "Datei1.xls" - "Datei3.xls"
Sub Importieren()
Basis = "C:\Textdateien"  
Typ = "txt" 'Dateityp der zu verarbeitenden Dateien in Kleinbuchstaben  
Dateien = Array("C:\Datei1.xls", "C:\Datei2.xls", "C:\Datei3.xls")  

Adressen = Array(1, 2, 4, 5, 6, 7, 11) 'da alle Werte in Spalte B stehen, nur die Zeilennummern  
SchlSpalte = 2 'Spalte B = Schlüsselspalte für Suche in den Dateien  
Delim = ":" 'Trennzeichen  

AbZeile = 2 'ab dieser Zeile werden die Werte in die Zieltabelle geschrieben  
AbSpalte = 1 'Spalte A; ab dieser Spalte werden die Werte in die Zieltabelle geschrieben  

AbZeileQuelle = 1 'erste Datenzeilen in den "Nachschlage"-Dateien  
AbSpalteQuelle = 1 'erste Datenspalte in den "Nachschlage"-Dateien  
DatenSpaltenQuelle = 7 'Anzahl Datenspalte ohne Schlüsselspalte  


MaxFeld = UBound(Adressen) 'höchster Index in der Adressentabelle (= Anzahl der Felder - 1)  
Dim Daten()

Set fso = CreateObject("Scripting.FileSystemObject")  
Set d = CreateObject("Scripting.Dictionary")  

Set Sammel = ThisWorkbook
For Each Datei In Dateien 'alle Dateien in Dictionary einlesen  
    Set Quelle = Workbooks.Open(Datei)
    With Quelle.Worksheets(1)
        Zeile = AbZeileQuelle
        Schl = Trim(.Cells(Zeile, AbSpalteQuelle).Value)
        Do Until Schl = ""  
            If Not d.Exists(Schl) Then 'noch kein Datensatz mit diesem Schlüssel vorhanden  
                Werte = .Cells(Zeile, AbSpalteQuelle + 1).Resize(1, DatenSpaltenQuelle) 'Werte (ab 2. Spalte) in Array übernehmen und ...  
                d.Add Schl, Werte '... im Dictionary zum Schlüssel ablegen  
            Else 'Schlüssel gab es schon  
                MsgBox Schl & " ist bereits vorhanden!", vbCritical  
            End If
            
            Zeile = Zeile + 1
            Schl = Trim(.Cells(Zeile, AbSpalteQuelle).Value)
        Loop
    End With
    Quelle.Close
Next

Sammel.Activate
Zeile = AbZeile
Cells(Zeile, AbSpalte).Select 'Startzelle für Daten markieren und ...  
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).ClearContents '... ab hier Inhalte löschen  

For Each Ordner In fso.GetFolder(Basis).SubFolders 'alle Unterordner des Basisordners durchgehen  
    For Each Datei In fso.GetFolder(Ordner).Files 'alle Dateien des jeweiligen Unterordners durchgehen ...  
        If LCase(fso.GetExtensionName(Datei.Name)) = Typ Then '... und nur solche des vorgegebenen Typs verarbeiten  
            Zeilen = Split(Datei.OpenAsTextStream.ReadAll, vbCrLf) 'alle Zeilen der Datei in Array einlesen  
            ReDim Daten(MaxFeld)
            For i = 0 To MaxFeld 'alle Feldwerte lt Adressentabelle ermitteln  
                Daten(i) = Split(Zeilen(Adressen(i) - 1), Delim)(1) 'Zeile lt Adressentabelle zerlegen und zweites Feld (= Spalte "B") verwenden  
            Next
            Cells(Zeile, AbSpalte).Resize(1, MaxFeld + 1).Value = Daten 'Datensatz (Teil 1) in Zieltabelle eintragen  
            
            Schl = Cells(Zeile, SchlSpalte).Value 'Schlüsselbegriff auslesen  
            If d.Exists(Schl) Then 'wenn Daten zu diesem Schlüssel vorhanden, ...  
                Werte = d.Item(Schl) '... diese auslesen und ...  
                Cells(Zeile, AbSpalte + MaxFeld + 1).Resize(1, DatenSpaltenQuelle).Value = Werte 'am Ende der Tabellenzeile hinzufügen  
            End If
            
            Zeile = Zeile + 1 'nächste Zeile der Zieltabelle  
        End If
    Next
Next
End Sub
Geschrieben wird, wie auch in der ersten Fassung, in die aktuelle Tabelle der Datei, welche das Makro enthält - und natürlich ist auch das hier produzierte Ergebnis statisch (wird also nur durch neuerliches Ausführen des Makros verändert).

Grüße
bastla

[Edit] Löschen der bereits vorhandenen (alten) Daten des Zieltabellenblattes verbessert [Edit]
Member: Rio1980
Rio1980 Sep 05, 2011 at 09:02:58 (UTC)
Goto Top
Hallo bastla!

Vielen Dank für die Mühe! Das importieren der Daten aus den Textdateien klappt super! face-smile
Allerdings erscheint beim durchführen des Makros ziemlich oft (vermutlich so oft wie Zeilen in meiner generierten Sammeldatei existieren) die Meldung " ist bereits vorhanden!" und nachdem das Makro durchgelaufen ist habe ich zwar eine wunderschöne Sammlung der Daten aus den Textdateien, aber die DAten aus den Exceldateien 1 - 3 sind nicht gefunden....bzw nicht übernommen worden.

Viele Grüße
Rio
Member: bastla
bastla Sep 05, 2011 at 10:38:13 (UTC)
Goto Top
Hallo Rio1980!
Allerdings erscheint beim durchführen des Makros ziemlich oft (vermutlich so oft wie Zeilen in meiner generierten Sammeldatei existieren)
Die Meldung betrifft nur das Einlesen der Daten aus "Datei1.xls" - "Datei3.xls" und hat mit den Daten aus den Textdateien nix zu tun ...
die Meldung " ist bereits vorhanden!"
Die Meldung sollte auch eine Teilenummer ausgeben ...

Sinn der gesamten Aktion: In den Zeilen 25 bis 43 wird aus den Daten der xls-Dateien ein "Dictionary" aufgebaut - dieses besteht aus Datensätzen mit einem Schlüssel (der Teilenummer) und dem zugehörigen Wert (den weiteren Werten aus der Zeile als Array) und existiert nur zur Laufzeit im Arbeitsspeicher. Der Schlüssel muss dabei einmalig sein, daher wird zunächst geprüft, ob er bereits existiert, und wenn ja, die angesprochene Meldung erzeugt.
Zum Testen kannst Du im VBA-Editor den Cursor zwischen "Sub Importieren()" und "End Sub" platzieren und dann mit der Taste F8 in Einzelschritten durch den Ablauf gehen. Dabei kannst Du jederzeit (zB wenn eben die angesprochene Meldung ausgegeben wurde) den Mauszeiger über einer Variablen im Code (zB "Schl" platzieren und Dir damit deren Wert anzeigen lassen.

Eine Anmerkung noch: Da ich nicht weiß, welche Tabellen es in Deinen xls-Dateien gibt, wird jeweils auf die erste dieser Tabellen zugegriffen - siehe dazu Zeile 27. Diese Zeile könntest Du auf
With Quelle.Worksheets("Blattname")
ändern, damit die Tabelle "Blattname" ausgelesen wird.

Grüße
bastla
Member: Rio1980
Rio1980 Sep 12, 2011 at 09:34:07 (UTC)
Goto Top
Hallo Bastla!

Die Meldung betrifft nur das Einlesen der Daten aus "Datei1.xls" - "Datei3.xls" und hat mit den Daten aus den
Textdateien nix zu tun ...

Leider hat sich das Problem aufgetan, dass die Teile-Nr in den Exceldateien doch wiederholt vorkommen kann, was auch leider nicht abzuändern ist face-sad
Ich habe das Makro in der Version durchlaufen lassen und versucht die Zeilen 34 und 35 wegzulassen, aber das importeiren der Daten aus den Datei1.xls" - "Datei3.xls klappt leider nicht. Der Unterschied ist natürlich nur, dass die Msg-Box nicht mehr erscheint und das Makro dann Meldungen durchläuft. Die Dateien werden im Hintergrund zwar geöffnet und er arbeitet auch ne weile damit, aber am Ende kommt "nur" eine Auflistung der importierten Daten aus den Textdateien ohne die Daten aus den Exceldateien 1-3. Für mich sieht es so aus dass das "Dictionary" aus den Exceldateien aufgebaut wird, aber der Abgleich zwischen der erzeugten Tabelle aus den Textdateien und dem "Dictionary" hinkt.

Was die Anzahl der Tabellen in den Exceldateien angeht, sind da zwar mehrere vorhanden, aber ich benötige nur die Daten aus Tabelle1, somit muss die Zeile 27 nicht abgeändert werden.

Viele Grüße
Rio
Member: bastla
bastla Sep 12, 2011 at 14:53:42 (UTC)
Goto Top
Hallo Rio1980!

Das Redundanz-Problem ist eigentlich auch eine andere Baustelle - die Zeilen 34 und 35 kannst Du also weglassen (es wird dann eben - kommentarlos - immer mit den ersten gefundenen Daten gearbeitet).
Wenn der Tabellenname immer "Tabelle1" lautet, würde ich diesen trotzdem in Zeile 27 verwenden ("Tabelle1" muss nicht immer das erste Blatt der Mappe sein).
Da das Script bei meinen Tests den gewünschten Erfolg gebracht hat, ist es schwer, den Grund für den Fehler mit Deinen Daten nachzuvollziehen - vielleicht noch als Hinweis zur Fehlersuche:
Setze auf die Zeile 61 einen Breakpoint (vor der Zeile in die graue Spalte klicken - es wird dann ein roter Punkt angezeigt) und die Ausführung hält an dieser Stelle an; dann kannst Du, wie oben beschrieben, durch Zeigen (ohne Klicken) mit der Maus auf eine Variable deren Wert anzeigen lassen - insbes die Variable "Schl" aus Zeile 60 wäre hier interessant. Danach kannst Du mit F8 in Einzelschritten weiter gehen, oder mit F5 den Ablauf wieder starten (bis zum nächsten Breakpoint oder bis zum Ende).

Grüße
bastla
Member: Rio1980
Rio1980 Sep 16, 2011 at 13:41:13 (UTC)
Goto Top
Hallo Bastla!

Ein wiederholtes Danke für deine Bemühungen mir zu helfen!
Deine Anregungen habe ich so weit alle durchprobiert. Die Zeile 27 ist abgeändert und ich habe probiert dem Fehler durch manuelles Durchlaufen des Makros auf die Spur zu kommen. Der Einfachheit halber habe ich EINE einzige DUMMY Exceldatei erstellt in der nur eine Zeile mit Daten enthalten ist, wobei der Schlüssel (Schl = Teilenummer) mit der Teilenummer aus der ersten Zeile der generierten Sammeldatei identisch ist. Beim durchlaufen der Zeilen 1 - 43 wird somit im "Dictionary" nur ein einziger Schlüssel erstellt und die dazugehörigen Daten müssten eingelesen werden. Beim weiteren durchlaufen des Makros wird dann beim ersten Durchlauf der Schleife (Zeile 50 - 68) der "Schl" in Zeile 60 korrekt erkannt und müsste mit dem "Schl" aus dem "Dictionary" identisch sein. Bei der Prüfung in Zeile 61 wird aber anscheinend keine Übereinstimmung gefunden, da direkt in die Zeile 64 gesprungen wird. Es sieht also so aus das der "Schl" zwar identisch ist, aber die Zeilen 62 - 63 nicht abgearbeitet werden...
Hast du evtl noch eine Idee? Die Teilenummern sehen wie folgt aus, falls das irgendeine Rolle spielt: 12345678-01

Viele Grüße
Rio
Member: bastla
bastla Sep 16, 2011 at 13:53:17 (UTC)
Goto Top
Hallo Rio1980!
Es sieht also so aus das der "Schl" zwar identisch ist
... was es auch würde, wenn im einen Fall am Ende ein Leerzeichen stünde, im anderen nicht - versuch es daher mit folgender Zeile 60:
Schl = Trim(Cells(Zeile, SchlSpalte).Value) 'Schlüsselbegriff auslesen
Grüße
bastla
Member: Rio1980
Rio1980 Sep 20, 2011 at 00:02:14 (UTC)
Goto Top
Hallo Bastla!

Das wars wohl gewesen! Das Makro läuft jetzt durch und findet jetzt Übereinstimmungen zu den "Schlüsseln" und kopiert die entsprechendenDaten in die Sammeldatei.Somit steht schon mal fest, dass das Makro nun funktioniert. Allerdings sind die Daten nicht vollständig was die Anzahl der übereinstimmenden "Schlüssel" angeht...werde wohl schauen müssen wo es noch Unterschiede (Schreibweise, Leerschritte etc) geben kann. Vielen Dank! face-smile

Viele Grüße
Rio