Sviluppare funzionalita su Microsoft Office con VBA Ricerca del massimo in un area

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

    Carlos Giorgio

      Buongiorno a tutti, sono nuovo nel forum e ho una domanda:  
      Nel foglio1 ho i seguenti dati:
            A            B         C         D
      Articolo     Pr1     Pr2     Pr3
      Apple         175    176,5   175

      Se la larghezza della colonna C è 3,71 (in modo che in C2 si vede 177 e non più 176,5 che è il valore inserito nella cella) la seguente macro mi da "non trovato", invece se la larghezza della colonna C è 5,57 (in modo di visualizzare in C2 il valore 176,5) la macro scrive nella cella F2 l'indirizzo della cella contenente il massimo dell'area (cioè C2).
      Qualcuno sa spiegarmi perché questo è così e se si può evitare questo problema. Grazie in anticipo e cordiali saluti

      Sub SearchMax1()
      Dim rng As Range
      Dim search1 As Range

      Set rng = Range(Cells(2, 2), Cells(2, 4))
      Set search1 = rng.Find(Application.WorksheetFunction.Max(rng), LookIn:=xlValues, lookAt:=xlWhole)
      If Not search1 Is Nothing Then
      Range("F2") = search1.Address
      Else
      Range("F2") = "Non trovato"
      End If

      End Sub

      #18547 Score: 0 | Risposta

      Marius44
      Moderatore
        58 pts

        Ciao

        In tutta sincerità non capisco perchè si comporti così.

        Se la tua non è pura curiosità ma ti serve ottenere l'indirizzo della cella contenente il valore massimo (diverso da quello che appare) prova con la tua macro leggermente implementata

        Sub SearchMax1()
        Dim rng As Range
        Dim search1 As Range
        Set rng = Range(Cells(2, 2), Cells(2, 4))
        Set search1 = rng.Find(mx, LookIn:=xlValues, lookAt:=xlWhole)
        mx = Application.Max(rng)
        If Not search1 Is Nothing Then
          Range("F2") = search1.Address
        Else
          Range("F2") = "Non trovato"
          cn = Application.WorksheetFunction.Match(mx, rng, 0) + 1
          LC = Replace(Cells(1, cn).Address(False, False), "1", "")
          Range("F3") = "$" & LC & "$" & 2
        End If
        End Sub
        

        Fai sapere. Ciao,

        Mario

         

        #18549 Score: 0 | Risposta

        Luca73
        Partecipante
          58 pts

          Ciao ho fatto un minimo di ricerca in Google e mi pare di aver capito che

           LookIn:=xlValues cerca nei valori come visualizzati

          basta sostituire LookIn:=xlValues con LookIn:=xlFormulas

          Ciao

          Luca

          #18553 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Luca73 ha scritto:

            xlValues cerca nei valori come visualizzati

            Questa è una (brutta) sorpresa anche per me. Grazie per l'informazione

            #18555 Score: 0 | Risposta

            Marius44
            Moderatore
              58 pts

              E' proprio vero: non si finisce mai d'imparare.

              Grazie Luca73

               

              Ciao,

              Mario

              #18559 Score: 0 | Risposta

              Carlos Giorgio

                Complimenti, gentilissimi e velocissimi, funzionano tutte e due le soluzioni!
                Grazie mille e cordiali saluti. 
                Un ultima domanda come devo fare per chiudere la discussione come risolta?

                #18560 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Carlos Giorgio ha scritto:

                  come devo fare per chiudere la discussione come risolta?

                  Nel tuo primo post, accanto al titolo, c'è una combobox con le due voci pertinenti.

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Ricerca del massimo in un area
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: