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

Liste vervollständigen-Kriterium prüfen und Zeile

Liste vervollständigen-Kriterium prüfen und Zeile
24.09.2015 10:14:03
Bernd
Hallo,
folgendes Problem, welches wohl nur durch ein Makro sinnvoll zu lösen ist:
In einer Auswertung habe ich in Spalte A Materialien und in Spalte B dazugehörigen Merkmale.
Jedes Merkmal pro Material sollte eigentlich in 5 Sprachen übersetzt sein, d.h. folglich muss es pro Merkmal und Material 5 Zeilen mit den unterschiedlichen Sprachen in der Liste geben.
Leider ist das nicht immer der Fall.
Und nun wird eben eine vervollständigte Liste benötigt, wie in Spalten F-I zu sehen, d.h. wird eine der Sprachen pro Material und Merkmal nicht gefunden, füge eine neue Zeile in die Liste, übernimm Material und Merkmal und die nicht gefundene Sprache in die neu eingefügte Zeile.
Und dies eben bis zum Ende der Liste, was in der Wirklichkeit mehrere tausend Einträge bedeutet.
Hier die entsprechende Bespieldatei:
https://www.herber.de/bbs/user/100354.xls
Kann mir da jemand bei helfen?
Wäre echt super nett.
Vielen Dank im Voraus - Gruss Bernd

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste vervollständigen-Kriterium prüfen und Zeile
24.09.2015 12:08:51
Bernd
Hallo Tino, und alle anderen
erstmal natürlich vielen lieben Dank.
Boar das wird aber was… dachte kann das auf meinen konkreten Fall ändern, wobei mir da wohl doch einiges an VBA-Wissen fehlt.
Deshalb ist es wohl besser gleich an der Originalliste zu bleiben.
Aus meinem Beispiel entsprechen:
- Spalte A (im Beispiel ‚Material‘) heißt im Original ‚Merkmalsname‘ - entspricht aber ebenso Spalte A
- Spalte B (in meinem Beispiel ‚Merkmal‘) entspricht in der Originalliste Spalte C (Überschrift = ZAEHLER)
- und Spalte C (in meinem Beispiel ‚Sprache‘) entspricht in der Originalliste Spalte D (Überschrift = SPRAS)
Die zu prüfenden Sprachen stehen auf Tabellenblatt ‚Sprachen‘
Ob die Ausgabe letztlich auf einem neuen Tabellenblatt oder rechts neben der Liste erfolgt ist im Prinzip egal. Besser wäre aber auf einem neuen Tabellenblatt.
Hier mal ein Teil der Originalliste:
https://www.herber.de/bbs/user/100362.xlsx
Ist also in Wirklichkeit nicht viel anders, ein paar Spalten mehr gibts noch.
Nur alleine bekomm ich das wohl nicht angepaßt, leider.
Getestet hab ich, nur wenn ich die rechte 'Ergebnisliste' entferne macht der gar nix mehr, und ich weiss nicht wirklich wieso.
Wärs möglich dass da nochmal drüberschaust, wäre echt super nett.
Danke, aber erstmal Mittagspause... Gruß Bernd

Anzeige
Liste vervollständigen
24.09.2015 13:22:38
Rudi
Hallo,
Sub aaaa()
Dim arrTMP, arrSPRAS, i As Long, j As Long
Dim objMZ As Object, objMZS As Object, vKey
Dim arrOut()
Set objMZ = CreateObject("Scripting.Dictionary")
Set objMZS = CreateObject("Scripting.Dictionary")
arrTMP = Sheets("Sheet1").Cells(1, 1).CurrentRegion
arrSPRAS = Sheets("Sprachen").Cells(1, 1).CurrentRegion
For i = 2 To UBound(arrTMP)
objMZ(arrTMP(i, 1) & "|" & arrTMP(i, 3)) = 0
objMZS(arrTMP(i, 1) & "|" & arrTMP(i, 3) & "|" & arrTMP(i, 4)) = arrTMP(i, 6)
Next
For Each vKey In objMZ
For i = 1 To UBound(arrSPRAS)
If Not objMZS.exists(vKey & "|" & arrSPRAS(i, 1)) Then
objMZS(vKey & "|" & arrSPRAS(i, 1)) = ""
End If
Next
Next
ReDim arrOut(1 To objMZS.Count + 1, 1 To 6)
arrOut(1, 1) = "Merkmal"
arrOut(1, 2) = "Bezeichnung"
arrOut(1, 3) = "Zähler"
arrOut(1, 4) = "SPRAS"
arrOut(1, 5) = "Sprache"
arrOut(1, 6) = "Wert"
j = 1
For Each vKey In objMZS
j = j + 1
arrOut(j, 1) = Split(vKey, "|")(0)
arrOut(j, 2) = Application.VLookup(arrOut(j, 1), Sheets("Sheet1").Range("A:B"), 2, 0)
arrOut(j, 3) = Split(vKey, "|")(1)
arrOut(j, 4) = Split(vKey, "|")(2)
arrOut(j, 5) = Application.VLookup(arrOut(j, 4), Sheets("Sprachen").Range("A:B"), 2, 0)
arrOut(j, 6) = objMZS(vKey)
Next
Sheets.Add.Cells(1, 1).Resize(UBound(arrOut), UBound(arrOut, 2)) = arrOut
End Sub
Gruß
Rudi

Anzeige
AW: Liste vervollständigen
24.09.2015 13:55:17
Bernd
Hallöle,
danke auch Dir Rude :)
leider macht der Code nicht ganz was ich will.
Das blöde daran ich kann den nicht wirklich nachvollziehen :(
Deshalb mal hier die komplette und originale Datei, ist ja nix geheimes
Dein Makro hab ich mal reinkopiert.
https://www.herber.de/bbs/user/100366.xlsm
letztlich sollen pro Merkmalsname (=Spalte A) und Zähler(=Spalte) jeweile alle Sprachen vorhanden sein,also da es 12 Sprachen sind auch pro 12 Zeilen, wobei der Wert bei den eingefügten natürlich leer sein soll.
Bin leider noch einmal auf Eure Hilfe angewiesen, das ist mir wirklich zu kompliziert.
Ich versuch das heut Abend gerne mal nachzuvollziehen, mal schaun wie weit ich komme.
Schon mal vielen Dank vorab - Gruss Bernd

Anzeige
AW: Liste vervollständigen
24.09.2015 15:13:55
Rudi
Hallo,
genau das macht mein Makro.
Du musst nur mal nach Merkmal und Zähler sortieren.
Gruß
Rudi

AW: Liste vervollständigen
24.09.2015 15:29:02
Bernd
Hallöle,
ja logo, und natürlich hast wieder recht... boar.
Vielen lieben Dank Euch allein, eben besonders Dir Rudi und auch Dir Tino.
Echt spitze von Euch, danke.
Euch noch nen schönen Tag
Gruß Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige