Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Estrarre numeri

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Estrarre numeri

Postdi Statix » 29/05/11 15:06

Ciao a tutti,ho l'ennesimo problemino,
dovrei estrarre i numeri da 9 celle di testo, P15:P23 allego foto
i numeri estratti devono essere messi in una riga ma celle separate escludendo i numeri doppioni.
in R14:AL14 ( la lunghezza dipende dalla quantità di numeri presenti nelle celle P15:P23)

Immagine
il valore 86 e in AB14
Immagine
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: Estrarre numeri

Postdi Statix » 29/05/11 16:11

per darvi un aiuto metto la lunghezza delle celle ,perchè cambiano quindi non sono fisse
Codice: Seleziona tutto
P15 = 23
P16 = 26
P17 = 26
P18 = 26
P19 = 26
P20 = 26
P21 = 25
P22 = 26
P23 = 26
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 16:41

L'avevo immaginato pertanto la calcolo di volta in volta
prova questa macro
Codice: Seleziona tutto
Sub TrovN()
UC = Range("IV14").End(xlToLeft).Column
If UC < 18 Then UC = 18
Range(Cells(14, 18), Cells(14, UC)).ClearContents
Dim VettN(90) As Integer
ContaN = 0
For RR = 15 To 22
    StrN = Range("P" & RR).Value
    LStrN = Len(StrN)
    For LS = 1 To LStrN
        If Mid(StrN, LS, 1) <> " " And Mid(StrN, LS, 1) <> "-" Then
            VN = Val(Mid(StrN, LS, 1) & Mid(StrN, LS + 1, 1))
            VettN(VN) = VN
            LS = LS + 1
            ContaN = ContaN + 1
        End If
    Next LS
Next RR
For N = 1 To 90
    If VettN(N) <> 0 Then
        UC = Range("IV14").End(xlToLeft).Column + 1
        If UC < 18 Then UC = 18
        Cells(14, UC).Value = VettN(N)
    End If
Next N
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 17:03

CiaoAvatar3,
è perfetta,ho dovuto solo correggere il tiro in
For RR = 15 To 22
con
For RR = 15 To 23
contava una cella in meno.
grazie
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Statix » 29/05/11 17:43

Ciao Avatar3,scusami ma
avrei ancora una modifica da fare alla tua macro,
se era possibile,riportarmi i numeri così come nella tabella
R15:V23
le celle di partenza sono sempre le stesse
P15.P23
in questo caso i numeri doppioni non ci sono,
le due macro le uso insieme,per il semplice motivo che la prima macro mi allinea i numeri è la seconda mi servira ad evidenziare i numeri a quale colonna appartengono 1° 2° 3° 4° 5°
Immagine
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 20:38

Riporto una macro registrata che dovrebbe soddisfare l'esigenza ( RiportaTab)
Codice: Seleziona tutto
Sub RiportaTab()

    Range("P15:P23").Select
    Selection.Copy
    Range("R15").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.TextToColumns Destination:=Range("R15"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1))
End Sub

Sub Tratto()
For RR = 15 To 23
    For CC = 18 To 22
        If Val(Cells(RR, CC)) = 0 Then Cells(RR, CC).Value = "-"
    Next CC
Next RR
End Sub


Se hai bisogno dei trattini fai eseguire anche la macro "tratto"
accodandola alla precedente
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 20:50

Ciao Avatar3,
c'è qualcosa che non va ,al posto dei numeri,mi escono tutte formule.

=VLOOKUP($O$15,$C$3:$D$12,2,FALSE)
=VLOOKUP($O$16,$F$3:$G$12,2,FALSE)
=VLOOKUP($O$17,$I$3:$J$12,2,FALSE)
=VLOOKUP($O$18,$L$3:$M$12,2,FALSE)
=VLOOKUP($O$19,$O$3:$P$12,2,FALSE)
=VLOOKUP($O$20,$C$14:$D$23,2,FALSE)
=VLOOKUP($O$21,$F$14:$G$23,2,FALSE)
=VLOOKUP($O$22,$I$14:$J$23,2,FALSE)
=VLOOKUP($O$23,$L$14:$M$23,2,FALSE)
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Statix » 29/05/11 21:00

da quello che ho capito,hai usato,
Dati,Testo in colonna etc.etc.,questo l'avevo fatto anche io in precedenza per la prima macro senza aver avuto nessun risultato utile. e infatti non ha funzionato neanche adesso.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 21:06

Non pensavo che in P15:P23 ci fossero formule ma solo stringhe
comunque prova questa macro
Codice: Seleziona tutto
Sub RiportaTab()
Range("R15:V23").ClearContents
    Range("P15:P23").Select
    Selection.Copy
    Range("R15").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.TextToColumns Destination:=Range("R15"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 21:12

no, c'è ancora qualcosa che non va,
i numeri della settima riga 62-65 li mette nella stessa cella
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Statix » 29/05/11 21:18

la stringa è composta
numero1 spazio numero2 spazio numero3 spazio numero4 spazio numero5
se il numero non c'è è sostituito da -
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 21:19

Si, infatti
lavoravo ancora con la prima tabellina da te postata dove i numeri erano separati da un trattino
A questo punto bisogna realizzare una macro dedicata
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 21:24

la tabella di prima è la stessa,non ho cambiato nulla
il trattino sostituisce il numero se non c'è
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 21:32

Mi riferisco al post del 29/05/2011, 16:06
dove per casualità i numeri erano separati da trattino

Poi ci sono conti che non tornano
Statix ha scritto:la stringa è composta se dici che la stringa è così formata
numero1 spazio numero2 spazio numero3 spazio numero4 spazio numero5
se il numero non c'è è sostituito da -

sostituendo i 5 numeri (con dei numeri delle decine quindi 2 cifre)
avremo una lunghezza massima della stringa pari a 10+4 spazi = 14 e non 25 o 26 come riporato nel post lunghezze stringhe
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 21:41

Ok ti posto la formula che concatena i numeri.ci sono degli spazi in più da prima non me ne ero accorto
Codice: Seleziona tutto
=CONCATENA(SE(DA32="";" - ";DA32);$DA$1;SE(DB32="";" - ";DB32);$DB$1;SE(DC32="";" - ";DC32);$DC$1;SE(DD32="";" - ";DD32);$DD$1;SE(DE32="";" - ";DE32))



lo spazio =" " sono le celle $DA$1 $DB$1 $DC$1 $DD$1
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 21:58

A questo punto non capisco perché impazzire a fare una macro per scompattare un "concatena" quando puoi mettere le singole formule in ogni cella es.
R15 = SE(DA32="";" - ";DA32)
S15 = SE(DB32="";" - ";DB32)
etc etc
Ti ritroverai già i numeri in colonna
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 22:04

mah non è così semplice,
ogni cella concatenata fa parte di una elaborazione di un ciclo,
il programma esegue un ciclo concatena i numeri è salva in una cella poi ricomincia
rielabora concatena i numeri e li accoda e cosi via per circa 30 cicli.
per cui alla fine non ho più i riferimenti per poterli estrapolare ,
per questo ci vuole una macro .
la prima macro che hai fatto è perfetta ho tutti i numeri allineati,
adesso mi serve quello per le posizioni,
un pò di pazienza . ;)
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 22:22

Ok,
ho preferito utilizzare la stessa macro precedente (dei numeri in riga) per compilare anche la tabellina
provala
Codice: Seleziona tutto
Sub TrovN2()
UC = Range("IV14").End(xlToLeft).Column
If UC < 18 Then UC = 18
Range(Cells(14, 18), Cells(14, UC)).ClearContents
Range("R15:V23").ClearContents
Dim VettN(90) As Integer
ContaN = 0
For RR = 15 To 23
    StrN = Range("P" & RR).Value
    LStrN = Len(StrN)
    For LS = 1 To LStrN
        If Mid(StrN, LS, 1) <> " " And Mid(StrN, LS, 1) <> "-" Then
            VN = Val(Mid(StrN, LS, 1) & Mid(StrN, LS + 1, 1))
            VettN(VN) = VN
            LS = LS + 1
            ContaN = ContaN + 1
            UCT = Range("IV" & RR).End(xlToLeft).Column + 1
            If UCT < 18 Then UCT = 18
            Cells(RR, UCT) = VN
            Else
            If Mid(StrN, LS, 1) = "-" Then
            UCT = Range("IV" & RR).End(xlToLeft).Column + 1
            If UCT < 18 Then UCT = 18
            Cells(RR, UCT) = "-"
            End If
           
        End If
    Next LS
Next RR
For N = 1 To 90
    If VettN(N) <> 0 Then
        UC = Range("IV14").End(xlToLeft).Column + 1
        If UC < 18 Then UC = 18
        Cells(14, UC).Value = VettN(N)
    End If
Next N
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: Estrarre numeri

Postdi Statix » 29/05/11 22:32

Che dire :eeh: è perfetta.
non ho parole,grazie
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Estrarre numeri

Postdi Avatar3 » 29/05/11 22:34

:)
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Estrarre numeri":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti