Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Numero riconosciuto come data

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

[Excel] Numero riconosciuto come data

Postdi hispanico87 » 01/02/10 16:56

Innanzitutto ringrazio tutti quelli che in questi giorni mi stanno aiutando!!
Sono alle prese con un listino "scomodo" (formato .csv) ed ho in lavorazione una macro che mi permetta di ripulire il file in modo da ottenerne uno più adatto alle mie esigenze.
Un paio di istruzioni della macro si presentano così:
Codice: Seleziona tutto
'----------Formattazione colonna prezzo----------
'

For Each xCell In Range("H1:H")
   xCell.Value = CDec(xCell.Value)
Next xCell
'
'
'-----Sostituzione punto con virgola-------
'
    For Each cell In Range("H1:H3000, I1:I3000, M1:M3000")
        cell.Value = Replace(cell.Value, ".", ",")
    Next
    Application.ScreenUpdating = True
End Sub


e un po' prima nella macro ho inserito anche questa (che toglie l'apostrofo prima del valore):
Codice: Seleziona tutto
Application.ScreenUpdating = False
       For Each currentcell In Range("H1:H30000")
           If currentcell.HasFormula = False Then
               currentcell.Formula = currentcell.Value
           End If
       Next


Ora; perchè nella colonna dei prezzi ottengo il 95% dei valori nel formato che mi interessa (ex: 295,99) mentre nel restante 5% dei casi, soprattutto se riferito a prezzi piccoli, non mi sostituisce il punto con la virgola e ottengo il riconoscimento del numero come una data (Dic.99 quando dovrei avere 12,99)?
Qualche idea per correggere tutto ciò sempre tramite VBA? :undecided:
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Sponsor
 

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 01/02/10 20:05

"Importa" il file csv (Menu /Dati /Importa dati esterni /Importa dati); avrai la possibilita' di impostare il "punto" come separatore decimale (step 3 di 3, impostazioni Avanzate); inoltre puoi impostare il formato delle singole colonne.
Questo ti evitera' di dover sostituire successivamente i "punti" e soprattutto evitera' che testi come 12.99 siano tradotti subito in dic.1999, non piu' correggibile.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Numero riconosciuto come data

Postdi hispanico87 » 01/02/10 20:19

Ho provato a fare come mi hai suggerito ma il risultato non cambia...ho gli stessi identici dati! :(
Come posso fare?
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 02/02/10 00:24

Dopo che hai eseguito la sola "importazione" del file csv (quindi senza nessuna ulteriore manipolazione), i dati importati hanno ancora il "punto" come separatore decimale o hanno la "virgola"?
Il file csv come lo ottieni? hai ispezionato il suo contenuto (aprendolo con Notepad) per vedere che cosa contiene?
Infine, puoi pubblicare uno spezzone del file csv con cui hai problemi?

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Numero riconosciuto come data

Postdi hispanico87 » 02/02/10 15:36

Da un'attenta analisi del file .csv di riferimento ho notato che i dati sono sbagliati già all'origine!!
Invece di 10,99 (per esempio) nel file .csv appare Ott.99
Non posso recuperare la situazione in nessun modo?
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 02/02/10 17:02

Immaginavo...
Il file csv te lo passano o lo produci tu? Come?

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Numero riconosciuto come data

Postdi hispanico87 » 02/02/10 17:26

Il file me lo da il fornitore! :aaah
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 02/02/10 17:32

In questo caso direi che e' meglio chiedere al fornitore che modifichi il suo processo ed esporti dati corretti.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Numero riconosciuto come data

Postdi hispanico87 » 03/02/10 15:06

Anthony47 ha scritto:In questo caso direi che e' meglio chiedere al fornitore che modifichi il suo processo ed esporti dati corretti.


Lo immaginato ed infatti ho subito provveduto nel riferire tutto a chi di dovere.
Ultima cosa...c'è un modo per eliminare del tutto le righe contenenti questo "difetto"?
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 04/02/10 01:47

Un dato del tipo "dic.99" sara' importato come "testo"; potresti quindi provare a recuperare il dato corretto in questo modo:
-supponiamo che il listino con celle talvolta corrotte sia in col C
-in una colonna libera inserisci questa formula, che poi copi verso il basso per quante righe ti serve:
Codice: Seleziona tutto
=SE(VAL.TESTO(C2);MESE(SOSTITUISCI(C2;".";"-"))+DESTRA(C2;2)/100;C2)

Questa dovrebbe replicarti il numero (se gia' presente un numero) o fornirti una traduzione da finta-data a numero; volendo le formule possono essere applicate da codice, se gia' usi una macro per fare il lavoro precedente, che ottieni con Registra nuova macro.

Prova e fai sapere.
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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Numero riconosciuto come data

Postdi hispanico87 » 06/02/10 14:27

Non va...esce un valore a 5 cifre (36xxx) che nulla ha a che vedere con quello che doveva essere!
Grazie mille a tutti per l'aiuto...purtroppo in questo caso credo ci sia ben poco da fare!! :roll:
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Numero riconosciuto come data

Postdi ricky53 » 06/02/10 18:09

Ciao,

ho provato quanto scritto da Anthony: utilizzando il tuo esempio "dic.99" ottengo 12,99 che è esatto.

Tu che dati hai provato?
Puoi inviare un estratto del tuo file, senza dati riservati, in modo da poter provare su dati reali.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Numero riconosciuto come data

Postdi Anthony47 » 06/02/10 22:32

Il fatto, Ricky, e' che durante la fase di importazione dati quel 12.99 viene gia' trasformato in una data perche' evidentemente in pc di hispanico e' settato col "punto" quale separatore di date; quindi la cella conterra' (per Dic.99) il numero 36495 (se base 1900).
Si potrebbe cambiare questa impostazione (Pannello di controllo /Opzioni internazionali, Personalizza; modificare il separatore nel tab Data), ma questo impatta tutti i programmi e il modo di lavorare dell' utente.

Inoltre, lo stesso significato attibuito al .99 e' impostabile sempre nelle Opzioni internazionali, per cui magari sul mio pc 01 diventa 1901 (valore numerico 366-701) e sul tuo diventa 2001 (valore numerico 37xxx); per dire che non si puo' nemmeno ragionare "se il valore e' inferiore a un valore xx, diciamo 15000, la cella e' diventata una data" e quindi applico la conversione; infatti gen-00 potrebbe essere (per effetto delle impostazioni di in singolo pc) 1,00 (gen 1900) oppure 36526 (gen 2000).

Allora, volendo evitare di modificare le impostazioni internazionali, il mio suggerimento e':
-partendo da excel, attivare un Registra nuova macro
-importare il file, con l' opzione "Delimitati" ma con delimitatore "#"; questo portera' tutta la stringa indivisa nella stessa cella
-selezionare la colonna in cui sono stati importati i dati
-Menu /Modifica /Sostituisci;
-con santa pazienza fare Trova=gen e Sostituisci=01, premi Sostituisci tutto; Trova=feb, Sostituisci=02, Sostituisci tutto; e cosi' fino alla fine dell'anno. Non lasciarti impressionare se ti dice che non ha trovato stringhe da sostituire, vai avanti lo stesso col prossimo mese senza saltarne nessuno.
-finita questa conversione, esegui Menu /Dati /Testo in colonna (sempre con i dati selezionati)
E' in questa fase che userai il vero delimitatore e che istruirai excel per usare il "punto" come separatore decimale (step 3/3, Avanzate)

Finito il testo-in-colonna fermi la registrazione macro.

Il risultato e' che dovresti avere adesso i dati tutti corretti, e che quando vuoi reimportare il file bastera' lanciare la macro per ripetere lo stesso processo senza tanti mal di pancia.
Questo presuppone che il file abbia sempre lo stesso nome; se preferisci si puo' fare in modo di "scegliere" il file da importare: posta il codice ottenuto con Registra macro e ti proporremo una piccola modifica.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Numero riconosciuto come data":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti