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

CERCARE IN UNA COLONNA

96 views
Skip to first unread message

Daniela I.

unread,
Aug 21, 2007, 6:22:03 AM8/21/07
to
Salve a tutti. Dovrei cercare all'interno di una colonna che contiene celle
contenenti sia testo che numeri (es. CIAO 123 PROVA).
Avrei bisogno di una formula che individua le celle (anche cambiando colore
della cella, chiedo troppo?) contenenti numeri di 9 cifre (es. 132456789 o
000000123 ecc.).
E' possibile?
Premetto che uso davvero poco Excel
--
Daniela

eliano

unread,
Aug 21, 2007, 9:30:04 AM8/21/07
to

"Daniela I." ha scritto:

Ciao Dani.
Potresti provare con la formattazione condizionale applicata a tutto il
range da analizzare, con la formula: =LUNGHEZZA(A1*1)=9 assegnando un colore
che preferisci che viene visualizzato quando la cella contiene un numero con
9 cifre.
Per quanto riguarda Excel, vedi di usarlo un po' di più.:-))
Eliano

Daniela I.

unread,
Aug 21, 2007, 9:42:01 AM8/21/07
to
Ciao Eliano.
Ho provato la formula da te suggerita. Il problema è che le celle che si
trovano da A1:A500 contengono all'interno sia testo che numeri tutti diversi.
Come faccio a dirgli che deve considerare solo i NUMERI che hanno una
lunghezza 9?
Scusa se mi sono spiegata uno schifo... EXCEL non ho proprio voglia di
usarlo di più,io sono una webdesigner, sono OBBLIGATA!!!!
:_)
Grazie
--
Daniela


"eliano" ha scritto:

fernando cinquegrani

unread,
Aug 21, 2007, 10:12:17 AM8/21/07
to
"Daniela I." <Dani...@discussions.microsoft.com> ha scritto nel messaggio
news:32B553FE-9CB3-4E44...@microsoft.com...
> Ciao Eliano.
> Ho provato la formula da te suggerita. Il problema č che le celle che si

> trovano da A1:A500 contengono all'interno sia testo che numeri tutti
> diversi.
> Come faccio a dirgli che deve considerare solo i NUMERI che hanno una
> lunghezza 9?
> Scusa se mi sono spiegata uno schifo... EXCEL non ho proprio voglia di
> usarlo di piů,io sono una webdesigner, sono OBBLIGATA!!!!

leggi "help regex" di oggi.
Alt+F11 e da menu inserisci codice
in Modulo1 incolla

Public Function SuperCerca(strWhere As Variant, strWith As String) As
Boolean
Dim regexp As Object
Set regexp = CreateObject("VBScript.RegExp")
regexp.Global = True
regexp.IgnoreCase = True
regexp.Pattern = strWith
SuperCerca = regexp.Test(strWhere)
Set regexp = Nothing
End Function

quindi se i tuoi valori sono in colonna A
seleziona la colonna A
da menu:
formato :: formattazione condizionale
[la formula č]
=supercerca(A1;"[0-9]{9}")
[formato :: bordo] rosso
.f
http://www.prodomosua.eu


Daniela I.

unread,
Aug 21, 2007, 10:34:02 AM8/21/07
to
Grazie Fernando... ho fatto esattamente come hai detto tu... ma non accade
nulla!
Come è possibile?
Sono sicura di aver fatto tutto correttamente..
--
Daniela


"fernando cinquegrani" ha scritto:

> "Daniela I." <Dani...@discussions.microsoft.com> ha scritto nel messaggio
> news:32B553FE-9CB3-4E44...@microsoft.com...
> > Ciao Eliano.

> > Ho provato la formula da te suggerita. Il problema è che le celle che si


> > trovano da A1:A500 contengono all'interno sia testo che numeri tutti
> > diversi.
> > Come faccio a dirgli che deve considerare solo i NUMERI che hanno una
> > lunghezza 9?
> > Scusa se mi sono spiegata uno schifo... EXCEL non ho proprio voglia di

> > usarlo di più,io sono una webdesigner, sono OBBLIGATA!!!!


>
> leggi "help regex" di oggi.
> Alt+F11 e da menu inserisci codice
> in Modulo1 incolla
>
> Public Function SuperCerca(strWhere As Variant, strWith As String) As
> Boolean
> Dim regexp As Object
> Set regexp = CreateObject("VBScript.RegExp")
> regexp.Global = True
> regexp.IgnoreCase = True
> regexp.Pattern = strWith
> SuperCerca = regexp.Test(strWhere)
> Set regexp = Nothing
> End Function
>
> quindi se i tuoi valori sono in colonna A
> seleziona la colonna A
> da menu:
> formato :: formattazione condizionale

> [la formula è]

eliano

unread,
Aug 21, 2007, 10:46:02 AM8/21/07
to

"Daniela I." ha scritto:

> Ciao Eliano.
> Ho provato la formula da te suggerita. Il problema è che le celle che si
> trovano da A1:A500 contengono all'interno sia testo che numeri tutti diversi.
> Come faccio a dirgli che deve considerare solo i NUMERI che hanno una
> lunghezza 9?
> Scusa se mi sono spiegata uno schifo... EXCEL non ho proprio voglia di
> usarlo di più,io sono una webdesigner, sono OBBLIGATA!!!!

Ciao Dani.
Non credo che tu abbia provato la formula della formattazione condizionale
applicata a tutto il range A1:A500; sul mio excel 2000 colora le celle
contenenti numeri di 9 caratteri e lascia inalterate TUTTE le altre celle
anche se contengono stringhe alfanumeriche lunghe 9.
Per quanto riguarda l'uso di excel credo che come webdesigner ti possa
essere comunque utile, solo che devi fare un minimo di fatica per imparare ad
usarlo.
Per quanto riguarda la formattazione condizionale, prova a seguire queste
semplici istruzioni:

seleziona il range A1:A500
-->Formato-->Formattazione condizionale-->La formula è: =LUNGHEZZA(A1*1)=9
-->Formato-->Motivo (scegli il colore)

Scrivi numeri o stringhe di varia lunghezza nel range A1:A500 e dovresti
vedere l'evidenziazione di tutti i NUMERI lunghi 9 digit.
Vedo che anche fernando (ciao) ti ha dato una soluzione che leggerò più
tardi, per cui se non funziona la mia soluzione, la sua funzionerà
siocuramente.
Facci sapere
Eliano

Daniela I.

unread,
Aug 21, 2007, 10:48:00 AM8/21/07
to
Ti adoro... avevo lasciato uno spazio... era proprio quello che mi occorreva...
Grazie!
--
Daniela


"Daniela I." ha scritto:

eliano

unread,
Aug 21, 2007, 10:56:08 AM8/21/07
to

"eliano" ha scritto:

Rileggendo il post e più che altro illuminato dalla soluzione di fernando
(ariciao) ho capito che stavi cercando di individuare, all'interno di una
stringa di lunghezza enne un eventuale valore numerico lungo 9 digit, per
cui, scusa e come non detto).
Eliano

Daniela I.

unread,
Aug 22, 2007, 6:42:01 AM8/22/07
to
Ti ringrazio Eliano ma ho già risolto con la formula di Fernando.
Approfitto per chiedervi un ulteriore approfondimento.
Volendo estrarre dalla cella quel numero di 9 cifre riscrivendolo alla
colonna accanto... si può fare?
Grazie ancora
--
Daniela


"eliano" ha scritto:

>
>

fernando cinquegrani

unread,
Aug 22, 2007, 1:26:13 PM8/22/07
to
"Daniela I." <Dani...@discussions.microsoft.com> ha scritto nel messaggio
news:930C4568-8C79-4DD4...@microsoft.com...

> Ti ringrazio Eliano ma ho già risolto con la formula di Fernando.
> Approfitto per chiedervi un ulteriore approfondimento.
> Volendo estrarre dalla cella quel numero di 9 cifre riscrivendolo alla
> colonna accanto... si può fare?

leggi 'help regex' di ieri :-).
in Modulo1 avevamo

Public Function SuperCerca(strWhere As Variant, strWith As String) As
Boolean
Dim regexp As Object
Set regexp = CreateObject("VBScript.RegExp")
regexp.Global = True
regexp.IgnoreCase = True
regexp.Pattern = strWith
SuperCerca = regexp.Test(strWhere)
Set regexp = Nothing
End Function

aggiungiamo

Public Function SuperSostituisci(strWhere As Variant, strWhat As String,
strWith As String) As String


Dim regexp As Object
Set regexp = CreateObject("VBScript.RegExp")
regexp.Global = True
regexp.IgnoreCase = True

regexp.Pattern = strWhat
SuperSostituisci = regexp.Replace(strWhere, strWith)


Set regexp = Nothing
End Function

ora in B1 inseriamo
=SE(supercerca(A1;"[0-9]{9}");supersostituisci(A1;".*([0-9]{9}).*";"$1");"")

attenzione: se il numero è di 10 cifre avremo 2 gruppi da 9,
se il numero è di 11 cifre avremo 3 gruppi da 9, ...
la formula si limita ad individuarne uno solo.
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.eu

eliano

unread,
Aug 23, 2007, 9:46:38 AM8/23/07
to

"Daniela I." ha scritto:

> Ti ringrazio Eliano ma ho già risolto con la formula di Fernando.
> Approfitto per chiedervi un ulteriore approfondimento.
> Volendo estrarre dalla cella quel numero di 9 cifre riscrivendolo alla
> colonna accanto... si può fare?
> Grazie ancora
> --

Ciao Daniela.
Al ritorno dalle ferie sembra che si scatenino i "bassi istinti" del CDA,
dei Clienti e dei Fornitori, per cui solo stamani ho letto il tuo post.
Anche se dovresti aver risolto con le UDF di fernando (ciao), ti propongo
una mia artigianale che, oltre a colorare la cella contenente la stringa con
almeno un numero di 9 cifre, scrive sulle colonne adiacenti tutti i numeri di
9 cifre che si trovano nella stringa.
Prova in un Modulo, esempio Modulo1:
Sub provasplit()
Dim CL As Range
Dim RNG As Range
Dim B() As String
Dim I As Long
Dim L As Long
Dim test As String
Dim X As Long
Set RNG = Range("a1:a100") ' <----- da variare
L = 9 ' <----- da variare
Range("B1:Z100") = "" ' <----- da variare
For Each CL In RNG
CL.Interior.ColorIndex = xlNone
X = 0
B = Split(CL, " ")
For I = LBound(B) To UBound(B)
If B(I) = "" Then Exit Sub
test = B(I)
If IsNumeric(test) Then
If Len(test) = L Then
X = X + 1
Cells(CL.Row, CL.Column + X) = B(I)
CL.Interior.ColorIndex = 4
End If
End If
Next
Next
End Sub

La prova è stata fatta considerando un solo blank di separazione fra le
varie componenti della stringa, come avevi specificato nel tuo primo post;
inoltre la routine può essere modificata per utilizzarla, con un evento
Change, al momento dell'immissione o della variazione dei dati; vedi:
A B
C
ASDFKK 1234567890 QAZWSX
ASDFKK 123456789 QAZWSX 123456789
ASDFKK 1234567890 QAZWSX
ASDFKK 123456789 QAZWSX 987654321 123456789 987654321
ASDFKK 123456789 QAZWSX 123456789
Il colore non si vede, ma c'è ed è di un bel verde bottiglia, tipo acqua
minerale non gassata, così Mauro non avrà nulla da eccepire, spero.:-))
Eliano

eliano

unread,
Aug 23, 2007, 10:50:01 AM8/23/07
to

"eliano" ha scritto:

Ariciao Daniela.
E questa è la medesima routine che può essere utilizzata nell'immissione dei
dati; trattandosi di un evento Change, va inserita nel modulo del foglio che
ti interessa, ad esempio Foglio1:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim B() As String
Dim R As Long
Dim C As Long


Dim I As Long
Dim L As Long
Dim test As String
Dim X As Long

If Target.Column <> 1 Then Exit Sub


L = 9 ' <----- da variare

R = Target.Row
C = Target.Column
Range(Cells(R, C + 1), Cells(R, C + 20)) = ""
Target.Interior.ColorIndex = xlNone
X = 0
B = Split(Target, " ")


For I = LBound(B) To UBound(B)
If B(I) = "" Then Exit Sub
test = B(I)
If IsNumeric(test) Then
If Len(test) = L Then
X = X + 1

Cells(R, C + X) = B(I)
Target.Interior.ColorIndex = 4


End If
End If
Next

End Sub

0 new messages