PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Office, Software, Hardware, Technische Fragen
Microsoft Excel, Google Sheets
Vergleichen von Zahlenkombinationen
Beitrag
<blockquote data-quote="gmtm" data-source="post: 2719001" data-attributes="member: 348715"><p>Hallo,</p><p>freut mich, wenn die Tipps helfen.</p><p>Du nutzt bereits Arrays für die Variabeln lz und kz. Allerdings vergleichst Du die Werte jeweils nur zeilenweise, was den Ablauf verlangsamt.</p><p>Versuche doch mal, die gesamte Blöcke A und B in den Array zu schreiben, in dem Du neben der Spaltenanzahl auch die Zeilenanzahl bei der Definition des Arrays angibst:</p><p>Dim lz(fin1, 5) as integer</p><p>Dim kz(fin2, 5) as integer</p><p></p><p>fin1 und fin2 müssen dafür natürlich schon bekannt sein (daher das</p><p>"fin1 = Cells(Rows.Count, 1).End(xlUp).Row: fin2 = Cells(Rows.Count, 7).End(xlUp).Row"</p><p>evtl. in einem separaten Makro / Prozedur vorab laufen lassen). Alternativ kannst Du auch feste Werte für fin1 und fin2 setzen.</p><p></p><p>Dann füllst Du die beiden Arrays mit</p><p>For i = 1 To fin1</p><p>lz(i,1) = Cells(i, 1): lz(i,2) = Cells(i, 2): lz(i,3) = Cells(i, 3): lz(i,4) = Cells(i, 4): lz(i,5) = Cells(i, 5)</p><p>Next i</p><p></p><p>For j = 1 To fin2</p><p>kz(j,1) = Cells(j, 7): kz(j,2) = Cells(j, 8): kz(j,3) = Cells(j, 9): kz(j,4) = Cells(j, 10): kz(j,5) = Cells(j, 11)</p><p>Next j</p><p></p><p>Den Abgleich machst Du dann in einer neuen Schleife und greifst nur noch auf die in den Arrays gespeicherten Werte zurück</p><p>For i = 1 To fin1</p><p>For j = check To fin2</p><p>If lz(i,1) = kz(j,1) And lz(i,2) = kz(j,2) und so weiter...</p><p></p><p>Das sollte den Ablauf schon deutlich beschleunigen. Wenn Du dann noch einen dritten Array anlegst, in dem die Ergebnisse gespeichert werden bevor sie ausgegeben (also im Tabellenblatt eingetragen werden) werden, müsste es recht flott laufen.</p><p></p><p>Wichtig: wenn Du "Application.ScreenUpdating = False" zu Beginn einer Prozedur verwendest, denk daran, am Ende die Ausgabe wieder anzuschalten ("Application.ScreenUpdating = True") ;-)</p><p></p><p></p><p>Viel Erfolg und viele Grüße !</p></blockquote><p></p>
[QUOTE="gmtm, post: 2719001, member: 348715"] Hallo, freut mich, wenn die Tipps helfen. Du nutzt bereits Arrays für die Variabeln lz und kz. Allerdings vergleichst Du die Werte jeweils nur zeilenweise, was den Ablauf verlangsamt. Versuche doch mal, die gesamte Blöcke A und B in den Array zu schreiben, in dem Du neben der Spaltenanzahl auch die Zeilenanzahl bei der Definition des Arrays angibst: Dim lz(fin1, 5) as integer Dim kz(fin2, 5) as integer fin1 und fin2 müssen dafür natürlich schon bekannt sein (daher das "fin1 = Cells(Rows.Count, 1).End(xlUp).Row: fin2 = Cells(Rows.Count, 7).End(xlUp).Row" evtl. in einem separaten Makro / Prozedur vorab laufen lassen). Alternativ kannst Du auch feste Werte für fin1 und fin2 setzen. Dann füllst Du die beiden Arrays mit For i = 1 To fin1 lz(i,1) = Cells(i, 1): lz(i,2) = Cells(i, 2): lz(i,3) = Cells(i, 3): lz(i,4) = Cells(i, 4): lz(i,5) = Cells(i, 5) Next i For j = 1 To fin2 kz(j,1) = Cells(j, 7): kz(j,2) = Cells(j, 8): kz(j,3) = Cells(j, 9): kz(j,4) = Cells(j, 10): kz(j,5) = Cells(j, 11) Next j Den Abgleich machst Du dann in einer neuen Schleife und greifst nur noch auf die in den Arrays gespeicherten Werte zurück For i = 1 To fin1 For j = check To fin2 If lz(i,1) = kz(j,1) And lz(i,2) = kz(j,2) und so weiter... Das sollte den Ablauf schon deutlich beschleunigen. Wenn Du dann noch einen dritten Array anlegst, in dem die Ergebnisse gespeichert werden bevor sie ausgegeben (also im Tabellenblatt eingetragen werden) werden, müsste es recht flott laufen. Wichtig: wenn Du "Application.ScreenUpdating = False" zu Beginn einer Prozedur verwendest, denk daran, am Ende die Ausgabe wieder anzuschalten ("Application.ScreenUpdating = True") ;-) Viel Erfolg und viele Grüße ! [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 5, ▼ = 2 und ■ = 7, was ist ▲ × ▼ + ■?
Antworten
Start
Forum
Sonstiges
Office, Software, Hardware, Technische Fragen
Microsoft Excel, Google Sheets
Vergleichen von Zahlenkombinationen
Oben