Comment afficher ou afficher des caractères non imprimables dans Excel?

12

Existe-t-il une option dans MS Excel 2010 qui affichera les caractères non imprimables dans une cellule (par exemple les espaces ou le caractère de saut de ligne introduit en appuyant sur Alt-Entrée)?

Freda K
la source
2
vous pouvez mettre =IF(CLEAN(A1)=A1,"NA","Needs Cleaning")dans la cellule à côté de la cellule à côté, ou vous pouvez utiliser le formatage conditionnel en utilisant le char () (ou chr en VBA) notation pour rechercher des rendements poêlier (char (13)) ou tout autre caractère, ici est un lien vers les numéros de caractères
Quelle est votre raison d'avoir besoin de les voir? À moins que vous ne souhaitiez les voir, il existe des moyens pour vous aider à atteindre un autre objectif (par exemple, supprimer tous les sauts de ligne d'une colonne de cellules)
PatKilg
L'objectif de l'affichage des caractères non imprimables est simplement de relire le contenu des cellules. Étant donné que le contenu est technique et que les retours chariot sont courants (et attendus), c'est quelque chose qui doit être fait à la main.
Freda K
@scott Merci beaucoup pour la note sur l'utilisation de CLEAN (). Cette fonction sera très utile, même si cela ne va malheureusement pas aider pour ce besoin spécifique.
Freda K
Il semble que vous n'utilisiez pas le bon programme pour votre tâche, mais je comprends que cela peut parfois être inévitable. Pourquoi ne pouvez-vous pas utiliser un tableau dans Microsoft Word? Cela dit, j'ai mis une réponse à cette question spécifique ci-dessous.
PatKilg

Réponses:

3

Bien que vous ne puissiez pas afficher les caractères spéciaux directement dans la cellule, vous pouvez utiliser une formule dans la colonne adjacente (insérée) pour remplacer les entrées et les espaces par des caractères de votre choix!

Par exemple

= SUBSTITUT (A1; "
";"
¶
")
remplacerait tout saut de ligne par le symbole de mot pour le saut de ligne. Et la formule imbriquée
= SUBSTITUT (SUBSTITUT (A1; "
";"
¶
");" ";" _ ")
remplacera les deux, espace et entrez. (Remarque: pour saisir un "Entrée" dans la formule, vous devez appuyer sur Alt+Enterpendant la modification de la formule.

Peter Albert
la source
J'adore le travail, pourquoi n'y ai-je pas pensé!
PatKilg
10

La façon la plus simple de le faire est de simplement changer la police en une police qui a un glyphe visible intégré pour l'espace (ou tout autre caractère que vous pourriez avoir besoin d'identifier)

Malheureusement, je n'ai pas de bon exemple d'une telle police à vous fournir, mais il est très facile d'ajouter un petit point à une police existante, en utilisant n'importe quel logiciel d'édition de police. N'oubliez pas de renommer la police (pas le fichier de police, mais le nom de la police dans le fichier de police), afin qu'il soit facile de distinguer cette police personnalisée de la police d'origine si vous les avez toutes les deux installées.

EDIT J'ai enfin trouvé le temps de faire une telle police! Voici DottedSpace Mono, basé sur Bitstream Vera Sans Mono, mais avec des espaces en pointillés intégrés:

http://github.com/tanusoft/DottedSpaceMono

Christophe Franco
la source
1
Je ne vois pas de sauts de ligne, par exemple.
zylstra
4

CTRL + H remplacer tous les espaces par un ~ Cela aidera rapidement pour les espaces sans programmation, et pour inverser il suffit de remplacer ~ par "".

Le meilleur programme que j'ai trouvé pour comparer ces types de fichiers où le texte ne s'affiche pas est Ultra Edit. J'ai dû l'utiliser pour comparer des fichiers EDI, des fichiers d'interface, des téléchargements techniques, etc. MS Office n'est tout simplement pas bien équipé pour la tâche.

Cam Fairweather
la source
Cette méthode remplacera les espaces, mais pas tous les caractères non imprimables, par exemple CHAR (10) (un retour chariot dans une cellule, également obtenu en utilisant Alt-Enter)
Freda K
1

Changer la police en type "Terminal" vous aiderait à les voir et à les modifier.

Citrouille
la source
0

Ne répond pas exactement à votre question, mais j'ai défini le format numérique comme suit:

;;;'@'

pour des guillemets simples, ou ce

;;;\"@\"

pour les guillemets doubles. Cela enveloppe les guillemets autour de tout texte saisi. J'ai également défini la police sur Courier New (ou toute autre police à largeur fixe).

Crayeux
la source
0

1 Utilisez find and enter space

2 Remplacez tout et tapez "[espace]"

3 Facultatif: si vous souhaitez également mettre en surbrillance la cellule entière en rouge, utilisez simplement le sélecteur de format à côté de celui-ci.

Résultat: ces espaces embêtants se révéleront très clairement

Pourquoi devais-je faire cela: j'ai utilisé la fonction COUNTA pour trouver des cellules non vides dans une colonne. Cependant, il retournait un nombre supérieur à ce que j'attendais. J'ai débogué chaque cellule une par une, et à mon grand étonnement, certaines cellules apparemment vides ont montré COUNTA = 0 et d'autres ont montré COUNTA = 1, ce qui n'a aucun sens. Je ne pouvais PAS voir la différence entre les deux. Il s'avère qu'un seul nombre de blancs restants dans cette fonction, mais il n'est visible nulle part dans la cellule ou la zone de saisie en haut.

Conclusion: Si vous comptez sur COUNTA pour des tâches importantes, vous feriez mieux de vous assurer qu'il ne compte pas les espaces gênants que vous ne connaissez peut-être pas.

Jean Goulet
la source
0

Je n'ai généralement pas besoin de VBA, donc je préfère faire des trucs excel en 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
la source
Généralement, les réponses sont beaucoup plus utiles si elles incluent une explication de ce que le code est censé faire et pourquoi cela résout le problème sans en introduire d'autres.
MMM
A fait quelques modifications, merci
Gleb S