...wobei man dann natürlich auch auf WAHL ...
27.06.2016 19:29:18
Luc:-?
…verzichten könnte, Andreas;
dann sähe die Fml so aus (2015-06 heißt dein 1.Blatt!):
=SUMME(WENNFEHLER(WVERWEIS(D3;'2015-06'!$3:$4;2;0);0);WENNFEHLER(WVERWEIS(D3;'2016-07'!$3:$4;2;0);0))
Und eigentlich gehört WENNFEHLER auch in die 1.(Matrix-)Fml:
{=SUMME(WAHL(SPALTE($A1:$B1);WENNFEHLER(WVERWEIS(D3;'2015-06'!$3:$4;2;0);0);WENNFEHLER(WVERWEIS(D3; '2016-07'!$3:$4;2;0);0))) }
Etwas kürzer geht's dann ggf so:
{=SUMME((WAHL(ZEILE(A1:A2);'2015-06'!$3:$3;'2016-07'!$3:$3)=B3)*WAHL(ZEILE(A1:A2);'2015-06'!$4:$4; '2016-07'!$4:$4)) }
Und mit einer UDF zur FmlText-Auswertung (mit XLM-Fkt AUSWERTEN in benannter Fml scheint's nicht zu klappen!) so:
=SUMMENPRODUKT((TxEval(WECHSELN("#!3:3";"#";{"'2015-06'";"'2016-07'"}))=D3) *TxEval(WECHSELN("#!4:4";"#";{"'2015-06'";"'2016-07'"})))
Rem Erweitertes Trivial zu KomplexFktt LetFormula/LetEval
' Vs1.2 -LSr -cd:20151026 -1pub:20160223h(1.0) -lupd:20160323t
Function TxEval(Bezug)
Dim ix(3) As Long, erg, tx As Variant
On Error Resume Next
If IsArray(Bezug) Then
With WorksheetFunction
If TypeName(Bezug) = "Range" Then
Bezug = .Transpose(Bezug)
Else: Bezug = .Transpose(Bezug)
End If
End With
If IsError(LBound(Bezug, 2)) Then
ix(2) = 1: ix(3) = UBound(Bezug, 1) + 1 - LBound(Bezug, 1)
Else: ix(2) = UBound(Bezug, 1) + 1 - LBound(Bezug, 1)
ix(3) = UBound(Bezug, 2) + 1 - LBound(Bezug, 2)
End If
ReDim erg(ix(2) - 1, ix(3) - 1)
For Each tx In Bezug
erg(ix(0), ix(1)) = Evaluate(tx)
ix(0) = (ix(0) + 1) Mod ix(2): ix(1) = ix(1) - CInt(ix(0) = 0)
Next tx
TxEval = erg
Else: TxEval = Evaluate(CStr(Bezug))
End If
End Function
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …