Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel für Datumsumwanlung beschleunigen

Formel für Datumsumwanlung beschleunigen
23.11.2006 21:39:02
bully
Hallo Leute,
schon seit längerer Zeit habe ich ein Problem mit dem Umformatieren von Datumsspalten bei Datenimporten aus anderen Programmen. In einem Beitrag von Gestern hat Coach folgende Fromel vorgeschlagen:

Sub PerDaten()
Dim r As Range
For Each r In Selection
If Not (IsEmpty(r)) Then
If IsNumeric(r) Then
r.Value = CDbl(r)
ElseIf IsDate(r) Then
r.Value = CDate(r)
End If
End If
Next
End 

Sub
Diese habe ich eingesetzt und sie funktioniert gut. Nur habe ich fünf ganze Spalten mit Datumswerten die es Umzuwandeln gilt, und das dauert doch seine Zeit.
Nun meine Frage:
Ist es möglich die Formel irgendwie zu beschleunigen, indem vielleicht nur die belegten Zellen der markierten Spalten abgeklappert werden? Oder gibt es sonst einen schnelleren Weg?
Bin euch dankbar für Tipps
Gruss bully

		

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel für Datumsumwanlung beschleunigen
23.11.2006 22:46:29
Franc
Ich versteh zwar den Sinn des Makros nicht aber so müßte was immer es auch macht schneller gehen.

Sub PerDaten()
Dim c As Range
With Selection
Set c = .Find("*", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If IsNumeric(c) Then
c.Value = CDbl(c)
ElseIf IsDate(c) Then
c.Value = CDate(c)
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub

AW: Formel für Datumsumwanlung beschleunigen
23.11.2006 23:27:25
bully
Hallo Franc,
dein Code bleibt bei "firstAddress = c.Address" stehen mit der Fehlermeldung: Funktion nicht definiert. Was müsste ich da wo noch definieren?
Ansonsten hat mir Peter eine funktionierend Lösung vorgeschlagen.
Trotzdem besten Dank für deine Mühe
Gruss bully
Anzeige
AW: Formel für Datumsumwanlung beschleunigen
23.11.2006 22:48:59
Peter
Hallo bully,
dann versuch es über ein Array und nicht im Tabellenblatt zu machen.
Ggf. musst du deine Spalten (im Beispiel A1:En) anpassen.


Sub PerArray()
Dim lLetzte  As Long      ' die letzte belegte Zeile
Dim aVar()                ' ein Array zur Datenaufnahme
Dim iIndx_1  As Integer   ' Array-Index der 1. Dimension - Zeilen
Dim iIndx_2  As Integer   ' Array-Index der 2. Dimension - Spalten
   lLetzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
   aVar = Range("A1:E" & lLetzte)  ' die Daten an den Array übergeben
   For iIndx_1 = 1 To lLetzte      ' ab 1 bis zu letzten Zeile
      For iIndx_2 = 1 To 5         ' ab Spalte 1 bis 5
         If Not IsEmpty(aVar(iIndx_1, iIndx_2)) Then
            If IsNumeric(aVar(iIndx_1, iIndx_2)) Then
               aVar(iIndx_1, iIndx_2) = CDbl(aVar(iIndx_1, iIndx_2))
            ElseIf IsDate(aVar(iIndx_1, iIndx_2)) Then
               aVar(iIndx_1, iIndx_2) = CDate(aVar(iIndx_1, iIndx_2))
            End If
         End If
      Next iIndx_2
   Next iIndx_1
   Range("A1:E" & lLetzte) = aVar  ' den Array zurückübertragen
End Sub 


Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Formel für Datumsumwanlung beschleunigen
23.11.2006 23:20:20
bully
Hallo Peter,
deine Lösung funktioniert fehlerfrei und ist erst noch schnell! Benötige gerade noch 1/5 der Zeit!
Besten Dank
Gruss bully

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige