Como exibir ou visualizar caracteres não impressos em Excel?
Existe alguma opção no MS Excel 2010 que exiba caracteres não impressos dentro de uma célula (por exemplo, espaços ou o caractere de quebra de linha introduzido ao pressionar Alt-Enter)?
Existe alguma opção no MS Excel 2010 que exiba caracteres não impressos dentro de uma célula (por exemplo, espaços ou o caractere de quebra de linha introduzido ao pressionar Alt-Enter)?
A forma mais fácil de o fazer é simplesmente mudar a fonte para uma fonte que tenha um glifo visível integrado para o espaço (ou qualquer outro carácter que possa ser necessário identificar)
Infelizmente, não tenho nenhum bom exemplo de tal fonte para lhe fornecer, mas é muito fácil adicionar um pequeno ponto a uma fonte existente, utilizando qualquer software editor de fontes. Apenas não se esqueça de renomear a fonte (não o ficheiro da fonte, mas o NOME da fonte dentro do ficheiro da fonte), para que seja fácil distinguir esta fonte personalizada da original, se tiver ambas instaladas.
EDIT* Finalmente encontrei tempo para fazer uma fonte deste tipo! Aqui vem DottedSpace Mono, baseada em Bitstream Vera Sans Mono, mas com espaços pontilhados embutidos : http://github.com/tanusoft/DottedSpaceMono
CTRL+H substituir todos os espaços por um ~ Isto ajudará rapidamente para espaços sem programação , e para inverter apenas substituir ~ por “ ”.
O melhor programa que encontrei para comparar estes tipos de ficheiros onde o texto não está a ser exibido é o Ultra Edit. Tive de o utilizar para comparar ficheiros EDI, ficheiros de interface , uploads técnicos, etc. O MS Office simplesmente não está bem equipado para a tarefa.
Embora não possa mostrar caracteres especiais directamente na célula, poderia usar uma fórmula na coluna adjacente (inserida) para substituir Entradas e Espaços por caracteres da sua escolha!
E.g.
=SUBSTITUTE(A1;" ";" ¶ ")
substituiria qualquer quebra de linha com o símbolo da palavra para a quebra de linha. E a fórmula aninhada
=SUBSTITUTE(SUBSTITUTE(A1;" ";" ¶ ");" ";"\_")
substituirá ambos, espaço e entrada. (Nota: para introduzir um “Enter” na fórmula, é necessário premir Alt+Enter
enquanto se edita a fórmula.
1 Use find e insira o espaço
2 Faça Replace All e escreva “[s-p-a-c-e]”
3 Opcional: Se também quiser destacar a célula inteira a vermelho, basta usar o selector de formato ao lado desse
Resultado: Esses espaços irritantes revelar-se-ão super claramente
Porque é que precisei de fazer isto: Usei a função COUNTA para encontrar células não em branco numa coluna. Contudo, estava a devolver um número maior do que eu esperava. Depurei cada célula uma a uma, e para meu espanto, algumas células aparentemente em branco mostraram COUNTA=0 e outras mostraram COUNTA=1, o que não faz sentido. NÃO consegui ver a diferença entre as duas. Acontece que um único resquício em branco conta nessa função, mas não é visível EM QUALQUER LUGAR nem na célula nem na caixa de entrada no topo.
Conclusão: Se está a contar com COUNTA para tarefas importantes, é melhor ter a certeza de que não está a contar os espaços problemáticos que pode não saber que existem.
Normalmente não preciso de VBA, por isso prefiro fazer coisas excelentes 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
Não responde exactamente à sua pergunta, mas defini o formato numérico para isto:
;;;'@'
para aspas simples, ou este
;;;\"@\"
para aspas duplas. Isto envolve citações em torno de qualquer texto introduzido. Também defino a fonte para Courier New (ou qualquer outra fonte de largura fixa).