View Full Version : [excel] dividere dati da una cella
Gentoooo
26-11-2009, 11:55
Ciao a tutti,
vi posto il mio problema con la speranza che qualcuno riesca a risolverlo!
Ho una cella con il seguente contenuto:
16/11/2009 3.41.41
In cui sono appunto indicati data ed ora. Vorrei però fare in modo che tali dati vengano suddivisi su due celle! Ovvero la DATA in una cella e l' ORA nella cella subito a fianco.
Come posso fare?
Grazie a tutti anticipatamente.
Semplice. Il valore della data inserita nelle due celle è il medesimo ( non fai altro che duplicarlo nella cella a fianco, con una semplice formula, o con VBA... ).
La cella "Data" va formattata con gg/mm/aaaa , mentre la cella "Ora" con h.mm.ss.
Gentoooo
29-11-2009, 07:10
mm...ovvero??! Non sono assolutamente pratico e per quanto la soluzione sopra mi sembra ragionevole non saprei proprio come farlo... Potreste indicarmi questa formula o cmq un modo per farlo?
grazie. :help:
Semplice. Poni di avere 2 colonne A, B.
In A1 scrivi 16/11/2009 3.41.41. In B1 scrivi la formula "=A1".
Adesso vai su A1, Click destro / Formato Celle / Personalizzato >> nella textbox "Tipo:" inserisci : gg/mm/aaaa .
Stessa cosa con B1 >> h.mm.ss .
Gentoooo
29-11-2009, 12:15
Ok! capito benissimo ho solo un ultimo problemino!
Io ricevo questo file excel che contiene circa 300 righe formattate così:
A1 B1 C1
data ora (da formattare) dato1 dato2
A2 B2 C2
data ora (da formattare) dato3 dato4
e devo ricavare in un altro foglio:
A1 B1 C1
DATA DATO1 DATO2
A2 B2 C2
ORA DATO1 DATO2
A3 B3 C3
DATA DATO3 DATO4
A4 B4 C4
ORA DATO3 DATO4
come posso fare per ottenere questo risultato ?
Una cosa del genere... :
Dim cnt1 As Long
cnt1 = 0
Dim cnt2 As Long
cnt2 = 1
Do
cnt1 = cnt1 + 1
If Sheets("Foglio1").Range("A" & cnt1).Text = "" Then Exit Do
If cnt1 = 1 Then
cnt2 = 1
Else
cnt2 = cnt2 + 2
End If
Sheets("Foglio2").Range("A" & cnt2).NumberFormat = "dd/mm/yyyy"
Sheets("Foglio2").Range("A" & cnt2).FormulaR1C1 = Sheets("Foglio1").Range("A" & cnt1).Formula
Sheets("Foglio2").Range("B" & cnt2).FormulaR1C1 = Sheets("Foglio1").Range("B" & cnt1).Text
Sheets("Foglio2").Range("C" & cnt2).FormulaR1C1 = Sheets("Foglio1").Range("C" & cnt1).Text
Sheets("Foglio2").Range("A" & (cnt2 + 1)).NumberFormat = "hh.mm.ss"
Sheets("Foglio2").Range("A" & (cnt2 + 1)).FormulaR1C1 = Sheets("Foglio1").Range("A" & cnt1).Formula
Sheets("Foglio2").Range("B" & (cnt2 + 1)).FormulaR1C1 = Sheets("Foglio1").Range("B" & cnt1).Text
Sheets("Foglio2").Range("C" & (cnt2 + 1)).FormulaR1C1 = Sheets("Foglio1").Range("C" & cnt1).Text
Loop
;)
Gentoooo
01-12-2009, 07:25
Ciao MarcoGG e grazie ancora perchè lo script funziona alla grande!
Però...c'è un però! E' vero che le celle ora sono separate e che in una visualizzo la data e nell'altra l'ora, però se ci clicco sopra vedo che nella barra in realtà il formato è ancora "data ora" , ovvero a livello visivo è tutto perfetto ma il valore della cella è rimasto invariato!
Cerco di essere più preciso:
valore originale A1 = 16/11/2009 23.16
valore corretto dallo script A1= 16/11/2009 A2= 23.16
cliccando però su A1 o su A2 il valore della foruma è rimasto invariato, ed è sempre 16/11/2009 23.16
Questo pregiudica tutto il lavoro che devo fare dopo perchè mi sballa tutti i grafici andando ad interpretare il valore originale e non quello corretto.
Lo stesso problema si viene a creare modificando a mano il valore di Formato Celle.
Spero di essermi spiegato, e spero che tu abbia una soluzione anche a questo problema :D
thx
Se vuoi che la formula e il testo della cella concidano :
Dim cnt1 As Long
cnt1 = 0
Dim cnt2 As Long
cnt2 = 1
Do
cnt1 = cnt1 + 1
If Sheets("Foglio1").Range("A" & cnt1).Text = "" Then Exit Do
If cnt1 = 1 Then
cnt2 = 1
Else
cnt2 = cnt2 + 2
End If
Sheets("Foglio2").Range("A" & cnt2).NumberFormat = "dd/mm/yyyy"
Sheets("Foglio2").Range("A" & cnt2).FormulaR1C1 = Split(Sheets("Foglio1").Range("A" & cnt1).Text, " ")(0)
Sheets("Foglio2").Range("B" & cnt2).FormulaR1C1 = Sheets("Foglio1").Range("B" & cnt1).Text
Sheets("Foglio2").Range("C" & cnt2).FormulaR1C1 = Sheets("Foglio1").Range("C" & cnt1).Text
Sheets("Foglio2").Range("A" & (cnt2 + 1)).NumberFormat = "hh.mm.ss"
Sheets("Foglio2").Range("A" & (cnt2 + 1)).FormulaR1C1 = Split(Sheets("Foglio1").Range("A" & cnt1).Text, " ")(1)
Sheets("Foglio2").Range("B" & (cnt2 + 1)).FormulaR1C1 = Sheets("Foglio1").Range("B" & cnt1).Text
Sheets("Foglio2").Range("C" & (cnt2 + 1)).FormulaR1C1 = Sheets("Foglio1").Range("C" & cnt1).Text
Loop
;)
Gentoooo
02-12-2009, 12:47
ciao! Non so se sbaglio io qualcosa ma in realtà funziona solo per quanto riguarda la data, mentre l'ora continua a formattarla in modo errato!
ciao! Non so se sbaglio io qualcosa ma in realtà funziona solo per quanto riguarda la data, mentre l'ora continua a formattarla in modo errato!
A me invece le formatta correttamente ( Excel 2003 ).
Fammi un esempio di data di partenza ( data + ora ) che non viene formattata nel modo giusto.
Gentoooo
03-12-2009, 23:05
Guarda ho provato e riprovato provando anche a cambiare qualcosa ma niente... il risultato è sempre uguale e con qualsiasi data/ora!
L'unica cosa che cambia è che io uso excel 2007, in ogni caso è paradossale perkè con la data funziona alla perfezione!!
Evidentemente al VBA di Excel 2007 non piace quella formattazione sulle ore ( che ho testato su 2003 ). Quello che puoi fare è provare con il registratore macro a formattare le celle orarie. Quando becchi la formattazione giusta, vai a leggerti il codice VBA generato... ;)
Al momento non ho 2007 e non posso fare prove...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.