Как отображать или просматривать непечатные символы в Excel?

Есть ли в MS Excel 2010 опция, которая будет отображать непечатаемые символы внутри ячейки (например, пробелы или символ перевода строки, введенный нажатием Alt-Enter)?

6 ответов

Решение

Хотя вы не можете отображать специальные символы непосредственно в ячейке, вы можете использовать формулу в соседнем (вставленном) столбце, чтобы заменить вводы и пробелы на символы по вашему выбору!

Например

 = ПОДСТАВИТЬ (А1;"
";"
¶
") 
заменит любой перевод строки символом слова для перевода строки. И вложенная формула
 = ПОДСТАВИТЬ (ПОДСТАВИТЬ (А1;"
";"
¶
");" ";" _ ") 
заменит бот, пробел и войдет. (Примечание: чтобы ввести "Ввод" в формулу, нужно нажать Alt+Enter при редактировании формулы.

Самый простой способ сделать это - просто изменить шрифт на шрифт, который имеет встроенный видимый глиф для пробела (или любой другой символ, который вам может понадобиться идентифицировать)

К сожалению, у меня нет хорошего примера такого шрифта, чтобы предоставить вам, но очень легко добавить маленькую точку к существующему шрифту, используя любое программное обеспечение редактора шрифтов. Только не забудьте переименовать шрифт (не файл шрифта, а имя шрифта внутри файла шрифта), чтобы легко отличить этот пользовательский шрифт от оригинального, если вы оба установили.

РЕДАКТИРОВАТЬ Я наконец нашел время, чтобы сделать такой шрифт! Вот DottedSpace Mono, основанный на Bitstream Vera Sans Mono, но со встроенными точечными пробелами:

http://github.com/tanusoft/DottedSpaceMono

CTRL+H заменяет все пробелы символом ~. Это поможет быстро для пробелов без программирования, и наоборот, просто замените ~ на " ".

Лучшая программа, которую я нашел для сравнения файлов такого типа, где текст не отображается, - это Ultra Edit. Пришлось использовать его для сравнения файлов EDI, файлов интерфейса, технических загрузок и т. Д. MS Office просто недостаточно приспособлен для этой задачи.

Изменение шрифта на тип "Терминал" поможет вам увидеть и изменить их.

1 Используйте поиск и введите пробел

2 Замените все и введите "[пробел]"

3 Необязательно: Если вы также хотите выделить всю ячейку красным, просто используйте селектор формата рядом с этим

Результат: эти надоедливые пространства проявят себя очень четко

Почему я должен был сделать это: я использовал функцию COUNTA, чтобы найти непустые ячейки в столбце. Однако он возвращал число больше, чем я ожидал. Я отлаживал каждую ячейку одну за другой, и, к моему изумлению, некоторые явно пустые ячейки показывали COUNTA=0, а другие - COUNTA=1, что не имеет смысла. Я не мог видеть разницу между ними. Оказывается, в этой функции остается только один пустой пробел, но он не виден НИГДЕ ни в ячейке, ни в поле ввода вверху.

Вывод: если вы полагаетесь на COUNTA для выполнения важных задач, вам лучше убедиться, что он не учитывает те неприятные места, о которых вы, возможно, не знаете.

Точно не отвечает на ваш вопрос, но я установил числовой формат так:

;;;'@'

для одинарных кавычек, или это

;;;\"@\"

для двойных кавычек. Это заключает в кавычки любой введенный текст. Я также установил шрифт в Courier New (или любой другой шрифт фиксированной ширины).

Обычно мне не нужен VBA, поэтому я предпочитаю работать с Excel на 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

Другие вопросы по тегам