Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1756to1760
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
Inhaltsverzeichnis

Umwandlung von Zahlen mittels Array

Umwandlung von Zahlen mittels Array
14.05.2020 12:37:05
Zahlen
Guten Tag
Mit einem Code habe ich bisher Monat für Monat die Zahlenformate einer Menge Zahlen umgewandelt.
Originalwert ist z.B. 76.411,27
hier wird zuerst das Punkt durch nichts ersetzt und dann das Komma durch einen Punkt, da habe ich ich die Zahl, mit der ich weiterrechnen kann.
Plötzlich funktioniert das nicht mehr. Nachfolgend ist der Code und zudem habe ich eine Beispieldatei hochgeladen
https:\/\/www.herber.de/bbs/user/137544.xlsm (mit Code). in der Spalte C sind die "Originalbeträge" und in Spalte A die umgewandelten Beträge. Daraus ist ersichtlich, dass zwar der Punkt ersetzt wird; das Komma wird aber im zweiten Schritt nicht durch den Punkt ersetzt.
Kann mir da jemand weiterhelfen?
Danke, Peter
With WorksheetFunction
If .Count(Range("origBETRAG")) = .CountA(Range("origBETRAG")) Then GoTo Ende 'wenn gleichviel Zahlen wie
'Zellen, dann Umwandlung nicht nötig
ThisWorkbook.Activate
'Texte, die wie Zahlen aussehen 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
Dim AWS As Object
Set AWS = Application.WorksheetFunction
myArray = Range("origBETRAG")
For lngI = 1 To UBound(myArray)
'Debug.Print lngI
If AWS.IsNumber(myArray(lngI, 1)) Then
' 'Zahl bleibt unverändert
Else
myArray(lngI, 1) = 1 * Replace(Replace(myArray(lngI, 1), ".", ""), ",", ".")
End If
Next
Range("normBETRAG") = myArray
Ende:
End With
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umwandlung von Zahlen mittels Array
14.05.2020 13:55:09
Zahlen
ohne VBA.

Tabelle1
 A
1normBetrag
276411,72
334511,67
4700
554465,86
61
711864,81
8800
970
1035

verwendete Formeln
Zelle Formel Bereich N/A
A2:A10=C2*1  


GrußformelHomepage
Anzeige
AW: lies noch mal was Peter geschrieben hat owT
14.05.2020 14:06:34
neopa
Gruß Werner
.. , - ...
AW: Umwandlung von Zahlen mittels Array
14.05.2020 14:10:09
Zahlen
Hallo Hajo
Ich muss eine VBA-Lösung haben, weil dies ein Teil aus einer grösseren Applikation ist.
Gruss, Peter
AW: Umwandlung von Zahlen mittels Array
14.05.2020 14:19:11
Zahlen
myArray(lngI, 1) = 1 * myArray(lngI, 1)
Gruß Hajo
AW: Umwandlung von Zahlen mittels Array
14.05.2020 15:57:46
Zahlen
Hallo Hajo
Danke für den Vorschlag.
Im VBA läuft das jedoch nicht. Bei der Zeile myArray(lngI, 1) = 1 * myArray(lngI, 1) kommt eine Laufzeitfehlermeldung '13': Typen unverträglich
Gruss, Peter
AW: Umwandlung von Zahlen mittels Array
14.05.2020 16:23:19
Zahlen
Hallo Peter,
du ersetzt "." durch "" und danach "," durch "."
Ich lese daraus ab, dass du aus dem Europäischen Zahlenformat ins Amerikanische wechseln willst.
Mit Europäischer Zahleneinstellung wird eine Zelle mit einem "." (Punkt) als Text betrachtet.
M.E. kann das nur funktioniert haben, wenn auf dem PC das Amerikanische Zahlenformat eingestellt war/ist.
Wie Excel reagiert, wenn ein Sprachmix installiert ist (gleichzeitig Europ. und Amerik.), das kann
ich mangels Testmöglichkeiten nicht beurteilen.
Achtung: Ich meine, dass man bei installiertem Sprachmix Excel noch explizit sagen kann wie es auf Zahlen reagieren soll.
(Einzustellen in XLS unter Datei / Optionen / Erweitert / .....)
Gruß,
Firmus
Anzeige
AW: Umwandlung von Zahlen mittels Array
14.05.2020 16:28:02
Zahlen
Hallo Firmus
Du schreibst "Mit Europäischer Zahleneinstellung wird eine Zelle mit einem "." (Punkt) als Text betrachtet." - das ist aber in der Schweiz anders. Das Zeichen zwischen dem ganzen Betrag und der Nachkommastelle ist hier regelmässig ein Punkt.
Ich werde heute Abend versuchen, den Lösungsansatz von Daniel umzusetzen.
Danke und Gruss, Peter
AW: Europ./Schweiz/Deutsch/ Umwandlung von Zahlen
14.05.2020 16:49:39
Zahlen
Peter,
sorry, hatte aus dem Kopf geantwortet, und nicht nochmals nachgelesen.
Stimmt es gibt Deutsch-Schweiz, Deutsch-Österreich, Deutsch-Deutsch.
... und die sind halt nicht gleich - besonders auch nicht in der Aussprache ;-))
Daniels Ansatz, denke ich, ist der richtige: Spracheinstellungen.
Gruß,
Firmus
Anzeige
AW: Umwandlung von Zahlen mittels Array
14.05.2020 16:38:13
Zahlen
Hallo Peter,
in der verlingten Datei kommt der Fehlöer nicht.
Da habe ich das erste If auskommentiert, da Fehler.
Gruß Hajo
AW: Umwandlung von Zahlen mittels Array
14.05.2020 15:59:06
Zahlen
HI
Ursache dürfte sein, dass einen Änderung bei der automatischen/impliziten Typumwandlung gab und diese jetzt die lokalen Formate verwendet und nicht mehr standardmäßig die amerikanischen (oder du hattest bisher die amerikanischen Formate in den Systemeinstellungen und ab Zeitpunkt x die deutschen).
dh du brauchst das Replace nicht mehr und kannst den Wert direkt multiplizieren.
wenn man hier sicher gehen will, dann verwendet man nicht die implizite sondern die explizite Typumwandlung.
dabei hat man zwei Möglichkeiten:
a) myarrya() = VAL(myarray())
b) myarray() = CDbl(myarray())
VAL verwendet immer die amerikanischen Formate (dh hier müsstest du wieder mit Replace arbeiten)
CDbl verwendet die eingestellten Formate der Länderversion.
ein weiterer unterschied wäre, dass CDbl einen Fehler erzeugt, wenn der Wert nicht einer Zahl entspricht, VAL hingegen gibt dann 0 als Wert aus oder verwendet den Teil bis zum ersten Buchstaben für die Umwandlung.
eine weitere Alternative wäre die Umwandlung von Text in Zahl mit hilfe der Menüfunktion DATEN - DATENTOOLS - TEXT IN SPALTEN.
hierbei kann man im Schritt 3 des Assistenten unter WEITERE explizit angeben, welche Zeichen Dezimal- und Tausendertrennzeichen sein sollen.
auch für ein Makro würde ich die Anwendung von TEXT IN SPALTEN bevorzugen, weil es die Umwandlung der Daten in einem Programmschritt erledigt und somit wesentlich angenehmer beim Testen im Einzelstepmodus ist als eine Schleife.
Gruß Daniel
Anzeige
AW: Umwandlung von Zahlen mittels Array
15.05.2020 09:17:02
Zahlen
Guten Tag
Es hat sich herausgestellt, dass bei einer anderen Problembereinigung auf dem Gerät versehentlich gewisse andere Einstellungen geändert wurden. Nachdem diese jetzt wieder umgestellt wurden, läuft alles wieder tadellos.
Vielen Dank für die Unterstützung.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige