Как отображать или просматривать непечатанные символы в Excel?
Есть ли в MS Excel 2010 возможность отображать в ячейке непечатаемые символы (например, пробелы или символ разрыва строки, введенный нажатием Alt-Enter)?
Есть ли в MS Excel 2010 возможность отображать в ячейке непечатаемые символы (например, пробелы или символ разрыва строки, введенный нажатием Alt-Enter)?
Самый простой способ сделать это - просто изменить шрифт на шрифт, имеющий встроенный видимый глиф для пробела (или любого другого символа, который вам может понадобиться идентифицировать)
К сожалению, у меня нет хорошего примера такого шрифта, но очень легко добавить маленькую точку к существующему шрифту, используя любую программу для редактирования шрифтов. Только не забудьте переименовать шрифт (не файл шрифта, а имя шрифта внутри файла шрифта), так что легко отличить этот пользовательский шрифт от оригинального, если у вас установлены оба.
EDIT Наконец-то я нашел время сделать такой шрифт! А вот и DottedSpace Mono, основанный на Bitstream Vera Sans Mono, но со встроенными точками : http://github.com/tanusoft/DottedSpaceMono .
CTRL+H заменит все пробелы на ~ Это поможет быстро заполнить пробелы без программирования, а для обратной замены просто замените ~ на “ ”.
Лучшая программа, которую я нашел для сравнения этих типов файлов, где текст не отображается, это Ultra Edit. Пришлось использовать его для сравнения EDI файлов, файлов интерфейса, технических закачек и т.д. MS Office просто не очень хорошо оснащен для этой задачи.
Хотя вы не можете показывать специальные символы прямо в ячейке, вы можете использовать формулу в соседнем (вставленном) столбце, чтобы заменить Enters и Spaces на символы по вашему выбору!
, например,
=SUBSTITUTE(A1;" ";" ¶ ")
заменят любой разрыв строки на символ слова для разрыва строки. А вложенная формула
=SUBSTITUTE(SUBSTITUTE(A1;" ";" ¶ ");" ";"\_")
заменит и то, и другое, пробел и ввод. (Примечание: чтобы ввести “Enter” в формулу, нужно нажать Alt+Enter
во время редактирования формулы.
1 Используйте find и введите пробел
2 Сделайте Replace All и введите “[s-p-a-c-e]”
3 Дополнительно: Если вы также хотите выделить всю ячейку красным цветом, просто используйте селектор форматов рядом с этим
Результат: Эти надоедливые пробелы очень четко покажут себя
Зачем мне это понадобилось: Я использовал функцию COUNTA, чтобы найти незаполненные ячейки в столбце. Однако она возвращала число больше, чем я ожидал. Я отлаживал каждую ячейку по одной, и к моему удивлению, некоторые, по-видимому, пустые ячейки показали COUNTA=0, а другие - COUNTA=1, что не имеет никакого смысла. Я не мог видеть разницу между ними. Получается, что в этой функции считается одна пустая ячейка, но она НИКОГДА не видна ни в ячейке, ни в поле ввода в верхней части.
Заключение: Если вы полагаетесь на COUNTA для важных задач, то вам лучше быть уверенным, что она не учитывает те проблемные места, которые вы, возможно, не знаете.
Обычно мне не нужна VBA, поэтому я предпочитаю делать отличные вещи в питоне + 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
Точно не отвечает на ваш вопрос, но я задал формат числа:
;;;'@'
для одинарных кавычек, или это
;;;\"@\"
для двойных кавычек. Это обёртывание кавычек вокруг любого введённого текста. Я также установил шрифт в Courier New (или любой другой шрифт с фиксированной шириной).