2016-09-12 3 views
-1

Dans Google Sheets Je veux compter le nombre de cellules dans une plage (C4:U4) qui sont non vide et non vide. Le comptage non-vide est facile avec COUNTIF. Le problème délicat semble être que je veux traiter les cellules avec un ou plusieurs vides comme vides. (Mes utilisateurs continuent de laisser des blancs dans les cellules qui ne sont pas visibles et je les perds beaucoup de temps à les nettoyer.)COUNTIF de non vides et les cellules non vides

=COUNTIF(C4:U4,"<>") traite une cellule avec un ou plusieurs blancs comme non vides et la compte. J'ai aussi essayé =COUNTA(C4:U4) mais qui souffre du même problème de comptage des cellules avec un ou plusieurs espaces.

J'ai trouvé une solution dans stackoverflow signalée comme une solution par 95 personnes mais cela ne fonctionne pas pour les cellules avec des blancs.

Après la lecture que je suis venu avec une formule de fantaisie:

=COUNTIF(FILTER(C4:U4,TRIM(C4:U4)>="-"),"<>") 

L'idée est que le TRIM supprime les blancs de fuite avant FILTER teste la cellule pour être supérieure ou égale à un trait d'union (la ordre le plus bas des caractères imprimables que j'ai pu trouver). La fonction FILTER retourne ensuite un tableau à la fonction COUNTIF qui ne contient que des cellules non vides et non vides. COUNTIF puis les tests contre "<>"

Cela fonctionne (ou du moins "semble" fonctionner) mais je me demandais si j'ai manqué quelque chose de vraiment évident. Sûrement le problème des blancs cachés est très commun et a été autour depuis l'aube des feuilles d'Excel et de google. il doit y avoir un moyen plus simple.

(Ma première question si mes excuses pour toute violation des règles du forum.)

+0

Qu'est-ce qu'une cellule * « avec un ou plusieurs en blanc » *? – Jeeped

+0

Voulez-vous dire une cellule avec rien et une cellule avec un espace en elle? – Brian

+0

@Jeeped Vous demandez "Qu'est-ce qu'une cellule" avec un ou plusieurs espaces "". Une cellule peut être vide (pas de données du tout) ou contenir un blanc entré en appuyant une ou plusieurs fois sur la barre d'espace. –

Répondre

1

pourrait essayer cela, mais je ne suis pas du tout sûr qu'il

=SUMPRODUCT(--(trim((substitute(A2:A5,char(160),"")))<>"")) 
  • semble Google Sheets que vous faut-il mettre char (160) pour correspondre à un espace entré dans une cellule?

semble que ce soit en raison d'un espace insécable et pourrait éventuellement appliquer à Excel aussi - comme expliqué here - la suggestion est que vous pouvez passer aussi par la fonction CLEAN pour éliminer les caractères invisibles avec des codes dans la plage 0 -31.

+0

Solution sympa (et concise), Tom! Vous pouvez aussi l'utiliser pour plusieurs colonnes. – Brian

+0

Merci! Je pense que je comprends un peu mieux les espaces de rupture et de non-rupture :-) –

+0

@TomSharpe Merci. J'ai essayé votre formule et cela a fonctionné mais je dois avouer que je n'ai aucune idée pourquoi. Je ne suis pas familier avec SUMPRODUCT et je ne comprends pas les deux tirets. Pouvez-vous expliquer comment cela fonctionne? –

1

Je ne sais pas sur Google. Mais pour Excel, vous pouvez utiliser cette formule de tableau pour plusieurs colonnes contiguës:

=ROWS(A1:B10) * COLUMNS(A1:B10)-(COUNT(IF(ISERROR(CODE(A1:B10)),1,""))+COUNT(IF(CODE(A1:B10)=32,1,""))) 
+0

Cela fonctionne bien dans Google Sheets aussi bien si changer 32 à 160 ou éventuellement utiliser MOD (CODE (A1: B10), 128) = 32 pour couvrir les deux types d'espace –

+0

@Brian Merci, je l'ai essayé et ça ne marche pas pour moi, peut-être parce que je n'ai qu'une rangée dans ma gamme (C4: U4) et que mes cellules contiennent du texte, ce n'est certainement pas une formule plus simple que ce que j'utilise maintenant. –

1

J'ai trouvé une autre façon de le faire en utilisant:

=ARRAYFORMULA(SUM(IF(TRIM($C4:$U4)<>"",1,0))) 

Je suis toujours à la recherche d'une façon plus simple de le faire si un est disponible.