Registriert seit: 01.04.2020
Version(en): 2007
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
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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
Registriert seit: 01.04.2020
Version(en): 2007
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
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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
Registriert seit: 29.09.2015
Version(en): 2030,5
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
Registriert seit: 01.04.2020
Version(en): 2007
Ich verstehe. Danke Elex.
snb, idKldW. AGR
(Lieber snb, in der Kürze liegt die Würze. Alles Gute, Ralf) :43:
Registriert seit: 01.04.2020
Version(en): 2007
snb,
liest sich etwas komisch, was ich da geschrieben haben.
wollte zu deinem makro eigentlich sagen: respekt!
schönen abend noch, bin schon weg ...
|