Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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

Gleiche Werte von zwei Spalten in gleiche Zeile

Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 09:05:11
zwei
Servus zusammen.
Ich benötige einen VBA Code zum Sortieren gleicher Werte mit Text in dieselbe Zeile.
Hierzu erstmal ein Bild:
Userbild
Die Übersicht vom Dezember 2016 soll unberührt bleiben.
Im Juli 2017 soll das Makro so funktionieren dass es alle 3 Spalten (Maschinennummer, Investition und Beschreibung) in die Zeilen sortiert wo auch die Maschinennummer im Dezember 2016 steht.
So, dass zum Beispiel die Maschinennummern 9932 und 9932 in der selben Zeile stehen und man somit den direkten Vergleich beider Investitionen sieht.
Außerdem soll im Juli 2017 für die Maschinennummer 1111 die Zelle rot eingefärbt werden, weil sie ja da in der Spalte fehlt.
Ich würde das gerne in VBA selbst programmieren aber soweit reichen meine Kenntnisse dann doch nicht.
Danke schonmal :)

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Dictionary
08.08.2017 09:14:20
Fennek
Hallo,
mein Vorschlag:
Die Maschinennr. aus 2016 als "key" in ein Dictionary laden. Dann die Tabelle aus 2017 in die "Items". Dabei bleibt die Reihenfolge von 2016 erhalten. Werte, die nicht mehr vorkommen "1111", bleiben frei.
Als letzte Schritt muss man 2017 nach neuen Werten durchsuchen und anfügen.
Jetzt bin ich auf andere Ideen gespannt.
mfg
AW: VBA Dictionary
08.08.2017 09:41:13
watsonenge
Fennek das klingt schon mal gut. Kannst du mir ein VBA Grundgerüst geben ? Ich bekomme das mit meinen Kenntnissen leider nicht hin...
AW: warum VBA? ...
08.08.2017 09:21:03
...
Hallo,
... mit einer Hilfsspalte mit oder auch ohne Formel kannst Du mit daran anschließender Sortierung der Julidaten das gewünschte auch schnelle so vornehmen.
Gruß Werner
.. , - ...
Anzeige
AW: warum VBA? ...
08.08.2017 09:26:29
watsonenge
Ich möchte das in VBA realisieren, weil ich einen automatisierten Befehl brauche, der mir das mit jeder Liste machen kann wo ich dann auch die Range festlege. Das Bild ist quasi nur ein Ausschnitt einer sehr großen Liste und daher würde ich es gerne in VBA programmieren.
AW: dann folge dem Vorschlag von Fennek owT
08.08.2017 09:35:58
Fennek
Gruß Werner
.. , - ...
AW: Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 10:00:26
zwei
Hallo watsonenge,
im nachfolgenden Makro muss du noch Anpassungen bzgl. der Spalten- und Zeilen-Nummern machen.
Gruß
Franz
Sub SortMaschinen()
Dim wks As Worksheet
Dim Spa_VJ As Long, Spa_J As Long
Dim Zei_1 As Long, Zei_L As Long, Zei_VJ As Long, Zei_J As Long
Dim arrData_J
Dim varMaschNr As Variant
Set wks = ActiveSheet
'die nachfolgenden Werte ggf. anpassen
Spa_VJ = 1          'Spalte mit Maschinen-Nr des Vorjahres
Spa_J = Spa_VJ + 3  'Spalte mit Maschinen-Nr des aktuellen Jahres
Zei_1 = 4           'Zeile mit 1. Maschinen-Nr. unter den Spaltentiteln
With wks
'letzte Zeile mit Masch.-Nr im Vorjahr
Zei_L = .Cells(.Rows.Count, Spa_VJ).End(xlUp).Row
'Daten des laufenden Jahres in Array laden
arrData_J = .Range(.Cells(Zei_1, Spa_J), .Cells(Zei_L, Spa_J + 2))
'Daten des laufenden Jahres löschen
.Range(.Cells(Zei_1, Spa_J), .Cells(Zei_L, Spa_J + 2)).ClearContents
'letzte Zeile mit Masch.-Nr im Vorjahr
Zei_L = .Cells(.Rows.Count, Spa_VJ).End(xlUp).Row
'Nummern im laufenden Jahr sortieren
For Zei_VJ = Zei_1 To Zei_L
varMaschNr = .Cells(Zei_VJ, Spa_VJ).Value
For Zei_J = LBound(arrData_J, 1) To UBound(arrData_J, 1)
If arrData_J(Zei_J, 1) = varMaschNr Then
.Cells(Zei_VJ, Spa_J) = varMaschNr
.Cells(Zei_VJ, Spa_J + 1) = arrData_J(Zei_J, 2)
.Cells(Zei_VJ, Spa_J + 2) = arrData_J(Zei_J, 3)
arrData_J(Zei_J, 1) = ""
Exit For
End If
Next Zei_J
Next Zei_VJ
'fehlende Nrn. markieren
For Zei_VJ = Zei_1 To Zei_L
If .Cells(Zei_VJ, Spa_J) = "" Then
.Cells(Zei_VJ, Spa_J).Interior.Color = RGB(255, 0, 0)
End If
Next Zei_VJ
'im Vorjahr nicht vorhandene Masch.Nrn. im laufenden Jahr nachtragen
For Zei_J = LBound(arrData_J, 1) To UBound(arrData_J, 1)
If arrData_J(Zei_J, 1)  "" Then
Zei_L = Zei_L + 1
.Cells(Zei_L, Spa_J) = arrData_J(Zei_J, 1)
.Cells(Zei_L, Spa_J + 1) = arrData_J(Zei_J, 2)
.Cells(Zei_L, Spa_J + 2) = arrData_J(Zei_J, 3)
End If
Next Zei_J
End With 'wks
End Sub

Anzeige
AW: Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 10:14:54
zwei
Hallo Franz,
schon einmal ein großes Dankschön dass du dir die Zeit genommen hast.
Leide haut das bei mir nicht so hin wie ich mir das vorgestellt hab. Hier ein Bild nach dem Ausführen des Codes.
Userbild
Auch mit den editierten richtigen Spalten & Zeilennummern funktioniert es leider nicht.
AW: Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 10:28:52
zwei
Ich habe nochmal etwas an den Spalten geändert und jetzt hat es geklappt. Super, danke dir vielmals !!!
AW: Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 11:28:12
zwei
Hallo Franz,
ich hab noch ein kleines Anliegen. Gibt es eine Möglichkeit per VBA die Zeilen, die rote Felder beinhalten, also Werte die im laufenden Jahr nicht existieren, nach unten zu verschieben ? Dass oben alle gefundenen Werte/Zeilen stehen und danach die roten ?
Anzeige
AW: Gleiche Werte von zwei Spalten in gleiche Zeile
08.08.2017 15:43:15
zwei
Hallo watsonge,
dazu muss du den Sierabschnitt des Makt´ros anpassen.
    'Nummern im laufenden Jahr sortieren
For Zei_VJ = Zei_1 To Zei_L
varMaschNr = .Cells(Zei_VJ, Spa_VJ).Value
For Zei_J = LBound(arrData_J, 1) To UBound(arrData_J, 1)
If arrData_J(Zei_J, 1) = varMaschNr Then
.Cells(Zei_VJ, Spa_J) = varMaschNr
.Cells(Zei_VJ, Spa_J + 1) = arrData_J(Zei_J, 2)
.Cells(Zei_VJ, Spa_J + 2) = arrData_J(Zei_J, 3)
arrData_J(Zei_J, 1) = ""
Exit For
End If
If Zei_J = UBound(arrData_J, 1) Then
Zei_L = Zei_L + 1
.Cells(Zei_L, Spa_J) = .Cells(Zei_VJ, Spa_VJ)
.Cells(Zei_L, Spa_J + 1) = .Cells(Zei_VJ, Spa_VJ + 1)
.Cells(Zei_L, Spa_J + 2) = .Cells(Zei_VJ, Spa_VJ + 2)
End If
Next Zei_J
Next Zei_VJ
Gruß
Franz
Anzeige
über neue Liste
08.08.2017 10:10:41
KlausF
Hi, auf die Schnelle:
man könnte auch die Anzahl der aktuellen Listen abfragen und dann die
Maschinennummern von Dez 2016 als neue Liste anfügen.
Dann nach der neuen (letzten) Liste sortieren lassen und die Liste wieder löschen.
Ich meine, dass Hans Herber auch mal eine Beispieldatei dazu gemacht hat.
Ungetestet.
Gruß
Klaus

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige