Condividi:        

Dividere data gg/mm/aaaa in 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

Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 12/02/16 18:26

Buona sera,
volevo sapere se possibile con una macro cambiare una data in una serie di numeri divisi.
Faccio un esempio, se in A1 ho la data 12/02/2016 posso con una macro fare in modo che in B1 commpaia il numero 1 in C1 il numero 2 in D1 lo O in E1 il 2 in G1 il 2 in H1 lo 0 in I1 l'uno e in J1 il 6.
Grazie
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Sponsor
 

Re: Dividere data gg/mm/aaaa in numeri

Postdi alfrimpa » 12/02/16 19:35

Ciao M@rtin@ e ben ritrovata.

Avevo (nel cassetto :) ) questa macro che avevo scritta per un utente di altro forum; l'ho adattata al tuo caso e te la propongo.

Codice: Seleziona tutto
Sub suddividi()
Dim i As Integer
Dim cel As Range
Dim mycel As String
Dim lung As Integer
Dim dif As Integer
On Error Resume Next
For Each cel In Selection
mycel = Replace(cel.Value, "/", "")
lung = Len(mycel)
Select Case lung
    Case Is = 8
        dif = 7
    Case Is = 7
        dif = 5
    Case Is = 6
        dif = 3
    Case Is = 5
        dif = 1
    Case Is = 4
        dif = -1
    Case Is = 3
        dif = -3
End Select
    For i = 9 To 2 Step -1
        Cells(cel.Row, i) = Mid(mycel, i - Len(mycel) + dif, 1)
    Next i
Next cel
End Sub


Inserisci il codice nell'editor di VBA (credo che tu lo sappia fare) e poi posizionati sulla cella che contiene la data ed esegui la macro.

Fammi sapere.

P.S. La macro funziona anche se selezioni un intervallo di date.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Dividere data gg/mm/aaaa in numeri

Postdi scossa » 12/02/16 22:35

Ciao Alfredo,

mi permetto di proporre una variante al tuo codice:

Codice: Seleziona tutto
Sub suddividi_scossa()
  Dim i As Integer
  Dim cel As Range
  Dim mycel As String

  For Each cel In Selection
    With cel
      If IsDate(.Value) Then
        mycel = Replace(CDate(.Value), "/", "")
        For i = 1 To 8
            .Offset(0, i) = Mid(mycel, i, 1)
        Next i
      Else
        .Offset(0, 1).Resize(1, 8).ClearContents
      End If
    End With
  Next cel
End Sub
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 12/02/16 22:42

:) Grazie, la macro è perfetta e immediata.
Unico problema, sono io ( come sempre), non riesco proprio a capire come funziona, se non hai problemi più importanti da risolvere potresti spiegarmi il ragionamento che c'è dietro i valori in Case Is e il significato delle istruzioni "On Error Resume Next" che dalle spiegazioni che ho trovato io sembra che serva ad ignorare gli errori, e visto che i risultati sono perfetti non mi pare questo il caso e " Mid(mycel, i - Len(mycel) + dif, 1)" che forse mi sarà chiara quando mi avrai spiegato i valori in Case Is ...forse...
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 12/02/16 22:46

Grazie anche @scossa stessa velocità e precisione.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Dividere data gg/mm/aaaa in numeri

Postdi Anthony47 » 13/02/16 01:39

Eventualmente con formula:
-A1 contiene la data
-selezioni B1:J1
-inserisci la formula
Codice: Seleziona tutto
=SE.ERRORE(--STRINGA.ESTRAI(TESTO(A1;"ggmm aaaa");MATR.TRASPOSTA(RIF.RIGA(INDIRETTO("1:9")));1);"")

-confermi con Contr-Maiusc-Enter, non il solo Enter

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

Re: Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 13/02/16 10:39

Grazie Anthony, con questa formula si nota che ho sbagliato la descrizione della domanda saltando la colonna F che risulta vuota, ma tu te ne eri già accorto, altrimenti non lo mettevi lo spazio tra mm e aaaa ;)
Formula corretta:
Codice: Seleziona tutto
=SE.ERRORE(--STRINGA.ESTRAI(TESTO(A1;"ggmmaaaa");MATR.TRASPOSTA(RIF.RIGA(INDIRETTO("1:9")));1);"")
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Dividere data gg/mm/aaaa in numeri

Postdi Anthony47 » 13/02/16 19:16

con questa formula si nota che ho sbagliato la descrizione della domanda saltando la colonna F che risulta vuota, ma tu te ne eri già accorto, altrimenti non lo mettevi lo spazio tra mm e aaaa
Ah ah... pero' mi pare di capire che era meglio se non l'avessi notato il salto della colonna F...
Alla prossima!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 14/02/16 13:28

pero' mi pare di capire che era meglio se non l'avessi notato il salto della colonna F...

No! Devi assolutamente, l'ho messa giù così perché con la formula " vorrei far notare alle persone meno esperte di me che in futuro leggessero questo post..." mi stavo sulle scatole da sola, tranne che per la parte "meno esperte di me", con quella mi facevo ridere da sola.
Ciao scrivimi tanto.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Dividere data gg/mm/aaaa in numeri

Postdi alfrimpa » 15/02/16 12:27

Ciao Martina

Ero in debito conte di una risposta sulle istruzioni Select Case e Mid

Doverosamente devo precisare che la mia macro è funzionante solo qualora i dati da suddividere siano in colonna A perché inizialmente era stata concepita così e non ho avuto più il tempo/necessità di modificarla. Quindi le soluzioni di scossa e Anthony (che saluto) sono senz'altro da preferire e, d'altra parte, sia l'uno che l'altro, sono dei "colossi" su Excel e sul VBA.

Detto questo, tornando al Select Case ed al Mid, più che dirlo a parole mie ti rimando a due link che spiegano bene il loro uso/funzionamento.

Select Case

http://forum.wintricks.it/showpost.php? ... ostcount=5

Mid

http://forum.wintricks.it/showpost.php? ... stcount=45

Queste due "pagine" fanno parte di un corso sul VBA che trovi al seguente indirizzo

http://forum.wintricks.it/showthread.php?t=155252

e di ogni argomento è possibile scaricare anche il relativo PDF.

Spero di aver fatto cosa utile e gradita.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Dividere data gg/mm/aaaa in numeri

Postdi M@rtyn@ » 16/02/16 21:27

:) :D :) :D :) :D :) :D :) :D
Grazie, grazie, grazie, ho dato solo un'occhiata veloce ma sembra spiegato in maniera molto chiara, ma anche molto esaustiva, mi hai aperto una porta preziosa.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03


Torna a Applicazioni Office Windows


Topic correlati a "Dividere data gg/mm/aaaa in numeri":


Chi c’è in linea

Visitano il forum: Marius44 e 52 ospiti