Sviluppare funzionalita su Microsoft Office con VBA Ordina in base alla data e orario

Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #53417 Score: 0 | Risposta

    Oscar
    Partecipante
      45 pts

      Un saluto a tutti

      Ho scaricato il calendario calcio 2025/2026 , e dovrei ordinare le partite in ordine alfabetico in base  all'orario e la data 

      La macro che ho fatto io abbastanza ridicola per il momento va bene , ma  gli orari sono solo nelle prime 3 giocate , e non credo che vada bene aggiungendo l'orario anche nelle partite restanti

      Se qualcuno ha qualche idea buona  grazie a tutti 

      Allegati:
      You must be logged in to view attached files.
      #53419 Score: 0 | Risposta

      Oscar
      Partecipante
        45 pts

        Finalmente dopo 2 giorni di tribolamento sono arrivato a questa conclusione sembra che vada bene 

        Grazie a tutti

        Option Explicit
        Sub Ordina_Squadre()
        Rem Ordino le Partite
        Dim I, X As Integer
        Dim A, B As Variant
         For I = 1 To 493
           If Left(Sheets("Squadre").Range("A" & I), 5) = "Turno" Then
              A = 2 + I
              B = 2 + I
          For X = 2 To 11
           If Format(Sheets("Squadre").Cells(1 + X + I, 1), "HH:MM") <> Format(Sheets("Squadre").Cells(X + I, 1), "HH:MM") Then
              B = I + X
           Sheets("Squadre").Range("B" & A, "C" & B).Sort Key1:=Sheets("Squadre").Range("B" & A), Order1:=xlAscending, Header:=xlNo
              A = I + X + 1
           End If
          Next
         End If
        Next
        End Sub
        
        #53420 Score: 0 | Risposta

        scossa
        Partecipante
          37 pts

          Oscar ha scritto:

          Dim I, X As Integer

          Ormai dovresti saperlo che, in VBA, le variabili vanno dichiarate singolarmente in modo esplicito, quindi nel tuo caso I è un Variant.

          Oscar ha scritto:

          Format(Sheets("Squadre").Cells(1 + X + I, 1), "HH:MM") <> Format(Sheets("Squadre").Cells(X + I, 1), "HH:MM")

          che senso ha l'uso di Format()? se Format(x, "HH:MM") è uguale a Format(y, "HH:MM"), allora anche x sarà uguale a y.

          #53421 Score: 0 | Risposta

          Oscar
          Partecipante
            45 pts

            scossa ha scritto:

            Oscar ha scritto:

            Dim I, X As Integer

            Grazie scossa per i consigli appena riesco provo la modifica poi ti faccio sapere grazie ancora 

            #53422 Score: 0 | Risposta

            Oscar
            Partecipante
              45 pts

              scossa ha scritto:

              Oscar ha scritto:

              Format(Sheets("Squadre").Cells(1 + X + I, 1), "HH:MM") <> Format(Sheets("Squadre").Cells(X + I, 1), "HH:MM")

              che senso ha l'uso di Format()? se Format(x, "HH:MM") è uguale a Format(y, "HH:MM"), allora anche x sarà uguale a y.

              Allora ho riprovato la riga  è  necessaria  per il cambio di data  , in quanto ad ogni concorso ci sono piu date 

              e devo ordinare in ordine alfabetico in base alla data e ora 

              Io non ho trovato una soluzione migliore di questa   esempio sotto  vedi che cambia la data e ora 

               
               

               

              #53423 Score: 0 | Risposta

              scossa
              Partecipante
                37 pts

                Oscar ha scritto:

                e devo ordinare in ordine alfabetico in base alla data e ora 

                Ok, evidentemente ti basta confrontare i minuti e non discriminare i secondi; allora credo sarebbe preferibile:

                If Csng(Sheets("Squadre").Cells(1 + X + I, 1)) <> Csng(Sheets("Squadre").Cells(X + I, 1)) Then

                #53424 Score: 0 | Risposta

                Oscar
                Partecipante
                  45 pts

                  scossa ha scritto:

                  Ok, evidentemente ti basta confrontare i minuti e non discriminare i secondi; allora credo sarebbe preferibile:

                  If Csng(Sheets("Squadre").Cells(1 + X + I, 1)) <> Csng(Sheets("Squadre").Cells(X + I, 1)) Then

                  Ciao scossa 

                  Ho sostituito la riga è perfetto grazie mille i tuoi consigli sono sempre i migliori 

                  Non ero a conoscenza della funzione  (Csng)

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Ordina in base alla data e orario
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: