¿Cómo mostrar o ver caracteres que no se imprimen en Excel?

12

¿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)?

Freda K
fuente
2
puede poner =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
¿Cuál es su razón para necesitar verlos? A menos que solo quiera verlos, hay maneras en que podríamos ayudarlo a lograr otro objetivo (por ejemplo, eliminar todos los saltos de línea de una columna de celdas)
PatKilg
El objetivo de mostrar los caracteres que no se imprimen es simplemente corregir el contenido de las celdas. Dado que el contenido es técnico y los retornos de carro son comunes (y esperados) dentro de él, esto es algo que debe hacerse a mano.
Freda K
@scott Muchas gracias por la nota sobre el uso de CLEAN (). Esa función será muy útil, aunque lamentablemente no va a ayudar para esta necesidad específica.
Freda K
Parece que está utilizando el programa incorrecto para su tarea, pero entiendo que a veces puede ser inevitable. ¿Por qué no puedes usar una tabla en Microsoft Word? Dicho esto, pongo una respuesta a esta pregunta específica a continuación.
PatKilg

Respuestas:

3

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+Entermientras edita la fórmula.

Peter Albert
fuente
Me encanta el trabajo, ¿por qué no pensé en eso?
PatKilg
10

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:

http://github.com/tanusoft/DottedSpaceMono

Christophe Franco
fuente
1
No veo saltos de línea, por ejemplo.
zylstra
4

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.

Cam Fairweather
fuente
Este método reemplazará los espacios, pero no todos los caracteres que no se imprimen, por ejemplo, CHAR (10) (un retorno de carro dentro de una celda, también se logra usando Alt-Enter)
Freda K
1

Cambiar la fuente al tipo "Terminal" lo ayudaría a verlos y modificarlos.

Calabaza
fuente
0

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).

Gredoso
fuente
0

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í.

Jean Goulet
fuente
0

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

Gleb S
fuente
En general, las respuestas son mucho más útiles si incluyen una explicación de lo que el código pretende hacer y por qué eso resuelve el problema sin introducir otros.
MMM
Hizo algunas ediciones, gracias
Gleb S