Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Matrixformel mit Variable

Matrixformel mit Variable
02.06.2009 22:12:48
MichiM
Hallo,
nachdem ich durch eure Hilfe endlich die Formel hinbekommen habe, hapert es am einfügen mit vba (kopieren und leicht modifizieren ja - selber leider nein ;-) ...
Die händisch eingegebene, funktionierende Matrixformel:
{=MIN(WENN((($A$2:$A100=$A19)*($B$2:$B100=$B19)); $C$2:$C100))}
Diese muss ich - variabel gestaltet - mit vba einfügen:

Private Sub cbut_ok_Click()
Dim LetzteZeile3 As Long
With Worksheets("ZS_Stunden")
LetzteZeile3 = .Range("A65536").End(xlUp).Row + 1
Worksheets("ZS_Stunden").Range("L" & LetzteZeile3).FormulaArray =
"=MIN(WENN((($A$2:$A100=$A" & LetzteZeile3 & ")*($B$2:$B100=$B" & LetzteZeile3 & ")); $C$2:$ _
C100))"
End With
End Sub


Beim versuchen ist mir aufgefallen, dass dies bei Verwendung mit Variablen nicht läuft.
Allerdings habe ich keinen Hinweis gefunden, dass es generell nicht möglich ist.
Habe ich einen Denkfehler im Aufbau der Formel, oder ist es generell nicht möglich?
LG
MichiM

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Ersetze "WENN" durch "IF"
02.06.2009 22:28:21
NoNet
Hallo Michi,
die Funktion muss in VBA in englischer Schreibweise eingegeben werden !
MIN bleibt MIN, aber aus WENN wird IF :

Worksheets("ZS_Stunden").Range("L" & LetzteZeile3).FormulaArray= _
"=MIN(IF((($A$2:$A100=$A" & LetzteZeile3 & ")*($B$2:$B100=$B" & LetzteZeile3 & ")), $C$2:$C100))"

Gruß, NoNet
Anzeige
AW: Ersetze "WENN" durch "IF"
02.06.2009 22:42:15
MichiM
Hallo NoNet,
stimmt - funktioniert aber leider auch nicht.
Der Debugger meldet hier:
Worksheets("ZS_Stunden").Range("L" & LetzteZeile3).FormulaArray =
"=MIN(WENN((($A$2:$A100=$A" & LetzteZeile3 & ")*($B$2:$B100=$B" & LetzteZeile3 & ")); $C$2:$ _
C100))"
Laufzeitfehler '1004':
Die FormulaArray-Eigenschaften des Range-Objektes kann nicht festgelegt werden.

Ich krieg die Krise - jetzt klappt auch das nicht mehr (war mir sicher, dass es vorhin ging)...
Worksheets("ZS_Stunden").Range("L" & LetzteZeile3).FormulaArray = "=MIN(IF((($A$2:$A$100=$A$26)*($B$2:$B$100=$B$26));$C$2:$C$100))"
MichiM
Anzeige
noch offen ... oT
02.06.2009 22:42:55
MichiM
...und natürlich KOMMA anstatt Semikolon
02.06.2009 23:15:21
NoNet
Hey Michi,
Du hast das leider "verschlimmbessert" !
In VBA gilt wie bereits geschrieben die englische Formel-Syntax, dort werden Argumente durch KOMMA und nicht durch SEMIKOLON getrennt !
Daher habe ich in meinem Lösungsvorschlag auch ein KOMMA vor $C$2:$C100 verwendet und kein Semikolon !
Bitte das Beispiel einfach mal 1:1 (ohne Änderungen oder Anpassungen !) ausprobieren !!
Gruß, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige