Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kann den Fehler nicht finden

Kann den Fehler nicht finden
03.06.2008 13:37:18
christian
Hallo,
ich habe in mehreren Spalten Zahlen als Text stehen, zur konvertierung multipliziere ich den bereich jeweils 1.
Zusätzlich stehen in splate P und Q Werte mit Punkt statt als Trennzeichen, das lasse ich auch ersetzen.
ich habe folgenden Code.

Columns("P:Q").Select   'Ersetzen aller Punkte in definierten Spalten durch Kommas
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With Range("C3:O8644")  'Text zu Zahl
.NumberFormat = "0"
.Value = .Value
End With


Die Multiplikation mir eins funktioniert, aber das ersetzen aller punkte durch kommas leider nicht, wo liegt mein fehler?
christian

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kann den Fehler nicht finden
03.06.2008 13:46:38
Harald
Hallo Christian,
beim Ersetzen bleibt der TExt ein text. Erst durch Multiplikation mit 1 macht Excel daraus eine Zahl.
gruß Harald

AW: Kann den Fehler nicht finden
03.06.2008 13:52:56
christian
Das mit dem ersetzen der punkte funktioniert nicht,
das mit der zahl geht.
Oder hab ich dich jetzt falsch verstanden?

AW: Kann den Fehler nicht finden
03.06.2008 13:57:00
Harald
Kommt drauf an, was Du 1. meinst und was Du 2. verstanden hast.
Mal anders herum: Ich habe verstanden, dass Du einen Reihe von vermeintlichen Zahlen hast, die aber statt eines Kommas einen Punkt haben. Den punkt ersetzt Du durch Komma. Das sollte so weit funktionieren. Da die Zelle aber wegen des Punktes als "text" formatiert war, bleibt sie "text". Wenn Du danach mit "1" multiplizierst, fängt Excel an zu rechnen und liefert als Ergebnis erst die gewünschte Zahl.
Oder habe ich jetzt DIch falsch verstanden?
Harald

Anzeige
AW: Kann den Fehler nicht finden
03.06.2008 13:58:11
Renee
Hi Christian,
besser so:

With Range("P:Q")   'Ersetzen aller Punkte in definierten Spalten durch Kommas
.Replace What:=".", Replacement:=",", LookAt:=xlPart,  SearchOrder:=xlByRows
End With
With Range("C3:O8644")  'Text zu Zahl
.NumberFormat = "0"
.Value = .Value
End With


GreetZ Renée

AW: Kann den Fehler nicht finden
03.06.2008 14:25:00
christian
habs probiert, in spalte P funzt es in Q aber nicht. aber keine ahnung warum
christian

Keine Ahnung, ...ich auch nicht (owT)
03.06.2008 14:32:57
Renee

Kann es sein, dass ...
03.06.2008 14:35:00
christian
... er nach spalte P abbricht und Q gar nicht prüft?
Ich würde es ja gerne mitschicken, ist aber ne viel zu große Datei.

Anzeige
Nein, eigentlich nicht...
03.06.2008 14:37:39
Renee
aber, du kannst ja die 2 Orignalspalten (oder ein Ausschnitt davon) ja mal in eine eigene Tabelle kopieren und die hochladen, wenn's in der auch nicht gehen sollte, Christian.
GreetZ Renée

hab einen ausschnitt gemacht
03.06.2008 14:50:00
christian
ich hab mal die zwei spalten in eine neue tabelle eingefügt.
aber noch nicht das makro reingeschrieben, mein rechner macht gerade macken.
https://www.herber.de/bbs/user/52790.xls

AW: hab einen ausschnitt gemacht
03.06.2008 14:58:00
Renee
Hi Christian,
Dieses Makro funktioniert problemlos:

With Range("A:B")   'Ersetzen aller Punkte in definierten Spalten durch Kommas
.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByRows
End With
With Range("A1:B3102")  'Text zu Zahl
.NumberFormat = "0.00"
.Value = .Value
End With


Vielleicht solltest du es in Zukunft einfach unterlassen, an der Sequenz der Befehle etwas zu ändern!
GreetZ Renée

Anzeige
AW: @ Renée: funzt nicht!
03.06.2008 15:21:00
Erich
Hi Renée,
so ganz funzt das nicht - bei mir macht das Makro aus dem Text "152.118" die Zahl 152118,
angezeigt als 152118,00 - richtig wäre 152,118 (Anzeige 152,12).
Ich weiß noch keine Lösung, vermute aber, dass Excel den Punkt hier als 1000er-Trenner interpretiert.
Spalte A ist ohne Probleme.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

@ Erich
03.06.2008 15:49:00
christian
Hallo,
das mit dem tausendertrennzeichen würde ich auch so interpretieren.
wenn ich das manuell durchführe macht er aus z.B. 152.118 dann 152,118
und es ist kein tausender-trennzeichen, soviel kann ich garantieren.

Anzeige
AW: @ Renée: funzt nicht!
03.06.2008 16:00:30
Renee
Hi Erich,
Du hast recht. Ich hab das immer mit meiner schweizerischen Ländereinstellung getestet. Bei uns ist Punkt das Dezimaltrennzeichen. Jetzt hab ich mal die Ländereinstellung auf Komma = Dezimaltrennzeichen und Punkt = Tausendertrennzeichen geändert und siehe da... Wie kann man nur so verdrehte Ländereinstellungen haben ;-)
Die Lösung könnte so aussehen:

Private Sub tt()
Dim vArr(), lRow As Long, lCol As Long
vArr = Range("A3:B3000")
For lRow = 1 To UBound(vArr, 1)
For lCol = 1 To UBound(vArr, 2)
vArr(lRow, lCol) = Replace(vArr(lRow, lCol), ".", ",")
Next lCol
Next lRow
Range("A2:B3000") = vArr
End Sub


(Bereich entsprechen anpassen!)
GreetZ Renée

Anzeige
Achtung...kleiner Typo:
03.06.2008 16:03:40
Renee
Besser so:

Private Sub tt()
Dim vArr(), lRow As Long, lCol As Long
vArr = Range("A3:B3000")
For lRow = 1 To UBound(vArr, 1)
For lCol = 1 To UBound(vArr, 2)
vArr(lRow, lCol) = Replace(vArr(lRow, lCol), ".", ",")
Next lCol
Next lRow
Range("A3:B3000") = vArr
End Sub


GreetZ Renée

AW: @ Renée
03.06.2008 16:18:00
christian
Ich habe das bei jetzt folgendermaßen angepasst:

Dim vArr(), lRow As Long, lCol As Long
vArr = Range("P1:Q8644")
For lRow = 1 To UBound(vArr, 1)
For lCol = 1 To UBound(vArr, 2)
vArr(lRow, lCol) = Replace(vArr(lRow, lCol), ".", ",")
Next lCol
Next lRow
Range("P1:Q8644") = vArr
With Range("C3:Q8644")  'Text zu Zahl
.NumberFormat = "0.00"
.Value = .Value
End With


leider funktioniert es wieder nur in der spalte P. richtig angpasst sollte es sein.
christian

Anzeige
Muss passen...
03.06.2008 16:54:00
Renee
Hi Christian,
Sorry, dann kann ich auch nicht weiterhelfen.
Ich hab's an deiner Beispielmappe ausprobiert mit einer anderen Ländereinstellung und da hat es geklappt.
Der zweite Teil des Codes (With Range("....) ist IMHO nicht mehr nötig.
GreetZ Renée

AW: neue Version
03.06.2008 18:19:18
Erich
Hi Christian,
probier mal

Sub aa()
Dim vArr(), lRow As Long, lCol As Long
With Range("A3:B10")                   ' anpassen
vArr = .Value
For lRow = 1 To UBound(vArr, 1)
For lCol = 1 To UBound(vArr, 2)
vArr(lRow, lCol) = Replace(vArr(lRow, lCol), ".", ",")
Next lCol
Next lRow
.NumberFormat = "General"     ' oder "0.000"
.Value = vArr
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
@Erich; habs probiert ....
04.06.2008 08:37:48
christian
funktioniert aber leider auch nicht.
christian

AW: @Erich; habs probiert ....
04.06.2008 13:53:00
Erich
Hi Christian,
testest du das bitte mal in dieser Mappe? https://www.herber.de/bbs/user/52812.xls
(Im Blatt "orig" sind die Quelldaten zum Kopieren in Tabelle 1.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

@ René; Alternativlösung
04.06.2008 09:11:00
christian
Hallo,
alternativ bleibt mir nur noch die Möglichkeit die Ländereinstellung für meine Anzahl dateien zu ändern.
Müsste dann einfach mal schauen, ob alle weiteren Daten davon unbeeinflusst bleiben.
Wie ändere ich die Einstellung?
christian

Anzeige
AW: @ René; Alternativlösung
04.06.2008 09:28:57
Renee
Hi Christian,
Ich seh darin keine Alternativlösung.
Ich kann den Fehler ohne die Originaldaten, nicht ausmachen.
Die Ländereinstellung kannst du nicht via VBA ändern, sondern nur von aussen (Systemeinstellungen - Regionale Einstellung). Müsste dann einfach mal schauen, ob alle weiteren Daten davon unbeeinflusst bleiben das wird sicher nicht der Fall sein, da es sich um eine systemweite Einstellung handelt!, also sehr vorsichtig damit!
GreetZ Renée

Mir fällt da noch was ein, ...
04.06.2008 09:46:00
christian
... ich könnte ihm im Anschluss sagen:
dividiere jeden Wert die spalte Q durch 1000.
das würde die anderen Daten nicht beeinflussen und auch nicht die Daten der Spalte Q verfälschen, da er ja das Trennzeichen im prinzip "indirekt ersetzt".
Wie müsste man das formulieren?
christian

Anzeige
AW: Mir fällt da noch was ein, ...
04.06.2008 10:04:00
Renee
Hi Christian,
Probier's mal so (ohne jegliche Anpassung!):

Sub TextZuZahlSpezial()
Dim vArr(), lRow As Long, lCol As Long
vArr = Range("P3:Q8644")
For lRow = 1 To UBound(vArr, 1)
For lCol = 1 To UBound(vArr, 2)
vArr(lRow, lCol) = Replace(vArr(lRow, lCol), ",", ".")
If lCol = UBound(vArr, 2) Then
vArr(lRow, lCol) = vArr(lRow, lCol) / 1000
End If
Next lCol
Next lRow
ActiveSheet.Range("P3:Q8644") = vArr
End Sub


GreetZ Renée

AW: Mir fällt da noch was ein, ...
04.06.2008 10:12:00
christian
Schaut gut aus, er macht das wie gewünscht.
Aber mit der Zeile:

vArr(lRow, lCol) = vArr(lRow, lCol) / 1000


scheint er nicht ganz zufrieden zu sein.
Laufzeitfeheler '13'
Typen unverträglich

Mir fällt nichts mehr ein... (owT)
04.06.2008 10:37:00
Renee

geht auch so, danke.
04.06.2008 10:50:39
christian
es funktioniert auch so. Einfach beenden drücken und damit hat sich das.
Danke für deine Hilfe
christian

AW: Kann den Fehler nicht finden
03.06.2008 13:58:45
Harald
Probier's mal so:
With Range("C3:O8644") 'Text zu Zahl
.NumberFormat = "0"
.Value = .Value*1
End With
Harald

AW: Kann den Fehler nicht finden
03.06.2008 14:10:41
Renee
Hi Harald,
Dein Helferwille in Ehren, aber das hatten wir alles schon...
*1 ist völlig unnötig!
GreetZ Renée

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige