Microsoft Excel

Herbers Excel/VBA-Archiv

Wenn-Dann Bedingung füllen mit Makro dauert lange

Betrifft: Wenn-Dann Bedingung füllen mit Makro dauert lange von: Frederik
Geschrieben am: 23.09.2014 15:30:43

Hallo zusammen,

ich habe in einer Excelliste bis zu 1000 Datensätze.
in der einen Zeile ist eine Wenn-Dann-Bedingung hinterlegt, da sich bei den Kriterien bestimmte Sachen gegenseitig ausschließen können und hier entsprechend auch einen Fehler melden können.

Da dieses Feld von meinen Kollegen auch weiterhin bewertbar bleiben muss, kann ich die Formel leider nicht schützen.
Wenn das Feld jedoch leer ist möchte ich, dass die Formel bei einem Excelneustart entsprechend in die felder geschireben wird.

Das funktioniert auch alles einwandfrei mit

Private Sub Workbook_Activate()
Application.Calculation = xlAutomatic
'Call Pruefen_Formel
End Sub

sub Pruefen_Formel()

Sheets("Kriterien").Select
   Dim c As Range
   
   For Each c In Range("y6:y1000")
      If c.Value = "" Then c.Value = "=IF(RC[-12]=1,"""",IF(RC[-12]+COUNTIF(RC[7]:RC[12],""X"")= _
0,"""",IF(COUNTIF(RC[7]:RC[12],""X"")>=1,""X"")))"
                                 
   
   Next c
End Sub
Nur leider brauch das Makro so ewig lang um die 1000 Datensätze zu vergleichen... bis zu 2 min :(

Ich hoffe einer von Euch hat einen Tipp, wie man das ganze beschleunigen kann.

Vielen Dank im Voraus
Frederik

  

Betrifft: AW: Wenn-Dann Bedingung füllen mit Makro dauert lange von: Rudi Maintaire
Geschrieben am: 23.09.2014 15:42:00

Hallo,
Wenn das Feld jedoch leer ist
wirklich leer?

Sub Pruefen_Formel()
  Dim c As Range
  On Error Resume Next
  Set c = Range("y6:y1000").SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0
  If Not c Is Nothing Then
    c.FormulaR1C1 = _
      "=IF(RC[-12]=1,"""",IF(RC[-12]+COUNTIF(RC[7]:RC[12],""X"")= 0,""""," _
      & "IF(COUNTIF(RC[7]:RC[12],""X"")>=1,""X"")))"
  End If
End Sub

Gruß
Rudi


  

Betrifft: geht ganz fix bei mir ... von: Matthias L
Geschrieben am: 23.09.2014 15:49:56

Hallo

Also ich hab das jetzt mal mit XL2007 getestet
Natürl. in eine neuen Mappe.

Es dauert bei mir (geschätzt) weniger als 2 Sek.
Dann stehen die Formeln in den Zellen.

Auch wenn ich dann die Hälfte der Formeln wieder lösche
und das Makro neu starte dauerts nur ca. 1 Sek.

Gruß Matthias


  

Betrifft: AW: geht ganz fix bei mir ... von: Daniel
Geschrieben am: 23.09.2014 16:03:00

Hi

Wenn dieselbe Formel in mehrere Zellen kommt, sollte man die Formel auch wenn möglich in alle Zellen gleichzeitig schreiben und nicht jede Formel einzeln.
Problem ist, wenn du einen Wert oder eine Formel in eine Zelle schreibst, muss Excel intern eine ganze Reihe von Aktionen ausführen.
Schreibst du die Formeln auf einmal, kann es viele dieser Aktionen 1x für alle ausführen, schreibest du jede Formel einzeln, dann läuft auch jedesmal der ganze Autoamtismus durch.

deswegen:

Range("y6:y1000").SpecialCells(xlcelltypeblanks).FormulaR1C1 = "=IF(RC[-12]=1,"""",IF(RC[-12]+COUNTIF(RC[7]:RC[12],""X"")= 0,"""",IF(COUNTIF(RC[7]:RC[12],""X"")>=1,""X"")))"
Gruß Daniel


  

Betrifft: meinst Du mich ? ich habs nur getestet. owT von: Matthias L
Geschrieben am: 23.09.2014 16:06:36




  

Betrifft: AW: meinst Du mich ? ich habs nur getestet. owT von: Daniel
Geschrieben am: 23.09.2014 16:52:07

nee sollte direkt Antwort werden.
Herber ist halt das einzige Forum mit der Baumstruktur, und da man immer zwei Antworten gleichzeitig sieht, kann man schon mal durcheinander kommen, auf welche man antwortet.

wie lange das mit der Schleife dauert, hängt u.U noch davon ab, ob sich andere Formeln auf den Einfügebereich beziehen oder nicht.
die Schleifenlösung löst dann bei jedem Schleifendurchgang eine Neuberechnung aus, während beim Einfügen als Block dann alle Formeln nur einmal neu berechnet werden.

gruß Daniel


  

Betrifft: Das Herber-Forum ist beileibe nicht das ... von: Luc:-?
Geschrieben am: 23.09.2014 18:52:51

…einzige (Xl-)Forum mit Baumstruktur, aber ggf das einzige, in dem man sowohl FORUMS- (⇒Baumstruktur, Standard) als auch BEITRAGSLISTE-Form wählen kann.
Luc :-?


  

Betrifft: Es funktioniert :) von: Frederik
Geschrieben am: 24.09.2014 07:36:09

Hallo zusammen,

so funktioniert das ganze super!
Vielen Dank für Eure Hilfe.

Viele Grüße
Frederik

PS: gibt es eigentlich noch eine Möglichkeit, dass die Berechnung der Zellen kontinuierlich erfolgt, oder ist bei Neustart die einzige Möglichkeit?


 

Beiträge aus den Excel-Beispielen zum Thema "Wenn-Dann Bedingung füllen mit Makro dauert lange"