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
=CONTA.SE($A$1:$A$10;"*[*")
================================================
Ciao Inquisitore, prova così:
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/
Ehmmm... solo la parentesi, non l'asterisco, scusa.
Grande Bene63!
Ma questa degli asterischi da dove salta fuori..... ?!?
Grazie ancora
ciao
> 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
=======================================================================
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.
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
===================================================
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à.
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)
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
---------------------------
=========================================================
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.
******************************
Io non vedo la richiesta di contare le parentesi chiuse....
---------------------------
Mauro Gamberini
===============================================
Scusa, io facevo riferimento alle due formule conta.se:
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.
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
=SOMMA(LUNGHEZZA(A1:A10)-LUNGHEZZA(SOSTITUISCI(A1:A10;"[";"")))
da confermare con ctrl+maiusc+invio
saluti
r
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
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
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
======================================================
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.
https://sites.google.com/site/e90e50/documento-plinius
---------------------------
Mauro Gamberini
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
=================================================================
... 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!
===========================================================================
... 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!
=========================================================================
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
> 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
=========================================================
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
==========================================================
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.
===================
Sopra volevo scrivere "Più recente" e invece ho scritto "Argomento più
recente".
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
> 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
[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
eh eh ... non ti conoscessi :-)
> Saluti a tutti con cortina fumogena,
la tribu ricambia ... puf puf puf
> Eliano
r
==============================================================================
Ciao r, tutto ok, va bene così, mi hai ulteriormente ragguagliato.
Grazie!
Alla prossima, se ti farà piacere (spero di sì) !
Benedetto