ARRAY-Formel per Code

Bild

Betrifft: ARRAY-Formel per Code
von: Erich M.
Geschrieben am: 22.04.2005 20:50:43
Hallo EXCEL-Freunde,
ich suche noch eine Möglichkeit, einen Code für eine ARRAY-Formel zu optimieren;
hat da noch jemand eine Idee:
'###### funktioniert:


Sub Makro1()
Dim i As Integer
Application.ScreenUpdating = False
For i = 6 To 1697
Cells(i, 17).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),"""")"
Next i
Range(Cells(6, 17), Cells(1697, 17)).Copy
Range(Cells(6, 17), Cells(1697, 17)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Application.ScreenUpdating = True
Range("A1").Select
End Sub

''''''''########## welche Anpassung erforderlich ?????????????

Sub iven()
Range(Cells(6, 17), Cells(1697, 17)).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),"""")"
Range(Cells(6, 17), Cells(1697, 17)).Copy
Range(Cells(6, 17), Cells(1697, 17)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Range("A1").Select
End Sub


Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: ARRAY-Formel per Code
von: Ramses
Geschrieben am: 22.04.2005 22:15:06
Hallo
damit würde es gehen:
Range(Cells(6, 17), Cells(1697, 17)).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),"""")"

Allerdings glaube ich nicht, dass dich das Ergebnis zufriedenstellt :-)
Tabelle1
 Q
636
736
836
936
1036
1136
Formeln der Tabelle
Q6 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
Q7 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
Q8 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
Q9 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
Q10 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
Q11 : {=WENN(SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3))>0; SUMME(ZÄHLENWENN(B6:G6;$B$3:$G$3));"")}
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  

Das ist ein Ausschnitt... ;-)
Gruss Rainer
Bild

Betrifft: AW: ARRAY-Formel per Code
von: Erich M.
Geschrieben am: 23.04.2005 07:18:43
Hallo Rainer,
danke - aber ich glaube ich muss bei der ersten Variante bleiben, die ja funktioniert,
aber relativ lange dauert.
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: ARRAY-Formel per Code
von: andre
Geschrieben am: 23.04.2005 09:24:38
Hallo Erich,
ich hab mir letztens helfen lassen, und Deine zweite Möglichkeit war die Lösung. In den zellen steht dann zwar überall die gleiche Formel, aber das Ergebnis stimmt trotzdem. Zweite Einschränkung: Du kannst die Zellen mit der Formel nicht mehr einzeln bearbeiten Fehler in etwa: "... Zelle Teil eines Array ..."
Grüße, Andre
Bild

Betrifft: AW: ARRAY-Formel per Code
von: Erich M.
Geschrieben am: 23.04.2005 12:19:39
Hallo Andre,
da die erste Lösung relativ lange dauert, hätte ich eine Alternative gesucht, sprich eine
Änderung der zweiten Alternative. Aber die geht leider nicht, da von Zeile 6 bis 1697
immer das gleiche Ergebnis drinsteht.
Das muss irgendiwe mit der ARRAY-Funktion zusammenhängen.
Insofern bin ich nach wie vor für eine schnellere Lösung aufgeschlossen.

mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: ARRAY-Formel per Code
von: andre
Geschrieben am: 23.04.2005 12:35:18
Hallo Erich,
das war genau der Punkt, wo ich auch drübergestolpert bin. Ich hatte zum Test im Datenbereich überall dasselbe stehen, und da war es kein Wunder, dass auch das Ergebniss überall das Gleiche war ;-) Ist das eventuell bei Dir auch?
Grüße, Andre
Bild

Betrifft: AW: ARRAY-Formel per Code
von: Martin Beck
Geschrieben am: 23.04.2005 12:38:26
Hallo Erich,
teste mal, ob das schneller ist:

Sub Makro2()
Dim i As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Cells(6, 17).FormulaArray = _
"=IF(SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7))>0, SUM(COUNTIF(RC[-15]:RC[-10],R3C2:R3C7)),1)"
Cells(6, 17).Copy Destination:=Range(Cells(7, 17), Cells(1697, 17))
Calculate
Range(Cells(6, 17), Cells(1697, 17)).Copy
Range(Cells(6, 17), Cells(1697, 17)).PasteSpecial Paste:=xlValues, Operation:=xlNone
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Range("A1").Select
End Sub

Gruß
Martin Beck
Bild

Betrifft: AW: ARRAY-Formel per Code
von: andre
Geschrieben am: 23.04.2005 12:42:50
... Paste:=xlValues, ... ??
lieber die xlFormulas ...
Grüße, Andre
Bild

Betrifft: rasende ARRAY-Formel
von: Erich M.
Geschrieben am: 23.04.2005 13:56:56
Hallo Martin,
die Lösung ist deutlich schneller und dürfte kaum zu überbieten sein.
Ich habe mir mal irgendwo was runtergeladen wie man die Zeit messen kann,
das werde ich testen.
Wie muss ich die Anmerkung von andre verstehen wegen xlValues?
Allerbesten Dank!!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: rasende ARRAY-Formel
von: andre
Geschrieben am: 23.04.2005 17:32:13
Hallo Erich,
ich vermute mal, Du willst die Formel und nicht die Werte ;-)
Grüße, Andre
Bild

Betrifft: AW: rasende ARRAY-Formel
von: Erich M.
Geschrieben am: 23.04.2005 19:06:01
Hallo andre,
alles klar; aber ich benötige die Werte; deswegen damit die Datei nach dem
ermitteln der Ergebnisse sofort wieder kleiner wird.
Besten Dank!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
 Bild

Beiträge aus den Excel-Beispielen zum Thema "ARRAY-Formel per Code"