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

index und vergleich

index und vergleich
13.07.2022 19:27:56
Björn

Moin Leute,

ich habe eine Formel, die ich gern in VBA nutzen würde. Ich bekomme das in VBA aber nicht umgesetzt - habe mehrere Varianten mit .match versucht, bekomme es aber nicht hin. Kann mir jemand helfen?

=INDEX('Tab1'!M:M;VERGLEICH('Tab2'!D2&'Tab2'!A2;'Tab1'!E$1:E$1000000&'Tab1'!A$1:A$1000000;0))

Danke

nach oben  nach unten

Betrifft: AW: index und vergleich
sieht nicht so aus als ob du das überhaupt in VBA versucht hast.
Zeig doch mal was der Makrorekorder auswirft und oder was du draus gemacht hast.

nach oben  nach unten

Betrifft: AW: index und vergleich
Das ist die Funktion aus Excel, die funktioniert. Die wollte ich gern in VBA umsetzen. Da ich nun unterwegs bin, kann ich die Versuche derzeit nicht hochladen.

nach oben  nach unten

Betrifft: AW: index und vergleich
Hi

Das kannst du so nicht direkt in VBA umsetzten, weil hier eine Matrixformel aktiv ist, die zuerst in einer Schleife die Verkettung der Zellen Spalte A und E ausführt und damit dann den Vergleich ausführt.
Diese interne Schleife kann VBA nicht ausführen, die müsstest du explizit als For-Next- Schleife programmieren.

Der Workaround wäre, die Excel-Zellformel-Berechnung zu nutzen, indem man die Formel als Textstring in englischer Schreibweise mit A1-Zellbezügen erstellt und dann mit Evaluate(Formel) berechnen lässt.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: index und vergleich
Da die Rückgabe auf wenige Variablen beschränkt ist, habe ich verschiedenen Zahlenwerte auf "Tab2" nun entsprechende Parameterangabe zugeordnet. Und in meiner Ursprungsliste (Tab1) eine Spalte mit den Nummern ergänzt. Vielleicht etwas umständlich, allerdings spare ich mir so die for_next_Schleife und vor allem funktioniert es ;-)

Gruß Björn


If Application.WorksheetFunction.CountIfs(Sheets("Tab1").Range("A1:A1000000"), Cells(i, 1), _
Sheets("Tab1").Range("E1:E1000000"), Cells(i, 4)) > 0 Then
var1 = Application.WorksheetFunction.SumIfs(Sheets(Tab1).Range("N1:N1000000"), _
Sheets(Tab1).Range("A1:A1000000"), Cells(i, 1), _
Sheets(Tab1).Range("E1:E1000000"), Cells(i, 4))
Cells(i, 7) = Application.WorksheetFunction.VLookup(var1, Sheets(Tab2).Range("NrZuordnung"), 2, False)
Else
Cells(i, 7) = "ohne Angabe"
End If

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: index und vergleich
13.07.2022 19:27:56
Björn
sieht nicht so aus als ob du das überhaupt in VBA versucht hast.
Zeig doch mal was der Makrorekorder auswirft und oder was du draus gemacht hast.

nach oben  nach unten

Betrifft: AW: index und vergleich
Das ist die Funktion aus Excel, die funktioniert. Die wollte ich gern in VBA umsetzen. Da ich nun unterwegs bin, kann ich die Versuche derzeit nicht hochladen.

nach oben  nach unten

Betrifft: AW: index und vergleich
Hi

Das kannst du so nicht direkt in VBA umsetzten, weil hier eine Matrixformel aktiv ist, die zuerst in einer Schleife die Verkettung der Zellen Spalte A und E ausführt und damit dann den Vergleich ausführt.
Diese interne Schleife kann VBA nicht ausführen, die müsstest du explizit als For-Next- Schleife programmieren.

Der Workaround wäre, die Excel-Zellformel-Berechnung zu nutzen, indem man die Formel als Textstring in englischer Schreibweise mit A1-Zellbezügen erstellt und dann mit Evaluate(Formel) berechnen lässt.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: index und vergleich
Da die Rückgabe auf wenige Variablen beschränkt ist, habe ich verschiedenen Zahlenwerte auf "Tab2" nun entsprechende Parameterangabe zugeordnet. Und in meiner Ursprungsliste (Tab1) eine Spalte mit den Nummern ergänzt. Vielleicht etwas umständlich, allerdings spare ich mir so die for_next_Schleife und vor allem funktioniert es ;-)

Gruß Björn


If Application.WorksheetFunction.CountIfs(Sheets("Tab1").Range("A1:A1000000"), Cells(i, 1), _
Sheets("Tab1").Range("E1:E1000000"), Cells(i, 4)) > 0 Then
var1 = Application.WorksheetFunction.SumIfs(Sheets(Tab1).Range("N1:N1000000"), _
Sheets(Tab1).Range("A1:A1000000"), Cells(i, 1), _
Sheets(Tab1).Range("E1:E1000000"), Cells(i, 4))
Cells(i, 7) = Application.WorksheetFunction.VLookup(var1, Sheets(Tab2).Range("NrZuordnung"), 2, False)
Else
Cells(i, 7) = "ohne Angabe"
End If

Anzeige
AW: index und vergleich
13.07.2022 19:27:56
Björn
Das ist die Funktion aus Excel, die funktioniert. Die wollte ich gern in VBA umsetzen. Da ich nun unterwegs bin, kann ich die Versuche derzeit nicht hochladen.

nach oben  nach unten

Betrifft: AW: index und vergleich
Hi

Das kannst du so nicht direkt in VBA umsetzten, weil hier eine Matrixformel aktiv ist, die zuerst in einer Schleife die Verkettung der Zellen Spalte A und E ausführt und damit dann den Vergleich ausführt.
Diese interne Schleife kann VBA nicht ausführen, die müsstest du explizit als For-Next- Schleife programmieren.

Der Workaround wäre, die Excel-Zellformel-Berechnung zu nutzen, indem man die Formel als Textstring in englischer Schreibweise mit A1-Zellbezügen erstellt und dann mit Evaluate(Formel) berechnen lässt.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: index und vergleich
Da die Rückgabe auf wenige Variablen beschränkt ist, habe ich verschiedenen Zahlenwerte auf "Tab2" nun entsprechende Parameterangabe zugeordnet. Und in meiner Ursprungsliste (Tab1) eine Spalte mit den Nummern ergänzt. Vielleicht etwas umständlich, allerdings spare ich mir so die for_next_Schleife und vor allem funktioniert es ;-)

Gruß Björn


If Application.WorksheetFunction.CountIfs(Sheets("Tab1").Range("A1:A1000000"), Cells(i, 1), _
Sheets("Tab1").Range("E1:E1000000"), Cells(i, 4)) > 0 Then
var1 = Application.WorksheetFunction.SumIfs(Sheets(Tab1).Range("N1:N1000000"), _
Sheets(Tab1).Range("A1:A1000000"), Cells(i, 1), _
Sheets(Tab1).Range("E1:E1000000"), Cells(i, 4))
Cells(i, 7) = Application.WorksheetFunction.VLookup(var1, Sheets(Tab2).Range("NrZuordnung"), 2, False)
Else
Cells(i, 7) = "ohne Angabe"
End If

Anzeige
AW: index und vergleich
13.07.2022 19:27:56
Björn
Hi

Das kannst du so nicht direkt in VBA umsetzten, weil hier eine Matrixformel aktiv ist, die zuerst in einer Schleife die Verkettung der Zellen Spalte A und E ausführt und damit dann den Vergleich ausführt.
Diese interne Schleife kann VBA nicht ausführen, die müsstest du explizit als For-Next- Schleife programmieren.

Der Workaround wäre, die Excel-Zellformel-Berechnung zu nutzen, indem man die Formel als Textstring in englischer Schreibweise mit A1-Zellbezügen erstellt und dann mit Evaluate(Formel) berechnen lässt.

Gruß Daniel

nach oben  nach unten

Betrifft: AW: index und vergleich
Da die Rückgabe auf wenige Variablen beschränkt ist, habe ich verschiedenen Zahlenwerte auf "Tab2" nun entsprechende Parameterangabe zugeordnet. Und in meiner Ursprungsliste (Tab1) eine Spalte mit den Nummern ergänzt. Vielleicht etwas umständlich, allerdings spare ich mir so die for_next_Schleife und vor allem funktioniert es ;-)

Gruß Björn


If Application.WorksheetFunction.CountIfs(Sheets("Tab1").Range("A1:A1000000"), Cells(i, 1), _
Sheets("Tab1").Range("E1:E1000000"), Cells(i, 4)) > 0 Then
var1 = Application.WorksheetFunction.SumIfs(Sheets(Tab1).Range("N1:N1000000"), _
Sheets(Tab1).Range("A1:A1000000"), Cells(i, 1), _
Sheets(Tab1).Range("E1:E1000000"), Cells(i, 4))
Cells(i, 7) = Application.WorksheetFunction.VLookup(var1, Sheets(Tab2).Range("NrZuordnung"), 2, False)
Else
Cells(i, 7) = "ohne Angabe"
End If

Anzeige
AW: index und vergleich
13.07.2022 19:27:56
Björn
Da die Rückgabe auf wenige Variablen beschränkt ist, habe ich verschiedenen Zahlenwerte auf "Tab2" nun entsprechende Parameterangabe zugeordnet. Und in meiner Ursprungsliste (Tab1) eine Spalte mit den Nummern ergänzt. Vielleicht etwas umständlich, allerdings spare ich mir so die for_next_Schleife und vor allem funktioniert es ;-)

Gruß Björn


If Application.WorksheetFunction.CountIfs(Sheets("Tab1").Range("A1:A1000000"), Cells(i, 1), _
Sheets("Tab1").Range("E1:E1000000"), Cells(i, 4)) > 0 Then
var1 = Application.WorksheetFunction.SumIfs(Sheets(Tab1).Range("N1:N1000000"), _
Sheets(Tab1).Range("A1:A1000000"), Cells(i, 1), _
Sheets(Tab1).Range("E1:E1000000"), Cells(i, 4))
Cells(i, 7) = Application.WorksheetFunction.VLookup(var1, Sheets(Tab2).Range("NrZuordnung"), 2, False)
Else
Cells(i, 7) = "ohne Angabe"
End If

Anzeige

294 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige