Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

errore su macro per testo in colonne

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

errore su macro per testo in colonne

Postdi matzap » 03/05/13 11:37

Ciao a tutti,
ho una serie di dati del tipo:
6120264666-800.01
6120269273-800.01
6120269122-800.01
6120264736-800.01

dovrei far rimanere solo i valori 800, e ho usato una macro registrata:

Selection.TextToColumns Destination:=Range("Z10:Z19"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 9), Array(11, 1), Array(14, 9)), TrailingMinusNumbers _
:=True

e funziona. Ma se i dati sono del tipo:
R5019
R0012
P0016
R0009
e così devono rimanere,
la macro mi da un debug: Errore nel metodo TextToColumns per la clessa Range

potete aiutarmi?
grazie
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Sponsor
 

Re: errore su macro per testo in colonne

Postdi Anthony47 » 03/05/13 13:32

Puoi per favore chiarire quale risultato vorresti ottenere per ogni riga dei dati che hai elencato?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: errore su macro per testo in colonne

Postdi KITT » 03/05/13 14:26

Ciao maztap,
mancando ulteriori dettagli sul risultato che vuoi ottenere ho ipotizzato che:
-i formati che hai messo nel post siano gli unici presenti nel tuo file
-siano tutti incolonnati nella colonna A a partire dalla cella A1 e senza celle vuote nel mezzo
-tu voglia avere il risultato della macro nella colonna B
-che tu abbia excel 2003.
in base a cio potresti provare con:

Codice: Seleziona tutto
For x = 1 To 65536
If Cells(x, 1) = "" Then Exit Sub
If Len(Cells(x, 1)) = 17 Then
  Cells(x, 2) = Mid(Cells(x, 1), 12, 3)
    Else
      Cells(x, 2) = Cells(x, 1)
End If
Next x


Spero di esserti stato utile, in caso contrario fornisci ulteriori dettagli come suggerito gia' da Anthony47.

Ciao
KITT
XP - OFFICE 2003 - ENG
WIN 7 - OFFICE 2010 - ENG
Avatar utente
KITT
Utente Junior
 
Post: 71
Iscritto il: 16/05/11 08:20

Re: errore su macro per testo in colonne

Postdi matzap » 03/05/13 18:02

Grazie Kitt! era quello che mi serviva! :D
l'ho un pò modificata in modo da incollare il dato sulla stessa cella e fare il ciclo solo nelle cella da Z10 a Z19:

For x = 10 To 19
If Cells(x, 26) = "" Then Exit For
If Len(Cells(x, 26)) = 17 Then
Cells(x, 26) = Mid(Cells(x, 26), 12, 3)
Else
Cells(x, 26) = Cells(x, 26)
End If
Next x

Scusa ma cosa significa If Len(Cells(x, 26)) = 17 ? cioè perchè proprio 17? :?:

Grazie ancora
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: errore su macro per testo in colonne

Postdi KITT » 03/05/13 21:13

Ciao matzap, ho inserito 17 poiche' l'istruzione che ti ho suggerito fa un controllo sul numero dei caratteri contenuti nella cella che deve esaminare, se contiene 17 caratteri esegui l'estrazione dell'800 altrimenti riporta il valore originale senza modificarlo.
ovviamente come premesso nel mio post ho ipotizzato uno scenario:
mancando ulteriori dettagli sul risultato che vuoi ottenere ho ipotizzato che:
-i formati che hai messo nel post siano gli unici presenti nel tuo file
-siano tutti incolonnati nella colonna A a partire dalla cella A1 e senza celle vuote nel mezzo
-tu voglia avere il risultato della macro nella colonna B
-che tu abbia excel 2003.

quindi fintanto che i valori da esaminare e modificare manterranno i 17 caratteri, tutto filera' liscio. Se dovessero cambiare potresti prendere in considerazione la possibilita' di sostituire il 17 con una variabile altrimenti la routine cosi' come e' non produrrebbe risultati corretti.

Spero di esserti stato utile, in caso contrario fornisci ulteriori dettagli come suggerito gia' da Anthony47.
KITT
XP - OFFICE 2003 - ENG
WIN 7 - OFFICE 2010 - ENG
Avatar utente
KITT
Utente Junior
 
Post: 71
Iscritto il: 16/05/11 08:20

Re: errore su macro per testo in colonne

Postdi matzap » 03/05/13 21:50

Capito! grazie, in effetti il valore 800 contenuto nella stringa:
6120264666-800.01
potrebbe diventare 1000 ma mai 90 e quindi avrei 18 caratteri ma mai 16
potrei modificarla mettendo >=di 17, secondo te funziona?
altrimenti uso una variabile...
grazie
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: errore su macro per testo in colonne

Postdi KITT » 04/05/13 07:03

Ciao matzap, se poni Len >=17 fai intervenire l'istruzione mid, solo che quest'ultima e' settata per estrarre solo tre caratteri a partire dal dodicesimo, quindi il risultato che otterresti sarebbe 100 (ipotizzando un valore da esaminare del tipo: 6120269122-1000.01).
quindi se ho capito bene il tuo scenario ha queste caratteristiche:
il valore da esaminare ai fini dell'estrazione non puo' essere piu' corto di 17 caratteri e non puo' essere piu' lungo di 18
la parte prima del trattino e' sempre e solo di 10 caratteri
la parte che devi estrarre e' sempre e solo di 3 o 4 caratteri

Se queste sono le uniche caratteristiche ti propongo di assegnare una variabile alla parte da estrarre in funzione della lunghezza del valore da esamminare, se la lunghezza e' 17 allora la parte da estrarre acquistera' il valore 3, se la lunghezza e' 18 allora la parte da estrarre acquistera' il valore 4:
Codice: Seleziona tutto
For x = 1 To 65536
    If Cells(x, 1) = "" Then Exit Sub
    If Len(Cells(x, 1)) = 17 Then ParteDaEstrarre = 3
    If Len(Cells(x, 1)) = 18 Then ParteDaEstrarre = 4
    Cells(x, 2) = Mid(Cells(x, 1), 12, ParteDaEstrarre)
    If Len(Cells(x, 1)) < 17 Then Cells(x, 2) = Cells(x, 1)
Next x

Se il tuo scenario fosse piu' complesso ti chiedo di dettagliarlo il piu' possibile.
Spero di esserti stato utile.
ciao
KITT
XP - OFFICE 2003 - ENG
WIN 7 - OFFICE 2010 - ENG
Avatar utente
KITT
Utente Junior
 
Post: 71
Iscritto il: 16/05/11 08:20

Re: errore su macro per testo in colonne

Postdi matzap » 07/05/13 13:33

Grazie Kitt, ottima soluzione. credo sia sufficente questo. e comunque è un ottimo spunto da cui partire e fare pratica.
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: errore su macro per testo in colonne

Postdi KITT » 07/05/13 13:45

:) grazie a te. ciao
KITT
XP - OFFICE 2003 - ENG
WIN 7 - OFFICE 2010 - ENG
Avatar utente
KITT
Utente Junior
 
Post: 71
Iscritto il: 16/05/11 08:20


Torna a Applicazioni Office Windows


Topic correlati a "errore su macro per testo in colonne":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti