Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

conta numero celle che contengono un simbolo

1,073 views
Skip to first unread message

inquisitore

unread,
Dec 13, 2010, 9:28:01 AM12/13/10
to
Salve,
senza usare VBA, vorrei capire se esiste una formula per contare il
numero di celle che contengono il simbolo "[".

Con la funzione ricerca riesco a farlo, ma dovrei usare una cella per
ognuna che vorrei controllare.

Es.

A1 = [xx]
A2 = dd
A3 = [dddd
A4 = 444
A5 = dddd[

Il risultato deve essere 3, ossia il numero di celle che contengono il
simbolo "["

Grazie ciao

bene63

unread,
Dec 13, 2010, 10:03:11 AM12/13/10
to
=========================================================================
Ciao Inquisitore, prova cosi:

=CONTA.SE($A$1:$A$10;"*[*")

bene63

unread,
Dec 13, 2010, 10:05:55 AM12/13/10
to
On 13 Dic, 15:28, inquisitore <inqu...@gmail.com> wrote:

================================================
Ciao Inquisitore, prova così:

ale

unread,
Dec 13, 2010, 10:10:37 AM12/13/10
to
> =CONTA.SE($A$1:$A$10;"*[*")- Nascondi testo citato
>
> - Mostra testo citato -

ciao bene63, perchè hai inserito anche gli asterischi(*)? o meglio,
perchè senza non funziona?
ciao
ale

Mauro Gamberini

unread,
Dec 13, 2010, 10:19:15 AM12/13/10
to

ciao bene63, perchè hai inserito anche gli asterischi(*)? o meglio,
perchè senza non funziona?
ciao
ale
****************

Funziona *anche senza*, se nella cella c'è *solo* l'asterisco.
Quindi.....

---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Mauro Gamberini

unread,
Dec 13, 2010, 10:20:24 AM12/13/10
to
"Mauro Gamberini" ha scritto nel messaggio
news:ie5dhm$kjk$1...@news.eternal-september.org...

Ehmmm... solo la parentesi, non l'asterisco, scusa.

inquisitore

unread,
Dec 13, 2010, 10:37:26 AM12/13/10
to
> =CONTA.SE($A$1:$A$10;"*[*")- Nascondi testo citato
>
> - Mostra testo citato -

Grande Bene63!
Ma questa degli asterischi da dove salta fuori..... ?!?
Grazie ancora
ciao

inquisitore

unread,
Dec 13, 2010, 10:49:54 AM12/13/10
to
On 13 Dic, 16:03, bene63 <manuela.piccin...@alice.it> wrote:

> Ciao Inquisitore, prova cosi:
>


> =CONTA.SE($A$1:$A$10;"*[*")- Nascondi testo citato
>
> - Mostra testo citato -

Scusa se approfitto... e se volessi contare tutte le '[' presenti
nelle celle (es. una cella ne contiene due tipo " [MA] -- [CA] ") ?

Quindi, se:

A1= [C]
A2=[MA] -- [CA]

**** Risultato = 3 (ossia nelle 2 cella figurano numero 3 parentesi
quadre aperte)

Grazie ancora

bene63

unread,
Dec 13, 2010, 10:50:36 AM12/13/10
to
> ciao- Nascondi testo citato

>
> - Mostra testo citato -

=======================================================================
Ciao, perché se il simbolo si trovasse da solo ([) nelle celle, allora
la formula =Conta.se(A1:A10; "[") andrebbe bene, ma nel nostro caso
è in compagnia di xx, dd dddd, 444 e
dddd ( [xx] dd [dddd 444 dddd[ ),
quindi nella formula mettendo gli asterischi tra il simbolo (*[*), a
prescindere da dove si trova posizionato, cioè all'inzio o alla fine o
in mezzo alla parola, verrà conteggiato. Spero di essermi spiegato.

ale

unread,
Dec 13, 2010, 11:06:20 AM12/13/10
to
> in mezzo alla parola,  verrà conteggiato. Spero di essermi spiegato.- Nascondi testo citato

>
> - Mostra testo citato -

spiegato, e molto bene.
solo che partivo dal presupposto che, avendo inserito la cosa da
cercare tra le virgolette, xls prendesse in considerazione tutto il
contenuto (all'interno delle virgolette).
ciao e ancora grazie per la spiegazione.
ciao
ale

bene63

unread,
Dec 13, 2010, 11:10:28 AM12/13/10
to
> in mezzo alla parola,  verrà conteggiato. Spero di essermi spiegato.- Nascondi testo citato

>
> - Mostra testo citato -

===================================================
Così conta anche le parentesi chiuse:

=CONTA.SE($A$1:$A$10;"*[*")+CONTA.SE($A$1:$A$10;"*]*")

Probabilmente basterà un'unica formula per conteggiare sia la
parentesi quadra aperta sia quella chiusa, ma a me non viene.
Sicuramente qualcuno del Gruppo riuscirà.

Mauro Gamberini

unread,
Dec 13, 2010, 11:36:04 AM12/13/10
to

Scusa se approfitto... e se volessi contare tutte le '[' presenti
nelle celle (es. una cella ne contiene due tipo " [MA] -- [CA] ") ?

Quindi, se:

A1= [C]
A2=[MA] -- [CA]

**** Risultato = 3 (ossia nelle 2 cella figurano numero 3 parentesi
quadre aperte)

***********************

Senza vb non lo so.
Questa semplice funzione, da copia/incollare
in un modulo standard, sembra fare ciň che chiedi:

Public Function f(ByRef rng As Range) As Long

Dim c As Range
Dim s As Variant
Dim lCont As Long

Application.Volatile = True

For Each c In rng
lCont = lCont + UBound(Split(c.Value, "["))
Next
f = lCont

End Function

Da richiamare poi cosě da una cella:
=f(A1:A10)

Mauro Gamberini

unread,
Dec 13, 2010, 11:41:23 AM12/13/10
to
<cut>

Ma no!
Questa:

Public Function f(ByRef rng As Range) As Long

Dim c As Range
Dim s As Variant
Dim lCont As Long

Application.Volatile

For Each c In rng

If UBound(Split(c.Value, "[")) > 0 Then


lCont = lCont + UBound(Split(c.Value, "["))

End If
Next
If lCont < 0 Then lCont = 0


f = lCont

End Function

---------------------------

bene63

unread,
Dec 13, 2010, 12:41:20 PM12/13/10
to
On 13 Dic, 17:41, "Mauro Gamberini"

=========================================================

Ciao, adesso il codice di Mauro (che saluto) conta sia le parentesi
quadre aperte sia quelle chiuse.

Public Function f(ByRef rng As Range) As Long
Dim c As Range
Dim s As Variant
Dim lCont As Long
Application.Volatile
For Each c In rng
If UBound(Split(c.Value, "[")) > 0 Then
lCont = lCont + UBound(Split(c.Value, "["))
End If

If UBound(Split(c.Value, "]")) > 0 Then ' <========
Aggiungendo questo conta anche le parentesi quadre chiuse,
lCont = lCont + UBound(Split(c.Value, "]")) ' altrimenti conta solo
quelle aperte.

Mauro Gamberini

unread,
Dec 13, 2010, 12:43:37 PM12/13/10
to
<cut>

******************************
Io non vedo la richiesta di contare le parentesi chiuse....

---------------------------
Mauro Gamberini

bene63

unread,
Dec 13, 2010, 12:51:52 PM12/13/10
to
On 13 Dic, 18:43, "Mauro Gamberini"

===============================================
Scusa, io facevo riferimento alle due formule conta.se:

=CONTA.SE($A$1:$A$10;"*[*")+CONTA.SE($A$1:$A$10;"*]*")


Probabilmente basterà un'unica formula per conteggiare sia la
parentesi quadra aperta sia quella chiusa, ma a me non viene.
Sicuramente qualcuno del Gruppo riuscirà.

Intendevo unico "conta.se" in grado appunto di contare sia quelle
aperte sia quelle chiuse.


r

unread,
Dec 13, 2010, 5:56:30 PM12/13/10
to

ciao bene63

non mi è chiaro l'obiettivo ...
contare quante celle contengono [ o ]
contare le celle che contengono [ e ]
dalla tua formula non si ottiene con sicurezza ne uno ne l'altro
risultato ...
si insomma non si ha una informazione utile.
fai sapere

p.s.
visto che si è anche tirato in ballo il vba (ciao Mauro :-) ... e per
il solito doc plinius ... perchè non cercare una funzione che
verifica se vi sono parentesi che sono state lasciate aperte? :-)
so che sono fuori tema ma almeno questa sarebbe un'informazione con
una certa utilità ... diciamo una function che restituisce vero falso
e che verifica se le parentesi scritte in una formula sono tutte
aperte e chiuse ...

(questa) è ok
((questa) no
)questa( no
[[questa]]] no

va beh ... non è poi così difficile :-)
magari nemmeno senza vba ... boh
saluti a tutti
r

r

unread,
Dec 13, 2010, 6:06:01 PM12/13/10
to

=SOMMA(LUNGHEZZA(A1:A10)-LUNGHEZZA(SOSTITUISCI(A1:A10;"[";"")))
da confermare con ctrl+maiusc+invio
saluti
r

r

unread,
Dec 13, 2010, 6:17:30 PM12/13/10
to
On 13 Dic, 23:56, r <robb....@gmail.com> wrote:
>
> non mi è chiaro l'obiettivo ...
> contare quante celle contengono [ o ]
> contare le celle che contengono [ e ]

nel secondo caso ... per contare le celle dove è presente una quadra
aperta e una chiusa consecutive cioè tipo [prova] ... basta qualcosa
tipo:
=CONTA.SE(A1:A10;"*[*]*")
saluti
r

bene63

unread,
Dec 14, 2010, 3:29:43 AM12/14/10
to

======================================================================
Ciao r, il conta.se così non funge proprio:

=CONTA.SE(A1:A10;"*[*]*")

avevo già provato.

Per poter contare tutt'e due le parentesi (aperta e chiusa) per quanto
ne so io (ne so poco) ci vogliono due formule tipo:

inquisitore

unread,
Dec 14, 2010, 4:14:16 AM12/14/10
to
GRAZIE A TUTTI RAGAZZI!!

Funziona sia la funzione VBA che la formula strepitosa di 'r' che ho
capito.. ma che non sarei mai riuscito a partorire :)

=SOMMA(LUNGHEZZA(A1:A10)-LUNGHEZZA(SOSTITUISCI(A1:A10;"[";"")))

A buon rendere

Mauro Gamberini

unread,
Dec 14, 2010, 5:10:55 AM12/14/10
to

p.s.
visto che si è anche tirato in ballo il vba (ciao Mauro :-) ... e per
il solito doc plinius ... perchè non cercare una funzione che
verifica se vi sono parentesi che sono state lasciate aperte? :-)
**************************************************
;-)
---------------------------
Mauro Gamberini

r

unread,
Dec 14, 2010, 5:53:08 AM12/14/10
to

ciao bene63
certo che funziona con la clausola (come detto) dell'ordine,
prima quella aperta poi quella chiusa.
l'asterisco significa 0 o più caratteri quindi *[*]* significa
0 o + caratteri ...
seguiti da una [ ...
0 o + caratteri ...
seguiti da una ] ...
0 o + caratteri

ovviamente quindi conta solo le celle dove è
presente parentesi aperta e chiusa.
ho già esposto i miei dubbi sulla tua formula ...
che nel caso una cella contenga ad esempio:
[ asd ]
conteggia 2 ... non trovo proprio quale sia la sua possibile
utilità ...
applicata su un range multicella.
Illuminami
ciao
r

bene63

unread,
Dec 14, 2010, 6:31:38 AM12/14/10
to
> r- Nascondi testo citato

>
> - Mostra testo citato -

======================================================
Ciao r, hai ragione la formula: =CONTA.SE(A1:A10;"*[*]*") funziona
alla grande.
Chissà perché, ieri, l'ho provata e non fuzionava ovvero non
conteggiava, dava come risultato sempre "0" (sicuramente ho toppato io
in qualcosa). Per quanto riguarda la sua utilità, boh, non saprei.

Mauro Gamberini

unread,
Dec 14, 2010, 6:36:42 AM12/14/10
to
Per quanto riguarda la sua utilità, boh, non saprei.
***********************************

https://sites.google.com/site/e90e50/documento-plinius


---------------------------
Mauro Gamberini

r

unread,
Dec 14, 2010, 6:49:39 AM12/14/10
to
> in qualcosa). Per quanto riguarda la sua utilità, boh, non saprei.- Nascondi testo citato

>
> - Mostra testo citato -

questa un'utilità l'ha ... conta le celle dove sono
presenti almeno una copia di parentesi aperte e chiuse

io parlavo del tuo doppio conta.se ... in quel caso i risultati
vengono
mischiati e il risultato è difficilmente interpretabile ... per ogni
cella
infatti puoi avere come risultato 0,1,2
saluti
r


bene63

unread,
Dec 14, 2010, 7:39:08 AM12/14/10
to
On 14 Dic, 12:36, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Per quanto riguarda la sua utilit , boh, non saprei.

> ***********************************
>
> https://sites.google.com/site/e90e50/documento-plinius
>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

=================================================================
... OK, il punto, - per mia semplice curiosità, a prescindere
dall'utilità -, è questo: "Se, ad esempio: nella A1 scrivo [ e nella
cella A2 scrivo ] come si potrebbe costruire, sempre che vi sia la
possibilità, - un'unica - formula che conteggi sia le parentesi
quadre aperta sia quelle chiuse"? Grazie per la pazienza!

bene63

unread,
Dec 14, 2010, 7:46:53 AM12/14/10
to
On 14 Dic, 12:36, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Per quanto riguarda la sua utilit , boh, non saprei.

> ***********************************
>
> https://sites.google.com/site/e90e50/documento-plinius
>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

===========================================================================


... OK, il punto, - per mia semplice curiosità, a prescindere

dall'utilità -, era questo: "Se ad esempio nella A1 scrivo [ e nella
cella A2 scrivo ], come si potrebbe costruire, sempre che vi sia la
possibilità, - un'unica - formula che conteggi sia le parentesi
quadre aperte sia quelle chiuse"? Grazie per la pazienza!

bene63

unread,
Dec 14, 2010, 8:12:27 AM12/14/10
to
On 14 Dic, 12:36, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Per quanto riguarda la sua utilit , boh, non saprei.

> ***********************************
>
> https://sites.google.com/site/e90e50/documento-plinius
>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

=========================================================================

r

unread,
Dec 14, 2010, 8:58:12 AM12/14/10
to

con 3 post identici dimostri d'aver letto a meraviglia il doc
plinius :-)
vediamo se ho capito ... contiamo quante celle in un intervallo
contengono
almeno una parentesi quadra aperta o una parentesi quadra chiusa ...
quindi il primo dei due casi di cui ho chiesto la scelta nel mio primo
post.

la tua non va bene ... ne sei cnvinta vero?

quindi un'alternativa ...
ci penso :-) ... cioè ne avrei in mente una ma fa schifo ... vediamo
se
a pensarci salta fuori qualcosa di meglio ...

intanto visto che ho buttato li una domanda ... inizio a dare una
risposta

questa function analizza una stringa verificando la correttezza delle
parentesi
è possibile passare il tipo di parentesi come secondo argomento
accetta (, [, {, e <

l'ultimo argomento dice che tipo di verifica deve essere fatta ...
passando true verrà fatta una verifica anche logica ovvero non saranno
valide stringhe tipo:
()
((prova))
passando false oppure omettendolo quelle stringhe sono
viceversa accettate.

ecco la function ... probabilmente migliorabile:

Function Verifica_parentesi( _
ByVal sTesto As String, _
Optional TipoParentesi As String = "(", _
Optional bVerificaLogica As Boolean)

Dim ParentesiChiusa As String
Dim s As String
Dim re As Object

Select Case TipoParentesi
Case "("
ParentesiChiusa = ")"
Case "{"
ParentesiChiusa = "}"
Case "["
ParentesiChiusa = "]"
Case "<"
ParentesiChiusa = ">"
Case Else
Exit Function
End Select

Set re = CreateObject("vbscript.regexp")

re.Pattern = "\" & TipoParentesi & _
"[^\" & TipoParentesi & "\" & ParentesiChiusa & _
"]" & IIf(bVerificaLogica, "+", "*") & _
"\" & ParentesiChiusa

Do While re.test(sTesto)
sTesto = re.Replace(sTesto, "")
Loop

re.Pattern = "\" & TipoParentesi & "|\" & ParentesiChiusa
Verifica_parentesi = re.test(sTesto) Xor True
End Function


ci penso e arrivo
saluti
r

r

unread,
Dec 14, 2010, 9:22:56 AM12/14/10
to
On 14 Dic, 14:58, r <robb....@gmail.com> wrote:

> ci penso :-) ... cioè ne avrei in mente una ma fa schifo ... vediamo
> se
> a pensarci salta fuori qualcosa di meglio ...


mah ... probabilmente si può fare meglio ...
per ora non mi viene in mente nulla di meglio:
=SOMMA(--(A1:A10<>SOSTITUISCI(SOSTITUISCI(A1:A10;"]";"");"[";"")))
=SOMMA(--NON(VAL.ERRORE(TROVA("[";SOSTITUISCI(A1:A10;"]";"[")))))

entrambe vanno confermate con ctrl+maiusc+invio

saluti
r

bene63

unread,
Dec 14, 2010, 12:59:36 PM12/14/10
to

=========================================================


con 3 post identici dimostri d'aver letto a meraviglia il doc
plinius :-)

Ciao r, i tre post identici sono stati pubblicati erroneamente, ti
spiego: quando ho scritto il primo e poi ho premuto invio, è apparsa
giustamente la scritta "post riuscito". Chiudo la pagina, la riapro e
non ho visto il post; quindi ho pensato a un errore del sito e l'ho
ripostato, accorgendomi dopo la terza postazione che dovevo cliccare
in basso a destra sulla scritta "Argomento più recente" per poter
vedere quanto avevo postato, notando, ahimè, tre post identici. Che
devo fare, sicuramente mi sto rinc... . Spero di aver dato spiegazioni
in merito. Per quanto riguarda l'ultima tua formula, non l'ho ancora
provata perché sono appena arrivato. Ciao

bene63

unread,
Dec 14, 2010, 1:25:00 PM12/14/10
to

==========================================================
Riciao r, le tue quattro formule a me funzionano più che bene. Mentre
la funzione mi dà errore (#VALORE!) scrivendo così la formula:
=Verifica_parentesi(A1:A10), sempre che l'abbia scritta giusta.

bene63

unread,
Dec 14, 2010, 1:28:51 PM12/14/10
to
> =Verifica_parentesi(A1:A10), sempre che l'abbia scritta giusta.- Nascondi testo citato

>
> - Mostra testo citato -

===================
Sopra volevo scrivere "Più recente" e invece ho scritto "Argomento più
recente".

r

unread,
Dec 14, 2010, 5:04:50 PM12/14/10
to
> =Verifica_parentesi(A1:A10), sempre che l'abbia scritta giusta.- Nascondi testo citato

>
> - Mostra testo citato -

non è una udf, anche se volendo si può usare come tale.
La mia intenzione era ... solo affrontare il problema ... se vuoi
usarla come tale senza migliorarla devi passare una singola cella come
primo argomento.
Per un uso diverso (matriciale) bisogna metterci mano ... se ti
interessa possiamo provarci.
In ogni caso è una funzione che restituisce vero falso quindi non
capisco cosa ti aspettavi richiamandola così
=Verifica_parentesi(A1:A10) ???
Mi sarebbe piaciuto vedere una soluzione senza regexp ... ma Mauro non
ha accettato l'invito :-)

Per i tre post ... non ti preoccupare io scherzavo ... e siamo
abituati già all'alzheimer di eliano (ciao mitico :-)...
meglio uno in più che nessun post :-)

saluti
r


r

unread,
Dec 14, 2010, 5:06:48 PM12/14/10
to
On 14 Dic, 19:25, bene63 <manuela.piccin...@alice.it> wrote:

> Riciao r, le tue quattro formule a me funzionano più che bene.

p.s.
questa


=SOMMA(--(A1:A10<>SOSTITUISCI(SOSTITUISCI(A1:A10;"]";"");"[";"")))

è valida solo se non ci sono valori numerici nel range ... in presenza
ad esempio di 123 nella cella A1 non funzionerà come atteso.
saluti
r

eliano

unread,
Dec 14, 2010, 5:17:37 PM12/14/10
to
On 14 Dic, 23:04, r <robb....@gmail.com> wrote:

[Cut]

> Per i tre post ... non ti preoccupare io scherzavo ... e siamo
> abituati già all'alzheimer di eliano (ciao mitico :-)...
> meglio uno in più che nessun post :-)

Lo faccio solo per giustificare la presenza della badante, altrimenti
mia moglie s'incavola.:-))
Saluti a tutti con cortina fumogena,
Eliano

r

unread,
Dec 14, 2010, 6:16:42 PM12/14/10
to
On 14 Dic, 23:17, eliano <falinieli...@virgilio.it> wrote:
> On 14 Dic, 23:04, r <robb....@gmail.com> wrote:
>
> [Cut]
>
> > Per i tre post ... non ti preoccupare io scherzavo ... e siamo
> > abituati già all'alzheimer di eliano (ciao mitico :-)...
> > meglio uno in più che nessun post :-)
>
> Lo faccio solo per giustificare la presenza della badante, altrimenti
> mia moglie s'incavola.:-))

eh eh ... non ti conoscessi :-)

> Saluti a tutti con cortina fumogena,

la tribu ricambia ... puf puf puf

> Eliano

r

bene63

unread,
Dec 15, 2010, 9:03:16 AM12/15/10
to

==============================================================================
Ciao r, tutto ok, va bene così, mi hai ulteriormente ragguagliato.
Grazie!
Alla prossima, se ti farà piacere (spero di sì) !
Benedetto

0 new messages