Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1404to1408
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

VBA SpaltenVergleich

VBA SpaltenVergleich
01.02.2015 22:10:46
Jürgen
Hallo,
könnte mir jemand bei folgender Aufgabenstellung behilflich sein.
Es soll per VBA ein Zell-Bereich mit sich selbst verglichen werden und das (oder die) Ergebnis(se) in einem vorgegeben Zell-Bereich aufgelistet werden.
An Hand der Beispiel-Datei sollte die Aufgabenstellung deutlicher zu verstehen sein.
https://www.herber.de/bbs/user/95458.xls
Für einen Hilfestellung und oder Lösung wäre ich sehr dankbar.
Mit besten Grüßen
DU Jürgen

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA SpaltenVergleich
01.02.2015 22:17:07
{Boris}
Hi Jürgen,
woher muss der Code denn wissen, WELCHE Zahlenkombis gesucht sind?!
VG, Boris

AW: VBA SpaltenVergleich
01.02.2015 22:19:40
Jürgen
Hallo Boris,
Tja, das ist ja eben die Aufgabenstellung, der Zell-Bereich soll mit sich selbst vergleichen
Jüregen

OK, ich lass es offen...
01.02.2015 22:24:35
{Boris}
Hi Jürgen,
...da ich heute Abend nicht mehr die Muße dazu habe ;-)
VG, Boris

AW: OK, ich lass es offen...
01.02.2015 22:25:34
Jürgen
Ok, Danke für Deinen Einsatz
Jürgen

AW: VBA SpaltenVergleich
01.02.2015 22:27:41
Oberschlumpf
Hi Jürgen
was für n Grund hats, dass nicht alle mehrfahc vorkommenden Zahlen farblich markiert sind?
Oder ist im Realbetrieb gar keine farbl. Markierung vorhanden, sie dient im Bsp nur der besseren Erkennbarkeit, und du hast "nicht sauber" vorgearbeitet und einige Zahlen vergessen, farblich hervorzuheben?
Denn grundstzl. sollte es kein Prob sein, n Code zu erstellen, der überprüft, wie oft die Zahlen im Bereich vorkommen und Zahlen mit mind. 3facher Wiederholung "auszuwerfen".
Ach so, wie viele Spalten dürfen pro Zeile ab T14 benutzt werden, bevor die nächste Zeile dran ist?
Ciao
Thorsten

Anzeige
AW: VBA SpaltenVergleich
01.02.2015 22:33:00
Jürgen
Hallo Thorsten,
Danke für Deine Teilnahme an meiner Aufgabenstellung
Ja, richtig die farbliche Markierung dient nur der besseren Optik.
Zu Deiner Frage: mehr als acht sind doch nicht möglich
Gruß J.

AW: VBA SpaltenVergleich
01.02.2015 23:19:49
Jürgen
wurde nicht zufriedenstellend beantwortet

AW: VBA SpaltenVergleich
01.02.2015 23:23:06
Oberschlumpf
du meinst wahrsch. "vergessen, die Frage als noch offen zu markieren"
Das, was du geschrieben hast, kommt nich sooo nett rüber...

AW: VBA SpaltenVergleich
01.02.2015 23:33:19
Jürgen
ist das so?
Mit viel Liebe gesendet
Gruß Jürgen

