Meine methode wäre die Verkettungsformel immer abändern. Ist aber viel Arbeit und wenn sich die Anzahl der Werte von Liste1-3 abändert ist alles neu zu machen.
Könnte mir jemand helfen?
MfG,
Philipp
Ich würde eine VBA-Lösung empfehlen (insbesondere bei tausenden von Einträgen).
In der Analge aber erst einmal ein Formelbeispiel:
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
anbei eine Beispieldatei mit zwei Makro Lösungen. Zum auflisten der verknüpften Werte oder zum Formeln einfügen.
Die Spalten 1-3 können in der Const Anweisung manuell geaendert werden, ebenso die Ergebnis Spalte, bei mir "I" gewaehlt.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • philzo187
27.04.2017, 02:47 (Dieser Beitrag wurde zuletzt bearbeitet: 27.04.2017, 02:47 von Ego.)
Hallo Philipp,
in der Anlage eine kleine Korrektur, wenn die benannte Liste vollständig gefüllt ist.
@ Gast
du solltest mehr im Speicher arbeiten. Das erhöht ein wenig den Schreibaufwand, verkürzt aber die Laufzeiten erheblich.
Bei 24*24*24 Einträgen benötigt dein Programm weit mehr als eine Minute und meins weniger als 0,1 Sekunden.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • philzo187
ich muss bewğndernswert vor dir den Hut abziehen wie schnell dein Programm arbeitet. Bin beeindruckt.
Mein einfaches Volksschüler Wissen reicht leider nicht aus deinen Code logisch nachvollziehen zu können!
Mich stört auch nicht das freimütig zuzugeben. Ich weiss das mein Programmier Wissen begrenzt ist.
Als altem Praktiker fiel mir auf das bei dir alle drei Listen gleich lang sind! Darum war ich aber neugierig was passiert wenn dein Programm mit den Original Werten wie in meinem Beispiel arbeiten muss. Irgenwas stimmt zum Schluss nicht?? Unsinnige Daten! Ich kann aber nicht nachvollziehen woran das liegt.
Letztendlich muss der :Frager selbst entscheiden welche Lösung er nimmt. Aber es hat Spass gemacht mit an einer Lösung zu tüfteln.
das Makro von Ego ist sehr unflexibel, da es nur auf gleichlange Listen ausgelegt ist.
Bei dem Makro von Gast123 ist die Variablendeklaration schlecht, da mit einer Ausnahme alle als Variant deklariert sind. Das ginge aber kürzer so:
Code:
Sub Liste_mitFormel_verketten()
Dim lzA As Long
Dim lzB As Long
Dim lzC As Long
Dim A As Long
Dim B As Long
Dim C As Long
Dim Z As Long
lzA = Application.WorksheetFunction.CountA(Columns(1))
lzB = Application.WorksheetFunction.CountA(Columns(2))
lzC = Application.WorksheetFunction.CountA(Columns(3))
Z = 0
For A = 2 To lzA
For B = 2 To lzB
For C = 2 To lzC
Cells(Z + 2, 5) = Cells(A, 1) & ">" & Cells(B, 2) & ">" & Cells(C, 3)
Z = Z + 1
Next
Next
Next
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag 28 • philzo187
Zitat: Irgenwas stimmt zum Schluss nicht?? Unsinnige Daten! Ich kann aber nicht nachvollziehen woran das liegt
und
Zitat: Irgenwas stimmt zum Schluss nicht?? Unsinnige Daten! Ich kann aber nicht nachvollziehen woran das liegt
Leider ist mir bei der Korrektur des ersten Fehlers ein zweiter unterlaufen, ich habe häufig eine Leerzelle mit ausgewertet. In der Anlage die Korrektur.
@Gast
zu
Zitat:ich muss bewundernswert vor dir den Hut abziehen wie schnell dein Programm arbeitet. Bin beeindruckt.
Mein einfaches Volksschüler Wissen reicht leider nicht aus deinen Code logisch nachvollziehen zu können!
Ich hoffe, dass meine Bemerkung nicht zu lehrmeisterlich angekommen ist.
Im Prinzip sind doch alle Lösungen gleich, eine dreifach geschachtelte Schleife.
Ich wollte dich nur auf eine Technik hinweisen, die ich auch erst in diesem Forum (von Attila und Fennek) gelernt habe:
Bei grossen Datenlisten
1) die Eingangslisten in einem Befehl aus dem Datenblatt in ein Variant-Array übernehmen,
2) die Verarbeitung im Speicher in Arrays durchzuführen und
3) das Ausgangsarray in einem Befehl ins Datenblatt schreiben.
Eine Zeitersparnis >99% ist doch Grund genug diese Technik zu nutzen.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
@ Ego dur hast Recht mit der Verarbeitungsgeschwindigkeit, das ist ein klarer Pluspunkt! Mit Arrays habe ich bisher fast nie gearbeitet, da kenne ich mich nicht aus. Damit zu arbeiten muss ich mir erst noch angewöhnen. (Der Mensch ist ein Gewohnteitstier !)
@ Edgar stimmt, meine Variablen waren als Variant deklariert. Die Frage schlecht ist relativ?? Bei einem heutigen RAM gleich welcher Grösse spielt es sicher keine Rolle ob eine Variable mit 2, 4, 8 oder 16 Byt deklariert wird. Das sehe ich gelassen, denn die Funktion ist auf jeden Fall gegeben. Manchmal nehme ich absichtlich Variant, wenn ich z.B. nicht genau weiss ob ich es mit Test, Zahl, Datum oder Bool Wert zu tun habe? Da gibt es bei Variant keinen Laufzeifehler!