Chiedere numeri in ordine crescente



  • Chiedere numeri in ordine crescente
    di francesca24 (utente non iscritto) data: 20/05/2014 16:19:24

    Come posso creare un programma in VBA excel che chieda all'utente tre numeri e li disponga poi in ordine crescente?



  • di Vecchio Frac data: 20/05/2014 16:34:27

    Il professore, a scuola, ha dato altre informazioni o questo è tutto quello che abbiamo?





  • di lepat (utente non iscritto) data: 20/05/2014 17:15:53

    Una delle tante possibili soluzioni
     
    Sub a()
    For R = 1 To 3
      Cells(R, 1) = InputBox("numero " & i)
    Next
    Range("A1:A3").Sort key1:=Range("a1"), order1:=xlAscending, Header:=xlNo, DataOption1:=xlSortTextAsNumbers
    
    End Sub
    



  • di lepat (utente non iscritto) data: 20/05/2014 17:24:37

    ho cambiato una r con una i
     
    Sub a()
    For r = 1 To 3
      Cells(r, 1) = InputBox("numero " & r)
    Next
    Range("A1:A3").Sort key1:=Range("a1"), order1:=xlAscending, Header:=xlNo, DataOption1:=xlSortTextAsNumbers
    
    End Sub



  • di lepat (utente non iscritto) data: 20/05/2014 23:20:11

    oppure senza utilizzare funzioni di excel
     
    Sub b()
    Dim arr()
    n = 3
    ReDim arr(n)
    For r = 0 To n - 1
      arr(r) = Val(InputBox("numero " & r + 1))
    Next
    For i = 0 To n - 2
        For j = i + 1 To n - 1
          If arr(i) > arr(j) Then
            strTemp = arr(i)
            arr(i) = arr(j)
            arr(j) = strTemp
          End If
        Next j
    Next i
    For r = 0 To n - 1
      s = s & arr(r) & ","
    Next
    MsgBox s
    End Sub



  • di francesca24 (utente non iscritto) data: 21/05/2014 23:38:26

    Grazie lepat! Visto che però devo anche saperlo spiegare, fino al ciclo For...Next ci sono, Header e DataOption li ho omessi visto che non li abbiamo ancora studiati (ho controllato e funziona comunque). Qual è la funzione di .Sort key1 e order1?



  • di lepat (utente non iscritto) data: 22/05/2014 07:50:39

    sort è il metodo che fa l'ordinamento
    key1 indica la colonna su cui fare l'ordinamento
    order1 indica se farlo crescente o decrescente, puoi anche eliminarlo



  • di francesca24 (utente non iscritto) data: 31/05/2014 17:26:52

    Il professore ha detto che va bene ma che vorrebbe lo facessi con la struttura If...



  • di lepat (utente non iscritto) data: 31/05/2014 18:02:32

    Francesca, almeno guarda tutte le risposte, il codice con le if te l'ho già allegato



  • di francesca24 (utente non iscritto) data: 02/06/2014 20:57:25

    non me n'ero accorta, ma ci capisco poco e nulla. se proprio non può essere semplificato, puoi almeno spiegarmelo?



  • di lepat (utente non iscritto) data: 02/06/2014 22:21:40

    per fare una cosa fatta bene avrei bisogno di sapere cosa sai di vba, gli array li conosci ?
    quel codice è fatto per ordinare una serie di numeri, se i numeri sono soltanto 3 forse si può semplificare.



  • di lepat (utente non iscritto) data: 02/06/2014 23:08:08

    questo lo capisci ?
     
    Sub aaa()
    a = 7: b = 1: c = 3
    If a < b And b < c Then
      s = a & "," & b & "," & c
      ElseIf a < c And c < b Then
        s = a & "," & c & "," & b
      ElseIf b < a And a < c Then
        s = b & "," & a & "," & c
      ElseIf b < c And c < a Then
        s = b & "," & c & "," & a
      ElseIf c < b And b < a Then
        s = c & "," & b & "," & a
      Else
        s = c & "," & a & "," & b
      End If
    
    MsgBox s
    
    End Sub