AW: VBA SpaltenVergleich
02.02.2015 08:01:35
Oberschlumpf
hmm, du verarschst mich...
ok, ich helf dir trotzdem, aber
Eigentlich bin ich auch als Antworter ein großer Fan von Excel-Dateien, in denen funktionsfähig mein Code eingetragen ist.
Bei dir mach ich mal ne Ausnahme.
Und vorher noch n Hinweis auf etwas, was nicht zusammen passt:
Du schreibst in Tabelle1:
Nur Zahlen-Kombinatioen ab drei Übereinstimmungen
Dann stimmt aber deine Ergebnisliste in Tabelle1 nicht.
Z Bsp die Zahlen 455 + 456 sind in der Bsp-Tabelle nur 2x eingetragen.
Wieso erscheinen sie in der Ergebgnistabelle, wenn jede Zahl doch mind. 3x eingetragen sein muss?
Schlussendlich dürfen nach Vorgabe "nur bei 3 Übereinstimmungen" nur die Zahlen 243, 633 + 759 in der Ergebnisliste erscheinen, was mit meinem Code auch geliefert wird.
So, nun zur Funktionsweise meines Codes:
1. zuerst wird der definierte Zellbereich, hier "E12:L17", Zelle für Zelle untereinander in die Hilfsspalte "AB" übertragen
2. dann werden alle eingetragenen Werte in AB aufsteigend sortiert
3. dann werden alle Werte, die mind. 3x gleich sind, in eine Array-Variable (AV) eingelesen
4. vor dem Einlesen in die AV wird jedes mal geprüft, ob ein Wert nicht schon eingetragen ist
So wird sichergestellt, dass jeder Wert wirklich nur 1x in der AV eingetragen ist
5. nun werden alle Werte aus der AV in die Ergebnisliste übertragen
Dabei wird darauf geachtet, wenn, bei T14 beginnend, Y14 erreicht wird, dass die nächsten, möglichen Werte ab T15 ff. eingetragen werden
6. im letzten Schritt wird die Hilfsspalte AB vollständig gelöscht
Hier nun der Code:
Wichtig!!
Die Forumssoftware fügt leider bei zu breit geratenen Codezeilen Zeilenumbrüche ein, damits hier im Forum immer "schön" aussieht.
Das kann aber zur Folge haben, dass der Code, wenn 1:1 kopiert + im VBE eingefügt, nicht mehr funktioniert.
Du musst also drauf achten, dass "falsche" Zeilenumbrüche im VBE von dir entfernt werden.
Hilfts denn?
Sub sb3fach()
Dim lloRow As Long, lloCol As Long, lrgCell As Range, liMore2 As Integer, larMore2() As  _
Variant, liIdx As Integer, lboNotOk As Boolean
lloRow = 1
ReDim larMore2(0)
With Sheets(2)
For Each lrgCell In .Range("E12:L17") 'Range anpassen
.Range("AB" & lloRow).Value = lrgCell.Value 'Hilfsspalte AB anpassen, wenn  _
erforderlich
lloRow = lloRow + 1
Next
.Range("AB1:AB" & .Cells(Rows.Count, 28).End(xlUp).Row).Sort Key1:=.Range("AB1"),  _
Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For lloRow = 1 To .Cells(Rows.Count, 28).End(xlUp).Row
If .Range("AB" & lloRow).Value = .Range("AB" & lloRow + 1).Value Then
liMore2 = liMore2 + 1
If liMore2 >= 2 Then
For liIdx = 0 To UBound(larMore2)
If larMore2(liIdx) = .Range("AB" & lloRow).Value  _
Then
lboNotOk = True
Exit For
End If
Next
If lboNotOk = False Then
larMore2(UBound(larMore2)) = .Range("AB" &  _
lloRow).Value
ReDim Preserve larMore2(UBound(larMore2) + 1)
Else
lboNotOk = False
End If
liMore2 = 0
End If
Else
liMore2 = 0
End If
Next
ReDim Preserve larMore2(UBound(larMore2) - 1)
lloRow = 14
lloCol = 20
.Range("T14:Y15").Value = ""
For liIdx = 0 To UBound(larMore2)
.Cells(lloRow, lloCol).Value = larMore2(liIdx)
lloCol = lloCol + 1
If lloCol = 26 Then
lloCol = 20
lloRow = lloRow + 1
End If
Next
.Columns("AB:AB").Delete Shift:=xlToLeft
End With
End Sub
Ciao
Thorsten

Anzeige
AW: VBA SpaltenVergleich
02.02.2015 09:18:13
Jürgen
Guten Morgen Thorsten,
Nein, ich hab Dich nicht verars......
Danke für Deinen Einsatz, deine Bemühungen
Auch sehr nett und hilfreich die Erklärung zum Code.
Der Code ist ziemlich umfangreich, lass mich den erst einmal studieren und wie du schon erwähnt hast die Umbrüche entfernen.
Ich melde mich sobald ich damit durch bin, vor Übermorgen schaffe ich das jedoch nicht.
Mit besten Grüßen
DU Jürgen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige