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

12

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

Фрида К
источник
2
Вы можете поместить =IF(CLEAN(A1)=A1,"NA","Needs Cleaning")в клетке рядом с клеткой рядом с ней, или вы можете использовать условное форматирование с использованием полукокса () (или Chr в VBA) обозначений для поиска провозных возвращается (полукокс (13)) или любого другого символа, здесь есть ссылка на номера символов
Какова ваша причина необходимости видеть их? Если вы просто не хотите их видеть, есть способы, которыми мы могли бы помочь вам достичь другой цели (например, удалить все разрывы строк из столбца ячеек)
PatKilg
Цель отображения непечатаемых символов - просто проверить содержимое ячеек. Поскольку содержание является техническим, и возврат каретки является обычным (и ожидаемым) внутри него, это то, что должно быть сделано вручную.
Фрида К
@scott Большое спасибо за примечание об использовании CLEAN (). Эта функция будет очень полезна, хотя, к сожалению, она не поможет в этом конкретном случае.
Фрида К
Похоже, вы используете не ту программу для своей задачи, но я понимаю, что иногда это может быть неизбежно. Почему вы не можете использовать таблицу в Microsoft Word? Тем не менее, я поставил ответ на этот конкретный вопрос ниже.
PatKilg

Ответы:

3

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

Например

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

Питер Альберт
источник
Люблю работу вокруг, почему я не думал об этом!
PatKilg
10

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

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

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

http://github.com/tanusoft/DottedSpaceMono

Кристоф Франко
источник
1
Я не вижу перевода строки, например.
Zylstra
4

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

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

Cam Fairweather
источник
Этот метод заменит пробелы, но не все непечатаемые символы, например, CHAR (10) (возврат каретки в ячейке, также достигается с помощью Alt-Enter)
Фрида К
1

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

тыква
источник
0

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

;;;'@'

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

;;;\"@\"

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

меловой
источник
0

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

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

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

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

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

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

Жан Гуле
источник
0

Я обычно не нуждаюсь в 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

Глеб С
источник
Как правило, ответы гораздо полезнее, если они включают в себя объяснение того, для чего предназначен код, и почему это решает проблему, не представляя других.
МММ
Сделал некоторые правки, спасибо
Глеб С