Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#16
Ich verstehe. Danke Elex.

snb, idKldW. AGR

(Lieber snb, in der Kürze liegt die Würze. Alles Gute, Ralf) :43:
Antworten 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 ...
Antworten Top


Gehe zu:


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