Recortar todos los espacios (Microsoft Excel)
Sudhakar tiene algunos datos en la columna A que tienen espacios al final. Si usa la función TRIM en los datos, elimina algunos espacios finales, pero no todos. Se pregunta por qué se omitirían algunos espacios y cómo puede eliminarlos todos.
En realidad, hay algunas formas diferentes de abordar este problema.
El método adecuado para sus fines dependerá, invariablemente, de la naturaleza de los datos que esté utilizando.
En primer lugar, si usa TRIM en una celda, recuerde que solo elimina espacios. Esto, por definición, significa que solo elimina los caracteres que tienen el código ASCII de 32. Desafortunadamente, hay otros caracteres ASCII que aparecen como «espacios», pero en realidad no son espacios. TRIM no los eliminará.
Sería útil si pudieras descubrir qué son esos molestos personajes, ¿verdad? Bueno, si el texto en la celda no es tan largo, aquí hay una pequeña macro práctica que observará el contenido de la celda y mostrará cada carácter, a su vez, junto con su valor ASCII:
Sub StringContents() Dim sTemp As String Dim sMsg As String Dim J As Integer If Selection.Cells.Count > 1 Then sMsg = "Please select only one cell" Else sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf For J = 1 To Len(ActiveCell.Value) sTemp = Mid(ActiveCell.Value, J, 1) sMsg = sMsg & ">" & sTemp & "< " & Asc(sTemp) & vbCrLf Next J End If MsgBox sMsg End Sub
Para usar la macro, simplemente seleccione la celda única que desea probar y luego ejecútela. Termina con un cuadro de mensaje que muestra la cadena completa junto con cada carácter individual dentro de la cadena.
Una vez que sepa el valor ASCII del carácter ofensivo que TRIM no eliminará, puede hacer una sustitución por ese carácter. Por ejemplo, si el espacio sin espacio muestra un valor ASCII de 160, puede hacer la sustitución de esta manera:
=SUBSTITUTE(A1,CHAR(160)," ")
Esto sustituye el carácter de espacio real por cualquier carácter ASCII 160 en la cadena. De manera similar, puede eliminar otros espacios falsos similares.
Por supuesto, puede intentar usar una función de Excel diferente para deshacerse de algunos de los caracteres ASCII que no se imprimen, como este:
=CLEAN(A1)
No se deshará de todo, pero hace un buen trabajo limpiando a muchos de los personajes ofensivos.
Incluso puede comenzar a combinar funciones en su fórmula de limpieza, de esta manera:
=TRIM(CLEAN(A1))
Podrías dar un paso más, de esta manera:
=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))
Esta fórmula elimina los caracteres ASCII 160, así como las cosas capturadas por CLEAN, y luego hace un TRIM en ese resultado.
Si tiene que limpiar bastantes celdas o si necesita limpiar las celdas con regularidad, es posible que desee considerar el uso de una macro para hacer el trabajo pesado. La siguiente macro eliminará muchos caracteres que no se impriman, dejando solo los caracteres visibles y la puntuación.
Sub CleanCells() Dim rTarget As Range Dim c As Range Dim sTemp As String Dim J As Integer Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2) For Each c In rTarget sTemp = c.Value For J = 1 To 31 sTemp = Replace(sTemp, Chr(J), " ") Next J For J = 127 To 255 sTemp = Replace(sTemp, Chr(J), " ") Next J c.Value = sTemp Next c End Sub
La macro solo funciona en aquellas celdas dentro de la selección actual que contienen valores constantes. En otras palabras, aquellas celdas que no contienen fórmulas.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (5132) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.