You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Ordinamento Ambi dal più piccolo al più grande
[RISOLTO] Ordinamento Ambi dal più piccolo al più grande2018-03-12T10:18:59+01:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Ordinamento Ambi dal più piccolo al più grande

Taggato: 

Visualizzazione 14 filoni di risposte
  • Autore
    Post
    • AvatarFrancis
      Partecipante
        Post totali: 10

        Una buona sera a tutti mi sono appena iscritto vorrei trovare la soluzione al mio quesito, il mio problema e trovare 3 ambi concatenati in un intervallo e ordinarli dal più piccolo al più grande in poche parole piccolo 1 piccolo 2 piccolo 3 , i tre ambi da ricercare sono il primo X5 il secondo Y8 il terzo Z5 questi 3 ambi sono presenti nel intervallo L8:S8, vorrei ordinarli come esempio nel file allegato nel intervallo X13:Z13, spero di essermi spiegato.

        http://www.filedropper.com/ordineambidalpipiccoloalpigrande

        Saluti.

         

        • Questo topic è stato modificato 3 anni, 7 mesi fa da sidsid.
      • sidsid
        Moderatore
          Post totali: 754

          Ciao
          A me sembra che per come sono inseriti, vanno dal più grande al più piccolo
          45-48 45-47 45-46
          Sbaglio?

        • AvatarFrancis
          Partecipante
            Post totali: 10

            Ciao sid proviamo la formula in modo da valutare se il risultato è giusto.

          • sidsid
            Moderatore
              Post totali: 754

              Se tu vuoi ordinare dal più piccolo, il risultato corretto è

              45-46

              45-47

              45-48

              Quei valori sono stringhe.

              Se cerchi una soluzione con le formule, sono il meno indicato; se vuoi ti consiglio una soluzione con vba

               

              • AvatarFrancis
                Partecipante
                  Post totali: 10

                  Con le formule sarebbe l ideale valutiamo con la macro.

              • sidsid
                Moderatore
                  Post totali: 754

                  Un esempio:

                  Sub ORDINA()
                  
                  Dim Appoggio As Variant, X As Variant, Y As Variant, v As Variant
                  v = Array(Range("X5").Value, Range("Z5").Value, Range("Y8").Value)
                  
                  For X = LBound(v) To UBound(v) - 1
                      For Y = X + 1 To UBound(v)
                          If v(X) > v(Y) Then
                              Appoggio = v(X)
                              v(X) = v(Y)
                              v(Y) = Appoggio
                          End If
                      Next Y
                  Next X
                  With Application
                      Range("X13:Z13") = .Transpose(.Transpose(v))
                  End With
                  End Sub
                  • AvatarFrancis
                    Partecipante
                      Post totali: 10

                      In attesa che qualcuno riesce a trovare una soluzione con una formula prendiamo in considerazione questa macro, ringrazio sid della sua disponibilità e prontezza.

                      Saluti

                      :good:

                  • sidsid
                    Moderatore
                      Post totali: 754

                      Per favore…diamoci del tu :yes:

                      Dalla tua risposta immagino che la macro funziona bene.

                    • AvatarFrancis
                      Partecipante
                        Post totali: 10

                        Ciao sid o valutato adesso la macro ma funziona al contrario l ordine deve avvenire dal intervallo L8:S8 dunque 45-48 , 47-48, 45-46, spero di essermi spiegato.

                      • sidsid
                        Moderatore
                          Post totali: 754

                          Ma allora che c’entrano gli ambi in X5 Y8 Z5?

                        • AvatarFrancis
                          Partecipante
                            Post totali: 10

                            Gli ambi X5 Y8 Z5 servono per fare il confronto con l intervallo L8:S8 ripropongo il file

                            http://www.filedropper.com/ordineambi_2

                            • Questa risposta è stata modificata 3 anni, 7 mesi fa da AvatarFrancis.
                          • sidsid
                            Moderatore
                              Post totali: 754

                              Quindi:
                              – devo trovare i 3 ambi minori nell’intervallo L8:S8
                              – ordinarli dal più piccolo al più grande
                              – inserirli in X13:Z13

                              Corretto?

                            • AvatarFrancis
                              Partecipante
                                Post totali: 10

                                Bravo corretto.

                              • sidsid
                                Moderatore
                                  Post totali: 754

                                  Prova la macro cos’ rivista

                                  Sub ORDINA()
                                  Dim j As Long, nIncr As Long
                                  Dim Appoggio As Variant, X As Variant, Y As Variant, v As Variant, mioArray() As Variant
                                  Dim ws1 As Worksheet
                                  
                                  Set ws1 = Sheets("Foglio1") ' nome tuo foglio
                                  v = ws1.Range("L8:S8").Value
                                  
                                  For j = LBound(v, 2) To UBound(v, 2)
                                      If Not v(1, j) = vbNullString Then
                                          ReDim Preserve mioArray(nIncr)
                                          mioArray(nIncr) = v(1, j)
                                          nIncr = nIncr + 1
                                      End If
                                  Next j
                                  
                                  For X = LBound(mioArray) To UBound(mioArray) - 1
                                      For Y = X + 1 To UBound(mioArray)
                                          If mioArray(X) < mioArray(Y) Then
                                              Appoggio = mioArray(X)
                                              mioArray(X) = mioArray(Y)
                                              mioArray(Y) = Appoggio
                                          End If
                                      Next Y
                                  Next X
                                  '
                                  ReDim Preserve mioArray(2)
                                  With Application
                                      ws1.Range("X13:Z13") = .Transpose(.Transpose(mioArray))
                                  End With
                                  Set ws1 = Nothing
                                  End Sub
                                • AvatarFrancis
                                  Partecipante
                                    Post totali: 10

                                    La macro funziona l ordine deve escludere gli altri ambi presenti nel intervallo L8:S8 il confronto riguarda solo i tre ambi .

                                  • sidsid
                                    Moderatore
                                      Post totali: 754

                                      Perdonami ma qualcosa non quadra
                                      Mi hai detto che:
                                      – devo prendere in considerazione gli ambi di L8:S8
                                      – prendere i tre minori
                                      – ordinarli dal più piccolo al più grande
                                      é quello che fa la macro.

                                      Se invece dici che il confronto riguarda i tre ambi di X5,Z5,Y8, allora andava bene la macro precedente

                                    • AvatarFrancis
                                      Partecipante
                                        Post totali: 10

                                        Sid provo tutto con calma nel pomeriggio, ti informo.

                                        Saluti

                                         

                                        • AvatarFrancis
                                          Partecipante
                                            Post totali: 10

                                            Ciao sid la prima macro sembra più funzionante, riteniamo risolto eventuali mie modifiche ci risentiamo.

                                            Grazie

                                             

                                            • Questa risposta è stata modificata 3 anni, 7 mesi fa da AvatarFrancis. Motivo: RISOLTO
                                      Visualizzazione 14 filoni di risposte
                                      • Il topic ‘[RISOLTO] Ordinamento Ambi dal più piccolo al più grande’ è chiuso a nuove risposte.