Excel e gli applicativi Microsoft Office Estrazione in altro foglio dei dieci valori più alti

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

    Zillo_
    Partecipante

      Buongiorno a tutti,

      avrei bisogno di estrarre i 10 valori più alti (compresi i duplicati) delle colonne C , I , O , U del file in allegato.

      La particolarità della richiesta è che avrei bisogno di farlo su un foglio diverso e soprattutto che accanto al valore venisse riportato anche il testo corrispondente (colonne A , G , M , S).

      Qualcuno riesce ad aiutarmi???

      Spero di essere stato chiaro nella descrizione del problema.

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

      alexps81
      Moderatore
        55 pts

        Ciao, ho modificato il titolo del messaggio perché scritto in maiuscolo (che equivale a gridare). Ho anche sintetizzato meglio la questione.

        Per quanto riguarda la soluzione al tuo problema, hai bisogno che sia risolto con le Formule o va bene anche in VBA?

        #51188 Score: 1 | Risposta

        gianfranco55
        Partecipante
          90 pts

          ciao

          che versione hai di excel

          365

          =INCLUDI(DATI.ORDINA(LET(F;STACK.VERT(SCEGLI.COL(LIB.SERVIZIO!A7:W1000;1;3);SCEGLI.COL(LIB.SERVIZIO!A7:W1000;7;9);SCEGLI.COL(LIB.SERVIZIO!A7:W1000;13;15);SCEGLI.COL(LIB.SERVIZIO!A7:W1000;19;21));FILTRO(F;SCEGLI.COL(F;1)<>0));2;-1);10)

           

          #51189 Score: 0 | Risposta

          Zillo_
          Partecipante

            Innanzitutto chiedo scusa per il carattere del titolo, non era mia intenzione "gridare".

            Diciamo che entrambe le soluzioni potrebbero andare bene, preferirei una via tramite formule visto che ho già delle macro che girano e non volevo affidarmi solo al vba.

            #51194 Score: 0 | Risposta

            alexps81
            Moderatore
              55 pts

              Zillo_ ha scritto:

              Diciamo che entrambe le soluzioni potrebbero andare bene

              Ciao, io non posseggo la versione 365 quindi non posso provare la proposta di gianfranco55 (ma non ho dubbi sul fatto che funzioni al 100%).

              Se vuoi un'alternativa con una macro prova questa...

              Crea un nuovo foglio e lo rinomini "Estrai", poi in un Modulo Standard inserisci questo codice:

              Option Explicit
              
              Sub estrai_e_ordina()
                  Dim arr() As Variant
                  Dim tempArr(1) As Variant
                  Dim rng As Range
                  Dim ur As Long, i As Long, j As Long, k As Byte
                  Dim c As Byte
                  Dim uc As Integer
                  Dim wsEstrai As Worksheet
                  
                  Set wsEstrai = ThisWorkbook.Worksheets("Estrai")
                  
                  For c = 1 To 19 Step 6
                      ur = Foglio2.Cells(Rows.Count, c).End(xlUp).Row
                  
                      Set rng = Range(Foglio2.Cells(7, 1), Foglio2.Cells(ur, 3))
                      
                      ReDim arr(0 To rng.Rows.Count - 1, 1)
                      For i = 1 To rng.Rows.Count
                          arr((i - 1), 0) = Foglio2.Cells(i + 6, c).Value
                          arr((i - 1), 1) = Foglio2.Cells(i + 6, c + 2).Value
                      Next i
                      
                      For i = LBound(arr, 1) To UBound(arr, 1)
                          For j = i + 1 To UBound(arr, 1)
                              If arr(i, 1) < arr(j, 1) Then
                                  tempArr(0) = arr(i, 0)
                                  tempArr(1) = arr(i, 1)
                                  arr(i, 0) = arr(j, 0)
                                  arr(i, 1) = arr(j, 1)
                                  arr(j, 0) = tempArr(0)
                                  arr(j, 1) = tempArr(1)
                              End If
                          Next j
                      Next i
                      
                      With wsEstrai
                          uc = .Cells(3, Columns.Count).End(xlToLeft).Column
                          If uc = 1 Then uc = -1
                          
                          .Cells(1, uc + 2).Value = "Settimana " & k + 1
                          .Cells(2, uc + 2).Value = "Prodotto"
                          .Cells(2, uc + 3).Value = "Quantità"
                          
                          For i = 1 To 10
                              .Cells(i + 2, uc + 2).Value = arr(i - 1, 0)
                              .Cells(i + 2, uc + 3).Value = arr(i - 1, 1)
                          Next i
                          k = k + 1
                      End With
                  Next c
                  
                  wsEstrai.Columns.AutoFit
                  wsEstrai.Activate
                  
                  Set wsEstrai = Nothing
                  MsgBox "Fatto!", vbInformation
              End Sub

              Ciao.

               

              #51195 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                gianfranco55 ha scritto:

                365

                Gianfranco please spiega   

                Grazie!

                #51198 Score: 0 | Risposta

                gianfranco55
                Partecipante
                  90 pts

                  ciao

                  vecchio trentino

                  LET(F...........è come la vecchia formula che creavi per non ripetere la formula

                  STACK.VERT(..........traduciamolo in metti uno sotto l'altro

                  SCEGLI.COL(LIB.SERVIZIO!A7:W1000;1;3);

                  SCEGLI.COL(LIB.SERVIZIO!A7:W1000;7;9);

                  SCEGLI.COL(LIB.SERVIZIO!A7:W1000;13;15);

                  SCEGLI.COL(LIB.SERVIZIO!A7:W1000;19;21)

                  scelgo le colonne che mi interessa mettere una sotto l'altra

                  sono in coppia

                  metti una sotto l'altra le colonne

                  1-3

                  7-9

                  13-15

                  19-21

                   

                  fatto questo elimino gli zeri che si creano per le celle vuote (ho messo 1000 righe) usando FILTRO

                  FILTRO(F;SCEGLI.COL(F;1)

                  le metto in ordine decrescente con

                  DATI.ORDINA(......colonna da filtrare 2 (i numeri) e -1 per il decrescente

                   

                  fatto questo utilizzo INCLUDI(..............10)

                  che mi estrae le prima 10 righe

                   risultato

                  #51200 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Caspita una bomba   

                    Ma la differenza tra STACK.VERT e A.COL (=TOCOL) ?

                    #51202 Score: 1 | Risposta

                    gianfranco55
                    Partecipante
                      90 pts

                      cio

                      A.COL

                      mette tutto su una colonna

                      perciò dovresti usare 2 formule

                      =A.COL(SCEGLI.COL(LIB.SERVIZIO!A7:V1000;1;7;13;19);3)

                      =A.COL(SCEGLI.COL(LIB.SERVIZIO!A7:V1000;3;9;15;21);3)

                       

                      ha di bello che puoi eliminare di defaul gli errori e le vuote

                      con il 3

                      #53215 Score: 1 | Risposta

                      LukeReds
                      Partecipante
                        13 pts

                        ciao

                        soluzione per excel 365 (matriciale, si espande da sola) per colonne A e C di LIB.SERVIZIO

                        =LET(l;LIB.SERVIZIO!C7:C100;STACK.ORIZ(LET(c;SE(l>=GRANDE(l;10);l);GRANDE(c;RIF.RIGA(INDIRETTO("A1:A"&CONTA.NUMERI(c)))));INDICE(LIB.SERVIZIO!A7:A100;A.COL(UNICI(SE(LET(c;SE(l>=GRANDE(l;10);l);GRANDE(c;RIF.RIGA(INDIRETTO("A1:A"&CONTA.NUMERI(c)))))=A.RIGA(l);SEQUENZA(;90);A));3))))

                         

                         

                      Login Registrati
                      Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
                      Rispondi a: Estrazione in altro foglio dei dieci valori più alti
                      Gli allegati sono permessi solo ad utenti REGISTRATI
                      Le tue informazioni: