im Grunde bin ich jemand der lieber allein etwas herausfindet als jemanden um Hilfe zu bitten, aber ich weiß jetzt einfach nicht weiter :-(
Nach 6 Tagen rumforschen in allen möglichen Foren geb ich mich geschlagen und will nun doch hier fragend mein Glück versuchen...
wie ich so oft gelesen hab, ist das erste Problem das Problem zu schildern. Ich versuch mich mal daran und hoffe es gelingt halbwegs verständlich...
Kurze Erklärung:
Das gesamte Projekt umfasst jetzt etwa 18.000 Formeln - und da ist Exel so langsam geworden das es keinen Spaß mehr macht :-( bei jedem einzelnen Klick fängt Excel an das komplette Projekt zu berechnen...
Somit muss ich wohl nun doch auf etwas ausweichen wovon ich keine Ahnung hab :-(
Ich möchte einen Großteil der Formeln durch eine VBA Berechnung ersetzen.
Was will ich machen:
Ich möchte erreichen, dass in VBA eine Berechnung durchgeführt wird - aber nur das Ergebnis ausgewiesen wird - ohne Formel... davon gibt es schon genug...
Status:
R38 fragt via Summeprodukt C38 nach AH38 ab und gibt das Ergebnis aus
=SUMMENPRODUKT((D$38:D$300)*($C$38:$C$300=$AH38)*1)
Gleiches geschieht in W38
=SUMMENPRODUKT((I$38:I$300)*($H$38:$H$300=$AH38)*1)
sowie in AB38
=SUMMENPRODUKT((N$38:N$300)*($M$38:$M$300=$AH38)*1)
in AL38 werden alle Ergebnisse summiert
=SUMME(R38;W38;AB38)
AO38 überprüft nun ob in AL38 ein Ergebnis passend zur Abfrage AH35 steht
=WENN(AL38=0;"";AH38)
somit entsteht in AH eine Liste mit Ergebnissen - allerdings mit Lücken
über ein VBA, was ich Gottseidank bei meiner Suche gefunden hab, kann ich diese Liste viel luxuriöser als mit meiner Formellösung sortieren:
Sub kasi()
Range("AO38:AO833").Select
Selection.Copy
Range("AP38").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Sort Key1:=Range("AP38"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("AQ38").Select
End Sub
AQ38 weist jetzt dieser sortierten Liste die berechneten Ergebnisse aus AL38 zu
=SVERWEIS(AP38;$AH$38:$AL$833;5;FALSCH)
Was soll geändert werden:
Um Excel wieder auf erträgliche Wartezeit zu bringen, möchte ich die Summeprodukt (bzw die vorher von mir verwendete Summewenn) Formeln als VBA ausführen - vielleicht sogar gleich noch die Summierung der drei Summeprodukt (Summewenn) Formeln aus AL38? Das wär natürlich Oberluxus...
Wenn ich das mit dem Macrorecorder aufnehme kommt folgendes raus:
Sub kasi2()
' ActiveCell.FormulaR1C1 = "=SUMIF(R38C3:R300C4,RC[16],R38C4:R300C4)"
Range("R39").Select
Range("R38").Select
Selection.AutoFill Destination:=Range("R38:R833")
Range("R38:R833").Select
Range("R38").Select
End Sub
soweit so gut - nur bin ich jetzt wieder genau da, wo ich vorher war - es stehen Formeln da...
ich möchte doch aber nur das Ergebnis :-(
jetzt könnte ich natürlich mit einem "die Ergebnisse kopieren, neue Zelle aufrufen, Werte einfügen, Formeln wieder löschen" Makro das ganze lösen. Aber das ist doch nicht richtig... das muss doch irgendwie anders gehen...
Hilfe :-(
*auf-knien-rumrutsch* kann mir bitte jemand den richtigen Weg zeigen?
In Hoffnung auf eine rettende Hand
lg kasi