Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spaltenbereich in Array, umwandeln, zurückschreibe

Forumthread: Spaltenbereich in Array, umwandeln, zurückschreibe

Spaltenbereich in Array, umwandeln, zurückschreibe
Peter
Guten Abend
Mit Hilfe des Forums (vorallem Erich G.) kann ich Zahlen aus einem Spaltenbereich [BETRAG] (die teilweise ein komisches Textformat haben) in normale Zahlen umwandeln.
Aufgrund der Formel habe ich mir dazu den VBA Code geschrieben, der die Ausgangswerte mit den richtigen überschreibt.
Nun würde mich interessieren, ob die Auswertung beschleunigt werden kann, wenn der Spaltenbereich [BETRAG] einem Array übergeben wird und dann die einzelnen Werte im Array umgewandelt werden und letztendlich das umgewandelte Array zurückgeschrieben wird (anstelle der jetzigen Lösung).
Ist so was möglich? Wenn ja, wäre ich sehr daran interessiert, hier eine Lösung oder entsprechende Hinweise dazu zu erhalten.
Danke und Gruss, Peter
https://www.herber.de/bbs/user/71015.xls
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Spaltenbereich in Array, umwandeln, zurückschreibe
10.08.2010 23:09:43
Uduuh
Hallo,
dürfte auf jeden Fall schneller sein.
Teste mal!
Sub Umwandeln()
'Zahlen mit einem Textformat z.B. 1.111,19 werden in normale Zahlen umgewandelt und
'anschliessend formatiert - NULL-Werte werden unterdrückt
'Beispielformel =WENN(ISTZAHL(A7);A7;1*WECHSELN(WECHSELN(A7;".";"");",";"."))
Dim myArray, lngI As Long
myArray = Range("BETRAG")
For lngI = 1 To UBound(myArray)
If IsNumeric(myArray(lngI, 1)) Then
' 'Zahl bleibt unverändert
Else
myArray(lngI, 1) = _
1 * WorksheetFunction.Substitute(WorksheetFunction.Substitute(myArray(lngI, 1), ".", "") _
, ",", ".")
End If
Next
Range("BETRAG") = myArray
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Spaltenbereich in Array, umwandeln, zurückschreibe
10.08.2010 23:36:18
Peter
Hallo Udo
Grandios! Eindeutig schneller. Vielen Dank.
Gruss, Peter
zwei kleine Korrekturen
11.08.2010 07:50:31
Erich
Hi Udo und Peter,
die erste Korrektur betrifft nur einen Kommentar, ich finde sie aber ziemlich wichtig:
"Zahlen mit einem Textformat z.B. 1.111,19 werden in normale Zahlen umgewandelt" stimmt nicht.
Das sind vorher keine Zahlen, sondern Texte. Ich habe das dadurch ersetzt:
"Texte, die wie Zahlen aussehen, z.B. 1.111,19, werden in Zahlen umgewandelt"
Die zweite Korrektur sorgt dafür, dass nachher auch wirklich keine Texte mehr in dem Bereich stehen.
Die VBA-Fkt. IsNumeric prüft nicht, ob etwas numerisch ist,
sondern, ob etwas in eine Zahl umgewandelt werden kann.
Wenn in einer Zelle der Text 456 steht (nicht die Zahl 456), würde Udos Routine das nicht ändern,
denn IsNumeric("456") ist True. Den Text 456 kannst du nicht so wie eine Zahl formatieren.
Die WorksheetFunction IsNumber dagegen prüft wirklich, ob der Parameter eine Zahl ist.
WorksheetFunction.IsNumber("456") ergibt False.
Mein Vorschlag:

Option Explicit
Sub Umwandeln2()
'Texte, die wie Zahlen aussehen, z.B. 1.111,19, werden in Zahlen umgewandelt
'NULL-Werte werden unterdrückt
'Beispielformel =WENN(ISTZAHL(A7);A7;1*WECHSELN(WECHSELN(A7;".";"");",";"."))
Dim myArray, lngI As Long
Dim AWS As Object
Set AWS = Application.WorksheetFunction
myArray = Range("BETRAG")
For lngI = 1 To UBound(myArray)
If AWS.IsNumber(myArray(lngI, 1)) Then
'Zahl bleibt unverändert
Else
myArray(lngI, 1) = 1 * AWS.Substitute(AWS.Substitute( _
myArray(lngI, 1), ".", ""), ",", ".")
End If
Next
Range("BETRAG") = myArray
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: zwei kleine Korrekturen
11.08.2010 08:52:14
Peter
Hallo Erich
Danke vielmals für die wertvollen Hinweise!
Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige