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
Formel in VBA
01.07.2022 09:13:58
PeTeR
Guten Morgen VBA-Spezialisten,
ich berechne in Excel die ZEILENNUMMER eines Mitarbeiters (MA in Spalte C) in einer bestimmten Abteilung (Abt in Spalte E) mittels folgender Formel: =SUMMENPRODUKT((C8:C1000=MA)*(E8:E1000=Abt)*(ZEILE(A8:A19)))
Nun soll eben genau die gleiche ZEILENNUMMER im Makro berechnet werden (ohne Schleife, ohne Matrix...)
Leider funtioniert mein Code nicht: MA_Pos = WorksheetFunction.SumProduct((Range("C1:C1000").Value = MA) * (Range("E1:E1000").Value = Abt) * (Range("A1:A1000").Row))
Wie könnte hier die Lösung aussehen?
Vielen Dank für eure Unterstützung!!!
PeTeR

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in VBA
01.07.2022 09:23:46
Daniel
Hi
VBA kann keine Matrixformeln berechnen.
die Schleife, die hinter (C8:C1000=MA) steckt, musst du in VBA selber programmieren.
der einfachste Workaround wäre hier, über VBA die Formel in eine freie Stelle zu schreiben und dann das Ergebnis auszulesen
oder EVALUATE zu benutzen um die Formel berechnen zu lassen, hierbei benötigt man den Formeltext in englisch mit A1-Zellbezügen, das kann dann EVALUATE("engl.Formel mit A1-Adressen") dann wie in einer Zelle berechnen.
Gruß Daniel
AW: Formel in VBA
01.07.2022 09:37:49
PeTeR
Hallo Daniel,
vielen Dank für deine prompte Lösung!
MA_Pos = Evaluate("=sumproduct((C1:C1000=MA)*(E1:E1000=Abt)*(row(A1:A1000)))") funktioniert perfekt :-)
Schönes WE
PeTeR
Anzeige
AW: Formel in VBA
01.07.2022 09:39:53
Daniel
du könntest auch den Autofilter verwenden und dabei überprüfen, ob deine gesuchte Kombination genau einmal vorkommt.
beachte, dass dein Summenprodukt als Ergebnis 17 ausgibt, wenn die Kombination aus Mitarbeiter und Abteilung in Zeile 8 und 9 vorkommt.

With Range("A7:E1000")
.Autofilter Field:=3, Criteria1:=MA
.Autofilter Field:=5, Criteria1:=ABT
Select Case .columns(1).SpecialCells(xlcelltypevisible).cells.Count
Case 1
Msgbox "Mitarbeiter nicht gefunden"
Case 2
Zeile = .Columns(1).Offset(1, 0).SpecialCells(xlcelltypevisible)(1).Row
Case Else
Msgbox "Mitarbeiter + Abteilung mehrfach vorhanden"
end Select
End with
Gruß Daniel
Anzeige
AW: Formel in VBA
01.07.2022 10:05:15
PeTeR
Hallo Daniel,
coole Idee mit Autofilter zu arbeiten.
Vielen Dank für den Hinweis auf mehrfaches Vorkommen der Kombi - das prüfe ich bereits mit countifs.
VG
PeTeR
AW: Formel in VBA
01.07.2022 10:22:12
Daniel
wenn du die Zeilennummer in einer Hilfsspalte hinterlegst, könntest du sie dann auch mit SumIfs direkt ermitteln.
die Frage ist, ob nicht schon der Mitarbeiter alleine eindeutig sein sollte, damit du diesen dann Suchen kannst, über .Find(...).Row oder mit Application.Match
Gruß Daniel

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige