Jean muss Kommas durch Punkte in einer Zahlentabelle ersetzen. Er arbeitet in Frankreich mit einem französischen PC, muss diese Zahlen jedoch für eine amerikanische Nicht-Excel-Anwendung „übersetzen“. Wenn er manuell ein Suchen und Ersetzen durchführt, funktioniert alles gut. Natürlich werden seine Zahlen in Zeichenfolgen umgewandelt, aber das ist für Jean in Ordnung. Wenn er versucht, dieselbe Such- und Ersetzungsoperation in einem Makro auszuführen, geschieht nichts. Die Kommas scheinen ignoriert zu werden. Jean fragt sich, wie er diese Aufgabe in einem Makro erledigen kann, anstatt sie jedes Mal manuell ausführen zu müssen.

Es ist relativ einfach, vorübergehend zu ändern, was Excel als regionale Einstellungen verwendet, damit Informationen so angezeigt werden können, wie Jean es wünscht. Das folgende Makro wechselt ziemlich einfach zwischen den gewünschten Einstellungen hin und her:

Sub ChangeNumberFormat()

With Application         .UseSystemSeparators = False         If .DecimalSeparator = "." Then             .DecimalSeparator = ","

.ThousandsSeparator = "."

Else            .DecimalSeparator = "."

.ThousandsSeparator = ","

End If     End With End Sub

Dadurch wird geändert, wie die Informationen angezeigt werden. Anschließend können Sie die Informationen in ein beliebiges Nicht-Excel-Format (z. B. CSV) exportieren. Wenn Sie fertig sind, führen Sie das Makro erneut aus und Sie sollten Ihre regionalen Einstellungen wieder so haben, wie sie ursprünglich waren. Der Vorteil dieses Ansatzes besteht darin, dass Sie nie wirklich ändern, was sich in den Zellen befindet, sondern nur, wie diese Informationen angezeigt werden. Dies bedeutet, dass Ihre Nummern Nummern bleiben und weiterhin als solche verwendet werden können.

Wenn Sie etwas direkteres benötigen, ist es wahrscheinlich am besten, Find and Replace nicht zu verwenden. Verwenden Sie stattdessen das Makro, um direkt zu ändern, was sich in jeder Zelle befindet. Ein solcher Ansatz kann viel schneller ablaufen als das Suchen und Ersetzen, selbst in einem Makro. Hier ist eine einfache Anwendung dieses Konzepts:

Sub SwitchCommasPeriods()

Dim c As Range     Dim sTemp As String          For Each c In Selection         sTemp = c.Text         sTemp = Replace(sTemp, ",", "|")

sTemp = Replace(sTemp, ".", ",")

sTemp = Replace(sTemp, "|", ".")

c = sTemp     Next c End Sub

Beachten Sie einige Dinge im Makro. Zunächst wird die Text-Eigenschaft für jede Zelle überprüft. Der Grund dafür ist, dass die Text-Eigenschaft den formatierten Wert der Zelle zurückgibt – mit anderen Worten, was angezeigt wird. (Wenn Sie sich einfach die Value-Eigenschaft ansehen, erhalten Sie die unformatierte Zahl, die Sie nicht verwenden möchten.)

Als zweites ist zu beachten, dass mit der Funktion Ersetzen zuerst alle Kommas durch einen vertikalen Balken, dann alle Punkte durch Kommas und schließlich alle vertikalen Balken durch Punkte ersetzt werden. Dieser Ansatz ist erforderlich, da Sie im Text im Wesentlichen Punkte und Kommas austauschen.

Um das Makro zu verwenden, wählen Sie einfach die Zellen aus, die Sie beeinflussen möchten, und führen Sie es dann aus. Es werden nur die ausgewählten Zellen verarbeitet. Wenn eine Zelle eine Formel enthält, ersetzt das Makro diese Formel durch das verarbeitete Ergebnis der Formel. Dies sollte jedoch für Jean’s Zwecke in Ordnung sein.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (13675) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.