¿Existe una opción en MS Excel 2010 que muestre caracteres no imprimibles dentro de una celda (por ejemplo, espacios o el carácter de salto de línea introducido presionando Alt-Enter)?
¿Existe una opción en MS Excel 2010 que muestre caracteres no imprimibles dentro de una celda (por ejemplo, espacios o el carácter de salto de línea introducido presionando Alt-Enter)?
Respuestas:
Si bien no puede mostrar caracteres especiales directamente en la celda, ¡podría usar una fórmula en la columna adyacente (insertada) para reemplazar las entradas y los espacios con los caracteres que elija!
P.ej
= SUSTITUTO (A1; " ";" ¶ ")reemplazaría cualquier salto de línea con el símbolo de la palabra para el salto de línea. Y la fórmula anidada
= SUSTITUTO (SUSTITUTO (A1; " ";" ¶ ");" ";" _ ")reemplazará a ambos, espacio y entrar. (Nota: para ingresar un "Enter" en la fórmula, debe presionar
Alt+Enter
mientras edita la fórmula.
La forma más fácil de hacerlo es simplemente cambiar la fuente a una fuente que tenga un glifo visible incorporado para el espacio (o cualquier otro carácter que necesite identificar)
Desafortunadamente, no tengo ningún buen ejemplo de una fuente de este tipo para proporcionarle, pero es muy fácil agregar un pequeño punto a una fuente existente, utilizando cualquier software de editor de fuentes. Simplemente no olvide cambiar el nombre de la fuente (no el archivo de fuente, sino el NOMBRE de fuente dentro del archivo de fuente), de modo que sea fácil distinguir esta fuente personalizada de la original si tiene ambos instalados.
EDITAR ¡Finalmente he encontrado el tiempo para hacer una fuente así! Aquí viene DottedSpace Mono, basado en Bitstream Vera Sans Mono, pero con espacios de puntos incorporados:
CTRL + H reemplaza todos los espacios con un ~ Esto ayudará rápidamente para espacios sin programación, y para revertir simplemente reemplace ~ con "".
El mejor programa que encontré para comparar estos tipos de archivos donde no se muestra texto es Ultra Edit. Tuve que usarlo para comparar archivos EDI, archivos de interfaz, cargas técnicas, etc. MS Office simplemente no está bien equipado para la tarea.
Alt-Enter
)
No responde exactamente a su pregunta, pero configuré el formato de número para esto:
;;;'@'
para comillas simples, o esto
;;;\"@\"
para comillas dobles Eso envuelve citas alrededor de cualquier texto ingresado. También configuré la fuente en Courier New (o cualquier otra fuente de ancho fijo).
1 Use buscar e ingresar espacio
2 Reemplace todo y escriba "[espacio]"
3 Opcional: si también desea resaltar toda la celda en rojo, simplemente use el selector de formato al lado
Resultado: esos espacios molestos se revelarán súper claramente
¿Por qué necesitaba hacer esto? Utilicé la función COUNTA para encontrar celdas no en blanco en una columna. Sin embargo, estaba devolviendo un número mayor de lo que esperaba. Depuré cada celda una por una, y para mi sorpresa, algunas celdas aparentemente en blanco mostraban COUNTA = 0 y otras mostraban COUNTA = 1, lo cual no tiene sentido. NO pude ver la diferencia entre los dos. Resulta que un solo sobrante cuenta en blanco en esa función, pero no está visible EN CUALQUIER LUGAR ni en la celda ni en el cuadro de entrada en la parte superior.
Conclusión: si confía en COUNTA para tareas importantes, es mejor que se asegure de que no cuente esos espacios problemáticos que quizás no sepa que están allí.
Por lo general, no necesito VBA, así que prefiero hacer cosas de Excel en python + openpyxl
from docx import Document #word docx py library
import openpyxl #excel py library
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
import re #regular expressions
import os #work with system
wb = openpyxl.load_workbook('test.xlsx') #open needed document
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid') #function to fill bad cells red
n = 0
print (wb.sheetnames) #print all sheetnames to ensure theres no hidden
for sheet in wb.worksheets: #cycle through sheets in excel file
# get max row count
max_row=sheet.max_row
# get max column count
max_column=sheet.max_column
for i in range(1,max_row+1):
# iterate over all columns
for j in range(1,max_column+1): #cycle through all rows and columns
# get particular cell value
cell_obj=sheet.cell(row=i,column=j)
s = re.search('[^-*+()!№;%:?@#$%^&;:_=/\\a-zA-Z0-9\ а-яА-Я°\'\".,,.«»<>ёЁ]', str(cell_obj.value)) #find bad symbols with regular expression
#^ find not normal characters
#s = re.search('[\n]', str(cell_obj.value)) find line end
if s:
print(n, " ", i, " ", j) #sheet, row, col
#print("^", s, "^") print bad symbol
#sheet.cell(row=i,column=j).fill = redFill
#color current cell wth spec chars red
print(n)
n+=1
wb.save("test.xlsx") #save redacted book
=IF(CLEAN(A1)=A1,"NA","Needs Cleaning")
la celda al lado de la celda al lado, o puede usar el formato condicional usando la notación char () (o chr en VBA) para buscar retornos de carraige (char (13)) o cualquier otro carácter, aquí está un enlace a los números de char