Como exibir ou exibir caracteres não imprimíveis no Excel?

12

Existe uma opção no MS Excel 2010 que exibirá caracteres não imprimíveis em uma célula (por exemplo, espaços ou o caractere de quebra de linha introduzido ao pressionar Alt-Enter)?

Freda K
fonte
2
você pode colocar =IF(CLEAN(A1)=A1,"NA","Needs Cleaning")na célula ao lado da célula ao lado ou usar a formatação condicional usando a notação char () (ou chr no VBA) para procurar retornos carraige (char (13)) ou qualquer outro caractere, aqui está um link para os números de caracteres
Qual é o seu motivo para precisar vê-los? A menos que você só gosta de vê-los, existem maneiras que podem ser capazes de ajudá-lo a alcançar um outro objectivo (por exemplo, remover todas as quebras de linha a partir de uma coluna de células)
PatKilg
O objetivo de exibir os caracteres não imprimíveis é simplesmente revisar o conteúdo das células. Como o conteúdo é técnico e os retornos de carro são comuns (e esperados) nele, isso é algo que precisa ser feito manualmente.
Freda K
@ scott Muito obrigado pela observação sobre o uso de CLEAN (). Essa função será muito útil, embora, infelizmente, não ajude a essa necessidade específica.
Freda K
Parece que você está usando o programa errado para sua tarefa, mas eu entendo que às vezes pode ser inevitável. Por que você não pode usar uma tabela no Microsoft Word? Dito isto, coloquei uma resposta a esta pergunta específica abaixo.
PatKilg

Respostas:

3

Embora não seja possível mostrar caracteres especiais diretamente na célula, você pode usar uma fórmula na coluna adjacente (inserida) para substituir Entradas e Espaços por caracteres de sua escolha!

Por exemplo

= SUBSTITUTO (A1; "
";"
¶
")
substituiria qualquer quebra de linha pelo símbolo da palavra para a quebra de linha. E a fórmula aninhada
= SUBSTITUTO (SUBSTITUTO (A1; "
";"
¶
");" ";" _ ")
substituirá ambos, space e enter. (Nota: para inserir um "Enter" na fórmula, você precisa pressionar Alt+Enterenquanto edita a fórmula.

Peter Albert
fonte
Adoro o trabalho, por que não pensei nisso!
PatKilg
10

A maneira mais fácil de fazer isso é simplesmente alterar a fonte para uma fonte que tenha um glifo visível incorporado para o espaço (ou qualquer outro caractere que você precise identificar)

Infelizmente, não tenho nenhum bom exemplo dessa fonte para fornecer a você, mas é muito fácil adicionar um pequeno ponto a uma fonte existente, usando qualquer software de edição de fontes. Apenas não se esqueça de renomear a fonte (não o arquivo de fonte, mas a fonte NAME dentro do arquivo de fonte), para que seja fácil distinguir essa fonte personalizada da fonte original, se os dois estiverem instalados.

EDIT Finalmente encontrei tempo para criar uma fonte assim! Aí vem o DottedSpace Mono, baseado no Bitstream Vera Sans Mono, mas com espaços pontilhados incorporados:

http://github.com/tanusoft/DottedSpaceMono

Christophe Franco
fonte
1
Não vejo feeds de linha, por exemplo.
Zylstra # 4/16
4

CTRL + H substitui todos os espaços com um ~ Isso ajudará rapidamente em espaços sem programação e, para reverter, basta substituir ~ por "".

O melhor programa que encontrei para comparar esses tipos de arquivos em que o texto não está sendo exibido é o Ultra Edit. Teve que usá-lo para comparar arquivos EDI, arquivos de interface, uploads técnicos etc. O MS Office simplesmente não está bem equipado para a tarefa.

Cam Fairweather
fonte
Este método substitui os espaços, mas nem todos os caracteres não imprimíveis, por exemplo, CHAR (10) (um retorno de carro dentro de uma célula, também obtido usando Alt-Enter)
Freda K
1

Alterar a fonte para o tipo "Terminal" ajudará você a vê-los e alterá-los.

Abóbora
fonte
0

Não responde exatamente a sua pergunta, mas defino o formato do número para isso:

;;;'@'

para aspas simples ou esta

;;;\"@\"

para aspas duplas. Que envolve aspas em torno de qualquer texto digitado. Também defino a fonte como Courier New (ou qualquer outra fonte de largura fixa).

Chalky
fonte
0

1 Uso encontrar e inserir espaço

faça 2 Substitua tudo e digite "[espaço]"

3 Opcional: Se você também deseja destacar a célula inteira também em vermelho, basta usar o seletor de formato ao lado

Resultado: esses espaços incômodos se revelarão super claramente

Por que eu precisei fazer isso: Usei a função COUNTA para encontrar células não vazias em uma coluna. No entanto, estava retornando um número maior do que eu esperava. Eu depurei cada célula uma por uma e, para minha surpresa, algumas células aparentemente em branco mostraram COUNTA = 0 e outras mostraram COUNTA = 1, o que não faz sentido. Eu não conseguia ver o diferente entre os dois. Acontece que um único resto em branco conta nessa função, mas não é visível em QUALQUER LUGAR na célula ou na caixa de entrada na parte superior.

Conclusão: Se você está contando com o COUNTA para tarefas importantes, é melhor ter certeza de que ele não conta os espaços problemáticos que talvez você não saiba que existem.

Jean Goulet
fonte
0

Normalmente não preciso de VBA, então prefiro fazer coisas de excel em 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
fonte
Geralmente, as respostas são muito mais úteis se incluem uma explicação sobre o que o código pretende fazer e por que isso resolve o problema sem a introdução de outros.
MMM de
Fez algumas edições, graças
Gleb S