Jean necesita reemplazar las comas con puntos en una tabla de números. Trabaja en Francia, usando una PC francesa, pero necesita «traducir» estos números para una aplicación estadounidense que no sea Excel. Cuando realiza manualmente Buscar y reemplazar, todo funciona bien. Por supuesto, sus números se convierten en cadenas, pero eso está bien para Jean. Cuando intenta hacer la misma operación de Buscar y Reemplazar en una macro, no sucede nada; las comas parecen ignorarse. Jean se pregunta cómo puede realizar esta tarea en una macro en lugar de tener que hacerlo manualmente cada vez.

Es relativamente fácil modificar temporalmente lo que utiliza Excel como configuración regional para que pueda mostrar información tal como desea Jean. La siguiente macro alternará fácilmente entre las configuraciones deseadas:

Sub ChangeNumberFormat()

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

.ThousandsSeparator = "."

Else            .DecimalSeparator = "."

.ThousandsSeparator = ","

End If     End With End Sub

Eso cambia la forma en que se muestra la información, y luego puede exportar la información a cualquier formato que no sea Excel deseado (como CSV). Una vez hecho esto, ejecute la macro nuevamente y debería tener su configuración regional de nuevo a la forma en que estaba originalmente. El beneficio de este enfoque es que nunca cambia realmente lo que hay en las celdas, solo cómo se muestra esa información. Esto significa que sus números siguen siendo números y pueden seguir utilizándose como tales.

Si necesita algo más directo, probablemente sea mejor no utilizar Buscar y reemplazar. En su lugar, use la macro para modificar directamente lo que hay en cada celda. Este enfoque puede ejecutarse mucho más rápido que confiar en Buscar y reemplazar, incluso en una macro. Aquí hay una aplicación simple de este concepto:

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

Tenga en cuenta un par de cosas en la macro. Primero, mira la propiedad Text para cada celda. El motivo es que la propiedad Text devuelve el valor formateado de la celda, en otras palabras, lo que se muestra. (Si simplemente observa la propiedad Value, obtendrá el número sin formato, que no es lo que desea usar).

La segunda cosa a tener en cuenta es que la función Reemplazar se usa para reemplazar primero todas las comas con una barra vertical, luego todos los puntos con comas y finalmente todas las barras verticales con puntos. Este enfoque es necesario porque básicamente está intercambiando puntos y comas en el texto.

Para usar la macro, simplemente seleccione las celdas que desea afectar y luego ejecútela. Solo se procesan las celdas seleccionadas. Si una celda contiene una fórmula, la macro reemplaza esa fórmula con el resultado procesado de la fórmula. Sin embargo, esto debería estar bien para los propósitos de Jean.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13675) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.