Ja, inzwischen hab' ich was fertig, ...
03.04.2013 21:13:42
Luc:-?
…Joerschi,
allerdings ging's mir genauso wie dir, bestimmte Operationen klappen auch mit AUSWERTEN nicht! Das sind meistens Formeln mit Fktt, die der xlinternen externen MatrixSteuerung unterliegen; bei INDEX ist das oft so.
Aber langer Rede kurzer Sinn, es geht evtl auch mit irgendeiner Fml bei XlFmln, aber eh' wir lange suchen habe ich lieber schnell noch eine 4.UDF-Version zum Thema FmlText-Auswerten (jetzt hab' ich also 2 für engl und 2 für dt FmlTexte und jede ist anders!) geschrieben. Hier aber erst mal ein Bild des Ergebnisses (die HTML-Variante kann leider zZ nicht alles abbilden):
Dazu hier noch mal die relevanten Formeln (wg Bild!).
Benannte Fmln:
MinSummen:=SUMME(INDEX(--($B$3:$I$32=$B$34:$I$34);0;"#")*INDEX(--($B$3:$I$32=$B$34:$I$34);ZEILEN(IS$1:IS36);"#"))
MaxSummen:=SUMME(INDEX(--($B$3:$I$32=$B$35:$I$35);0;"#")*INDEX(--($B$3:$I$32=$B$35:$I$35);ZEILEN(IS$1:IS37);"#"))
Achtung! Auf die übliche Weise angewendet, liefern diese benannten Fmln nur Fehlerwerte!
ZellFmln:
K3:K32:=SUMMENPRODUKT(--(EvalName("MinSummen";$A$1:$H$1)=1))
L3:L32:=SUMMENPRODUKT(--(EvalName("MaxSummen";$A$1:$H$1)=1))
N3:N32:=SUMMENPRODUKT(--(EvalName("MinSummen";$A$1:$H$1)>1))
O3:O32:=SUMMENPRODUKT(--(EvalName("MaxSummen";$A$1:$H$1)>1))
So, und nun noch die UDF:
Rem Wertet benannte Fmln aus, die gleiche Platzhalter enthalten dürfen (Default: "#").
' Arg1: Name d.Fml als Text; Arg2: f.Arg3 in d.benFmlTxt 1zusetzender Bereichsbezug;
' Arg3: Platzhalter (idR als Text m.entsprd ZusatzZchn); Arg4: ZeilNr-(Default) oder
' SpaltNr-Platzhalter (bezogen auf Arg2, nur 1 Typ mögl, b.Vektor ggf autom ermitt).
' Vs1.0 -author:LSr -cd:20130403 -1pub:20130403/herber -lupd:20130403t
Function EvalName(ByVal FName$, ByVal FPhBezug As Range, Optional ByVal Platzh = """#""", _
Optional ByVal SpPh As Boolean)
Dim cct As Long, cix As Long, rct As Long, rix As Long, _
zwErg() As Variant, phBez As Range
cct = FPhBezug.Columns.Count: rct = FPhBezug.Rows.Count
If Not SpPh And (cct = 1 Or rct = 1) Then SpPh = cct > 1
ReDim zwErg(rct - 1, cct - 1)
With ActiveWorkbook
For Each phBez In FPhBezug
If SpPh Then
zwErg(rix,cix) = Evaluate(Replace(.Names(FName).RefersTo, Platzh, phBez.Column))
Else: zwErg(rix,cix) = Evaluate(Replace(.Names(FName).RefersTo, Platzh, phBez.Row))
End If
cix = (cix + 1) Mod cct: rix = rix - CInt(cix = 0)
Next phBez
End With
EvalName = zwErg
End Function
Bitte beachten, dass die Namen für die Mappe definiert sein müssen (nicht für das jeweilige Blatt)!
Na dann viel Erfolg! Gruß Luc :-?