Matrixauswertung
#11
Hallo,
interessante Frage, interessante Lösung.

Nur:
Mit Änderungen in der Produktliste sollten sich auch die Ergebnisse der Formeln ändern.

Tut es aber nicht. Wüsste gerne, warum.

Berechnungsoptionen=Automatisch
Bei F9 tut sich nichts.

In eine Formelzelle hineingehen und Enter drücken löst dann die Berechnung aus.

Raoul
Top
#12
Hi Raoul

Die Frage ist, ob bei der Datenmenge jedes mal neu berechnet werden soll.

Wenn ja.
Im Modul Zeile 1 so.
Public Function Kombi(z As Long, s As Long, rng As Range)

Und die Formel dann so.
=Kombi(ZEILE();SPALTE();$A$13:$B$28)

Oder hier noch mal einen alternativ Code. Welcher schneller ist habe ich nicht getestet.

Code:
Public Function Kombi(z As Long, s As Long, rng As Range)
Dim ArrA, ArrB, Wert1, Wert2
Dim j As Long, jj As Long, a As Long

Wert1 = Cells(z, 1).Value
Wert2 = Cells(3, s).Value

If Wert1 = Wert2 Then
   Kombi = ""
Else
   ArrA = Filter(Application.Transpose(Evaluate("if(" & rng.Columns(2).Address & "=" & Wert1 & "," & rng.Columns(1).Address & ")")), "Falsch", False, vbBinaryCompare)
   ArrB = Filter(Application.Transpose(Evaluate("if(" & rng.Columns(2).Address & "=" & Wert2 & "," & rng.Columns(1).Address & ")")), "Falsch", False, vbBinaryCompare)
  
   For j = 0 To UBound(ArrA)
      For jj = 0 To UBound(ArrB)
         If ArrA(j) = ArrB(jj) Then a = a + 1
      Next jj
   Next j
   Kombi = a

End If
End Function

Formel ist wie oben.

Gruß Elex
Top
#13
Hi Elex,

mit der neuen Formel geht es.

Meine Frage war nicht, ob bei der Datenmenge jedes mal neu berechnet werden soll, sondern, warum sie nicht neu berechent wird.

Ich habe kein besonderes Interesse an der Formel. Nur, wie Du das angegangen bist, finde ich gut.

Raoul
Top
#14
Hi

Bei der Entscheidung ob Excel eine Formel neu berechnet, prüft Excel erst ob sich in einer der in der Formel enthaltenen Zellen(Zellbezüge) etwas geändert hat.
Bei der ersten Variante waren keine Zellbezüge enthalten, deshalb wird die Funktion nur einmal berechnet.
Ist wie wenn du in eine Zelle die Formel =5+2*8 eingibst. Die wird auch nur einmal berechnet und nicht noch mal.

Gruß Elex
Top
#15
Ich würde ein normales Makro bevorzügen:

Code:
Sub M_snb()
    Sheet1.Cells(12, 1).CurrentRegion.Columns(2).AdvancedFilter 2, , Sheet1.Cells(1, 10), 1
    sp = Sheet1.Cells(1, 10).CurrentRegion
    sn = Sheet1.Cells(12, 1).CurrentRegion
    ReDim st(UBound(sp), UBound(sp))
   
    For j = 2 To UBound(sn)
        y = Application.Match(sn(j, 2), sp, 0) - 1
        st(0, y) = st(0, y) & sn(j, 1)
    Next
   
    For j = 1 To UBound(sn)
        y = Application.Match(sn(j, 2), sp, 0) - 2
        For jj = 1 To y
          If InStr(st(0, jj), sn(j, 1)) Then st(y + 1, jj) = st(y + 1, jj) + 1
        Next
    Next
   
    For j = 1 To UBound(sp)
      st(j - 1, 0) = sp(j, 1)
      st(0, j - 1) = sp(j, 1)
    Next
   
    Sheet1.Cells(12, 5).Resize(UBound(st) + 1, UBound(st, 2) + 1) = st
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#16
Ich verstehe. Danke Elex.

snb, idKldW. AGR

(Lieber snb, in der Kürze liegt die Würze. Alles Gute, Ralf) :43:
Top
#17
snb,

liest sich etwas komisch, was ich da geschrieben haben.

wollte zu deinem makro eigentlich sagen: respekt!

schönen abend noch, bin schon weg ...
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste