Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenabgleich

Datenabgleich
15.09.2023 11:57:59
Tom
Hallo zusammen,

ich habe vor ein paar Jahren diesen Code gefunden und bisher immer genutzt. Inzwischen gibt es bestimmt bessere Möglichkeiten, vor allem weil dieser Code nur sehr eingeschränkt funktioniert.

Bei der folgenden Arbeitsmappe werden die Daten aus Info per Makro (auf den Kopf klicken) in Datenabgleich übertragen.
https://www.herber.de/bbs/user/162878.xlsm

1) Sobald es mehr als 23 Spalten sind muss ich im Code manuell eingreifen. Geht das einfacher?

2) Muss jede Zelle im Code manuell benannt werden oder geht das auch automatisch? Ist unglaublich aufwändig, weil die Tabelle auch für andere Zwecke genutzt werden soll

Vielleicht hat jemand eine Idee.

Danke vorab
TOM

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenabgleich
15.09.2023 14:22:21
Oberschlumpf
Hi Tom,

hier, versuch mal
https://www.herber.de/bbs/user/162884.xlsm

Ich hab für meinen Code ein neues Modul hinzugefügt.
Beachte bitte die Erklär-Kommentare im Code, die ich hinzugefügt habe, um meinen Code zu verstehen.

Hilfts?

Ciao
Thorsten
Datenabgleich
15.09.2023 16:01:43
Alwin Weisangler
Hallo Tom,

anbei mal eine andere Lösung:


Option Explicit

Sub Abgleichen()
Dim i&, j&, k&, arrTab(), arrAusgabe(1 To 10000, 1 To 2)
With Tabelle22
arrTab = .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 2).End(xlUp).Row, .Cells(1, Columns.Count).End(xlToLeft).Column))
For i = 1 To UBound(arrTab, 1) - 1
For j = 1 To UBound(arrTab, 2)
arrAusgabe(k + j, 1) = arrTab(1, j)
arrAusgabe(k + j, 2) = arrTab(i + 1, j)
Next j
k = k + 3 + j
Next i
End With
With Tabelle30
.Columns("A:B").ClearContents
.Cells(2, 1).Resize(UBound(arrAusgabe, 1), UBound(arrAusgabe, 2)) = arrAusgabe
End With
End Sub

Den Rahmen der Tabelle bekommst du mittels bedingter Formatierung.

=ODER($A1>"";$B1>"")

Markiere dazu beide Spalten gehe in bedingte Formatierungen, trage diese Formel ein und wähle dazu das Rahmenformat aus.
Im Übrigen sind in deiner hochgeladenen Auswertung einige Auswertungsfehler drin.
Anbei die Datei zwecks Vergleiches.
https://www.herber.de/bbs/user/162886.xlsm

Gruß Uwe


Anzeige
Datenabgleich
15.09.2023 17:18:45
Tom
Hallo Uwe,

vielen Dank auch an Dich.
Wäre es viel Aufwand hier auch kurz die Erläuterungen dazu zu schreiben, was jede Zeile für eine Aufgabe hat? :-)

Wäre mega

Danke und viele Grüße
TOM
Datenabgleich
15.09.2023 18:18:32
Alwin Weisangler
Gerne.



Sub Abgleichen()
Dim i&, j&, k&, arrTab(), arrAusgabe(1 To 10000, 1 To 2)
With Tabelle22
' Einlesen der kompletten Tabelle aus "Alle Infos" ins Array arrTab
arrTab = .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 2).End(xlUp).Row, .Cells(1, Columns.Count).End(xlToLeft).Column))

For i = 1 To UBound(arrTab, 1) - 1 ' Schleife i durchläuft Zeile für Zeile das Array arrTab
For j = 1 To UBound(arrTab, 2) ' Schleife j durchläuft Spalte für Spalte das Array arrTab
arrAusgabe(k + j, 1) = arrTab(1, j) ' Übergabe der gefundenen Werte aus arrTab in ArrAusgabe (Spalte 1)
arrAusgabe(k + j, 2) = arrTab(i + 1, j) ' Übergabe der gefundenen Werte aus arrTab in ArrAusgabe (Spalte 2)
Next j
k = k + 3 + j ' Zähler für den Abstand zum nächsten Werteblock nach jeden Durchlauf der j Schleife
Next i
End With
' Ausgabe ins Tabellenblatt "Datenabgleich"
With Tabelle30
.Columns("A:B").ClearContents ' Löscht alle Werte aus Spalte A und B
'Übergabe des Array arrAusgabe ins Tabellenblatt
.Cells(2, 1).Resize(UBound(arrAusgabe, 1), UBound(arrAusgabe, 2)) = arrAusgabe
End With
' Bedingte Formatierung erzeugt die Linien.
' Man kann das natürlich auch mit Code machen - ist aber in diesem Fall eigentlich sinnfrei
End Sub

Aktiviere das Lokalfenster und dann kannst du mit F8 Step by Step die Prozedur durchgehen und du siehst was passiert.
Ich hoffe es hilft dir weiter.

Gruß Uwe
Anzeige
Datenabgleich
15.09.2023 19:10:57
Tom
Vielen vielen Dank an alle! Großartig!
Ein schönes Wochenende Euch allen!

Gruß
Tom
Datenabgleich
15.09.2023 15:12:28
JoWE
Hallo Thorsten,

ich will wirklich nicht kritisieren aber frage mich doch warum Du
.Borders(xlDiagonalDown) und mit viel Code alle weiteren Parameter von Borders benutzt
und nicht stattdessen einfach nur .BorderAround LineStyle:=xlContinuous

Gruß
Jochen
Datenabgleich
15.09.2023 15:23:23
Tom
Hi Thorsten,

wow - vielen Dank auch für die vielen Erklärungen!!!
Endlich kann ich den Code auch inhaltlich 100% verstehen :-)

Danke vielmals.

Schönes Wochenende

Gruß
TOM
Anzeige
Datenabgleich
15.09.2023 15:25:35
Oberschlumpf
Hi Jochen,

hab jetzt keine Zeit, meine folgende Antwort zu prüfen, aber ich gng davon aus, dass .BorderAround... "nur" den Außenrahmen vom angegebenen Bereich behandelt - nicht aber auch die "Innenlinien".

Werd ich später testen, und hier ne Update-Datei uploaden :-)

Ciao
Thorsten
Border-Update :-)
15.09.2023 18:22:44
Oberschlumpf
Hi Jochen,
(Hi Tom),

danke für den Tipp, Jochen!
Dank dir hab ich...MIT NUR 1 CODEZEILE....24 Codezeilen ersetzt!^^ :-)

hier, Tom, eigtl noch mal das Gleiche, jetzt aber mit weniger Code
https://www.herber.de/bbs/user/162889.xlsm

Viel Spaß + Tschüss
Thorsten
Anzeige
Gerne
15.09.2023 19:01:34
JoWE

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige