Condividi:        

Elaborazione dati numerici altro formato

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

Elaborazione dati numerici altro formato

Postdi apocrimata75 » 18/07/12 13:21

Ciao a tutti, spero possiate darmi una mano (come sempre direte voi):

tramite queryweb scarico dei dati (numerici) però espressi in formato diverso, spiego meglio: le migliaia sono divise dalla virgola e i decimali dal punto.
Dato che nel foglio ci sono altre queryweb, formule ecc. tutte impostate con , per i decimali e . per le migliaia, non posso modificare le opzioni del foglio di excel.

Il risultato che così il valore 5.17 è > 20, sballandomi tutte le formule. Come posso rimediare?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Sponsor
 

Re: Elaborazione dati numerici altro formato

Postdi wallace&gromit » 18/07/12 13:40

ciao apocrimata,
se non ti crea problema puoi adeguare le tue impostazioni del file al formato dei dati importati (menu opzioni / internazionali). Se invece per compatibilità con altri dati devi trasformarli, puoi farlo con un "sostituisci", con delle formule di ricerca e sostituzione testo o con delle macro (le possibilità sono molteplici, la scelta dipende dalla frequenza d'uso e dalla quantità di dati).
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Elaborazione dati numerici altro formato

Postdi Flash30005 » 18/07/12 21:55

Leggi quanto scritto da W&G

Prima di importare la queryweb vedi tra le opzioni
(ho office 2003 e permette di disabiltare formato data ma il 2010 potrebbe avere più opzioni, tra queste, forse la formattazione numerica) :roll:


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Elaborazione dati numerici altro formato

Postdi Anthony47 » 19/07/12 02:26

Flash, non c' e' quell' opzione in XL2010.

Comunque secondo me il sistema piu' semplice e' adattarsi a quei dati; lo puoi fare in modo selettivo per quel file inserendo nel suo modulo "Questa_cartella_di_lavoro" queste due macro:
Codice: Seleziona tutto
Private Sub Workbook_Activate()
With Application
    .UseSystemSeparators = False
    .DecimalSeparator = "."
    .ThousandsSeparator = " "
End With
End Sub

Private Sub Workbook_Deactivate()
With Application
'    .DecimalSeparator = ","
'    .ThousandsSeparator = "."
    .UseSystemSeparators = True
End With
End Sub

In questo modo il file che attinge a questi dati lavorera' col separatore decimale "punto", gli altri useranno quello standard di sistema.

In alternativa prova a sostituire nell' area dati della tua query usando il comando "Trova e sostituisci" come suggerito da W&G (vedi sopra): se funziona proveremo ad automatizzarlo con macro.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 19/07/12 15:09

Trova e sostituisci sembra funzionare (sembra perchè è da vedere cosa succede automatizzando il tutto in quanto va inserita in una macro che si avvia ogni tot minuti (anthony la conosce bene).
Le celle interessate sono da cc112 a cs500.
Grazie per il vs aiuto.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 19/07/12 20:06

Codice: Seleziona tutto
Sub aggioauto()
' aggiornamento Macro
'
'CellaFlag = "A1"
'
ThisWorkbook.RefreshAll     '<< Mod
'Application.Wait (Now + TimeValue("0:00:20"))   '<< Del
'wait 20 seconds    '<< Aggiunte Do /Loop
ActiveWindow.SmallScroll Down:=75
    Range("CC112:CS500").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
myTim = Timer
Do
DoEvents: If Timer > myTim + 10 Or Timer < myTim Then Exit Do   '<< *2
Loop
'
Dim UR As Integer
UR = ThisWorkbook.Sheets("Prono").Range("C" & Rows.Count).End(xlUp).Row + 1
If UR < 3 Then
UR = 3
End If
If CellaFlag <> "" Then   'Non rischedulare se gia' attivo
With ThisWorkbook.Sheets("Prono")
    ThisWorkbook.Sheets("Prono").Range("bF2:bS2").Copy
    ThisWorkbook.Sheets("Prono").Range("C" & UR).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    .Range(CellaFlag) = .Range(CellaFlag) + 1
    If .Range(CellaFlag) < 9999 Then
        If (.Range("G2") * 3600 + .Range("H2") * 60 + .Range("I2") < 10) Then .Range("I2") = 10   '<< *3
        mTempo = Now + TimeSerial(.Range("G2"), .Range("H2"), .Range("I2"))
        Application.OnTime mTempo, "aggioauto"
    End If
End With
End If


Per ora ho risolto così, ho scritto tutta la macro, con l'aggiunta. Ci sono correzioni da fare?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi Flash30005 » 19/07/12 22:39

Puoi eliminare questa riga
Codice: Seleziona tutto
ActiveWindow.SmallScroll Down:=75
che è uno scroll inutile e
inoltre potresti modificare così (senza selezionare il range)
Codice: Seleziona tutto
    Range("CC112:CS500").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Elaborazione dati numerici altro formato

Postdi Anthony47 » 19/07/12 22:44

Guarda il suggerimento di Flash, sopra.
Secondo me pero' la sostituzione non puo' funzionare: dopo l' importazione ti troverai con stringhe che sono diventate numeri sbagliati (es 1,233), numeri che sono diventati stringhe (es 123.5), numeri che sono rimasti numeri giusti (es 333).
Barcamenarsi in questa confusione e' penoso e incline a errori.

Per me e' meglio adattarsi a quei dati, usando il codice che ti ho dato...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 20/07/12 08:45

Sto testando il file con la macro come postata, sembra che i numeri, per ora, non sballino. In serata potrò darvi i risultati. Intanto un grazie di cuore.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 20/07/12 10:51

Devo aggiungere un fatto, che prima non si verificava: dello stesso file dove gira la macro "incriminata", faccio + copie (2/3) in modo da seguire più eventi contemporaneamente.

Adesso la macro gira nel file 1 (ad esempio), estrapola i dati ecc. ecc. , l'ultimo file aperto e sul quale sto lavorando (esempio file 3), visualizza le celle cc112, invece da a1 a e10.

qunado la macro gira poi nel file 3, è il file 1 a visualizzare le celle cc112.

Perchè?

Premesso che mi sposto con le freccie ed il problema non si pone, ma prima non lo faceva.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi Anthony47 » 20/07/12 14:40

Una macro "OnTime" si attiva al tempo programmato; cosa fa il Pc in quel momento e' ovviamente imprevedibile.
Devi quindi fare in modo che la macro che si esegue elabori solo il file a cui la macro appartiene; questo vuol dire che ogni istruzione deve indirizzare in modo esplicito il Workbook e il Worksheet da/su cui prendere / mettere i dati.
Prendi quest istruzioni:
ActiveWindow.SmallScroll Down:=75
Range("CC112:CS500").Select
Selection.Replace What:=".", etc etc

Esse fanno riferimento al file e al foglio attivo, in pratica qualcosa a caso... mentre immagino che dovrebbero fare riferimento al foglio "prono" del file di appartenenza.

Prova quindi a modificare in
Codice: Seleziona tutto
ThisWorkbook.Sheets("Prono").Range("CC112:CS500"). Replace What:=".", etc etc


Vale anche per l' istruzione che dovrebbe fermare la rischedulazione della macro:
Codice: Seleziona tutto
If ThisWorkbook.Sheets("Prono").Range("B4") - TimeSerial(0, 4, 0) > (Timer / 24 / 3600) Then Application.OnTime mTempo, "aggioauto"


Nella macro vedo anche uno strano If CellaFlag <> "" e successivamente .Range(CellaFlag) = .Range(CellaFlag) + 1; ma CellaFlag non risulta definita, quindi la If dovrebbe tranquillamente continuare (essendo il risultato Falso) ma la seconda dovrebbe darti un errore run time...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 21/07/12 12:39

Codice: Seleziona tutto
Sub aggioauto()
' aggiornamento Macro
'
'CellaFlag = "A1"
'
ThisWorkbook.RefreshAll     '<< Mod
'Application.Wait (Now + TimeValue("0:00:20"))   '<< Del
'wait 20 seconds    '<< Aggiunte Do /Loop
[color=#FFFF00]ThisWorkbook.Sheets("Prono").Range("CC112:CS500").Select[/color]
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
myTim = Timer
Do
DoEvents: If Timer > myTim + 10 Or Timer < myTim Then Exit Do   '<< *2
Loop
'
Dim UR As Integer
UR = ThisWorkbook.Sheets("Prono").Range("C" & Rows.Count).End(xlUp).Row + 1
If UR < 3 Then
UR = 3
End If
If CellaFlag <> "" Then   'Non rischedulare se gia' attivo
With ThisWorkbook.Sheets("Prono")
    ThisWorkbook.Sheets("Prono").Range("bF2:bS2").Copy
    ThisWorkbook.Sheets("Prono").Range("C" & UR).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    .Range(CellaFlag) = .Range(CellaFlag) + 1
    If .Range(CellaFlag) < 9999 Then
        If (.Range("G2") * 3600 + .Range("H2") * 60 + .Range("I2") < 10) Then .Range("I2") = 10   '<< *3
        mTempo = Now + TimeSerial(.Range("G2"), .Range("H2"), .Range("I2"))
        If ThisWorkbook.Sheets("Prono").Range("B6") - TimeSerial(0, 4, 0) > (Timer / 24 / 3600) Then Application.OnTime mTempo, "aggioauto"
    End If
End With
End If
End Sub


ho apportato le modifiche alla macro che ora si presenta così come sopra. Purtroppo dopo 2/3 aggiornamenti va in debug, evidenziando in giallo la riga di cui sopra
Codice: Seleziona tutto
ThisWorkbook.Sheets("Prono").Range("CC112:CS500").Select


Ora provo a far girare un solo file alla volta.

Sapreste aiutarmi?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 21/07/12 13:41

Ho aperto un solo file, ho lanciato la macro con aggiornamenti ogni 5 minuti e funziona. Pertanto il problema si pone quando lavoro con più file (file copia, file copia (2) ecc.ecc.) contemporaneamente.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi Anthony47 » 21/07/12 14:31

Infatti quella istruzione non dovrebbe proprio esserci, e la successiva dovrebbe essere
Non Selection.Replace What:=".", etc etc
Ma ThisWorkbook.Sheets("Prono").Range("CC112:CS500"). Replace What:=".", etc etc
(vedi viewtopic.php?f=26&t=96194&p=552034#p551968)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 21/07/12 15:26

Correzioni fatte, provo subito.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Elaborazione dati numerici altro formato

Postdi apocrimata75 » 28/07/12 10:22

Oramai testo il file da più giorni e sembra girare alla grande, siete stati tutti gentilissimi, vi ringrazio.

Un grazie particolare ad Anthony47 per la sua enorme pazienza e capacità.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22


Torna a Applicazioni Office Windows


Topic correlati a "Elaborazione dati numerici altro formato":


Chi c’è in linea

Visitano il forum: Marius44 e 49 ospiti