Lista dinamica

di il
42 risposte

Lista dinamica

Buongiorno, sto cercando di ottenere un elenco dinamico di tutti quei prodotti che contengono delle MP (Materie Prime) in combinazione uguale o simile ai criteri inseriti. E' una sorta di Vlookup ma considerando più criteri e soprattutto, arrotondandoli. Ho provato a combinare la funzione INDEX + MATCH ma non riesco ad ottenere quello che cerco. Lo scopo è quello di trovare tutti i prodotti che contengono quelle dosi di materie prime, forse le formule matriciali potrebbero essere utili ma non riesco a risolvere.

Grazie mille

ALLEGATO EXCEL: https://drive.google.com/file/d/1NOgE46KUOWMt1KzCdOkE10GKzke1xpLQ/view?fbclid=IwAR1-cCdhbS-TtBePXgn_-cY6GdInJaqJTu1C7FL8573VpM5k5gFmaC1KLPQ

42 Risposte

  • Re: Lista dinamica

    Con una macro è sicuramente fattibile, ma dovresti comunque precisare cosa intendi per arrotondamento, +- quanto ?
  • Re: Lista dinamica

    patel ha scritto:


    Con una macro è sicuramente fattibile, ma dovresti comunque precisare cosa intendi per arrotondamento, +- quanto ?
    Grazie mille per avermi risposto, molto gentile. Credo che l'ideale sarebbe poter modificare il margine in base alle esigenze (sia tramite codice sia tramite una della di riferimento). Al momento mi viene in mente una funzione IF in cui se il valore é uguale ad una cella * % allora c'è corrispondenza . Sinceramente non saprei come fare con una macro scritta in vba... Sapresti aiutarmi?
  • Re: Lista dinamica

    L'esempio postato è realistico anche per quanto riguarda la posizione del risultato ? sei poi in grado di adattare il codice ?
  • Re: Lista dinamica

    patel ha scritto:


    L'esempio postato è realistico anche per quanto riguarda la posizione del risultato ? sei poi in grado di adattare il codice ?
    Ho provato ad ottenere una soluzione "alla buona" utilizzando una formula matriciale ma è piuttosto macchinosa. In allegato un file di layout reale. Ho pensato di impostarlo così perché:

    1. Non tutte le MP dei criteri di ricerca devono essere impostate (un prodotto non deve per forza contenerle tutte), di conseguenza in verticale si può applicare un filtro facilmente e impostare i valori in quantità dei soli valori interessati

    2. Con alta probabilità le MP aumenteranno così come i prodotti e dovrei occuparmi solo di estendere il codice su altre righe, non credo sia una grossa sfida. Sarebbe ambizioso poter vedere la lista dei prodotti disponibili "cambiare" in base ai criteri di ricerca, come se fosse un elenco dinamico ma non so se sia qualcosa di fattibile, per me almeno. Di conseguenza andrebbe bene aggiungere un riquadro tra le due colonne dove indica i prodotti compatibili.

    https://drive.google.com/open?id=1xtvmVCl7waaeij9qnO3X5t2ThDUWzu2L

    Grazie davvero, non sono bravo con VBA anche se ho seguito un corso, non ho mai avuto la possibilità di studiarlo per bene.
  • Re: Lista dinamica

    Dove il risultato ? dove la tolleranza ? comunque hai complicato troppo il quesito iniziale, ti posso fare la macro per 3 criteri, l'ampliamento poi lo fai tu. Altra domanda, le condizioni devono essere tutte soddisfatte o ne basta una ?
  • Re: Lista dinamica

    patel ha scritto:


    Dove il risultato ? dove la tolleranza ? comunque hai complicato troppo il quesito iniziale, ti posso fare la macro per 3 criteri, l'ampliamento poi lo fai tu. Altra domanda, le condizioni devono essere tutte soddisfatte o ne basta una ?
    Ti chiedo scusa, fantasticavo! Non so quanto siano più complicate le cose che vorrei quindi io mi permetto di chiedere tutto perchè magari sono sciocchezze per te. Sarebbe anche utile vedere i prodotti compatibili individuati e le corrispondenti MP che contiene (ripeto, non so se sia facile).

    - Tutte le condizioni devono essere rispettate. Faccio un esempio per capirci: Se devo creare un nuovo prodotto con le materie prime in determinate quantità, prima di inserire un nuovo prodotto sul listino verifico se ho qualcosa in catalogo simile. Di conseguenza Tutte le MP che imposto devono essere rispettate (e alcune non devono esserci infatti sono a 0)

    Va bene se lo fai per 3 MP, ci mancherebbe altro!

    https://drive.google.com/open?id=1dsdW21YMT2KqltJN_xeSMSo5VbS1dp_b

    Grazie!
  • Re: Lista dinamica

    Prova questa
    Sub cerca()
    Set sh1 = Sheets(1)
    Set sh2 = Sheets(2)
    LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row ' ultima riga utile
    dr = 2
    ncol = 9 ' numero criteri
    scarto = sh1.Range("C2")
    For r = 2 To LR
      n = 0
      For c = 1 To ncol
        dif = Abs(sh2.Cells(r, c + 1) - sh1.Cells(c + 2, "B"))
        If dif <= sh2.Cells(r, c + 1) * scarto Then
          n = n + 1
        End If
      Next
      If n = ncol Then
        sh2.Range("A" & r & ":J" & r).Copy Range("I" & dr)
        dr = dr + 1
      End If
    Next
    End Sub
  • Re: Lista dinamica

    patel ha scritto:


    Prova questa
    Sub cerca()
    Set sh1 = Sheets(1)
    Set sh2 = Sheets(2)
    LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row ' ultima riga utile
    dr = 2
    ncol = 9 ' numero criteri
    scarto = sh1.Range("C2")
    For r = 2 To LR
      n = 0
      For c = 1 To ncol
        dif = Abs(sh2.Cells(r, c + 1) - sh1.Cells(c + 2, "B"))
        If dif <= sh2.Cells(r, c + 1) * scarto Then
          n = n + 1
        End If
      Next
      If n = ncol Then
        sh2.Range("A" & r & ":J" & r).Copy Range("I" & dr)
        dr = dr + 1
      End If
    Next
    End Sub
    Ti ringrazio sinceramente, funziona davvero alla grande. Non ci sarei mai riuscito da solo!

    Mi permetto di chiederti come fare per estendere questo codice. Dovrei estenderlo al limite solo per aumentare la lista dei prodotti e dei criteri di ricerca seguendo lo schema già presente. Sicuramente devo aumentare il numero di criteri al momento fisso a 9 ma non riesco ad individuare altro. Grazie mille. Ti chiedo quest'ultimo aiuto per poter utilizzare il tuo lavoro al meglio.
  • Re: Lista dinamica

    Devi solo modificare il numero di criteri
  • Re: Lista dinamica

    patel ha scritto:


    Devi solo devo il numero di criteri
    Ciao, non ho ben capito questo messaggio.

    ncol = 9 ' numero criteri

    Devo solo cambiare il "9" in un altro numero e non c'è bisogno di cambiare qualcosa per la lista dei prodotti? Ho capito questo.

    Quindi se devo aggiungere 200 prodotti in lista e avere 30 criteri in totale mi basterà fare questa modifica:

    ncol = 30 ' numero criteri


    Aspetto una tua conferma
  • Re: Lista dinamica

    Scusami, ho corretto il post precedente, hai capito bene, il numero dei prodotti è calcolato dalla riga
    LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row ' ultima riga utile
    quindi devi solo cambiare il "9" in un altro numero
  • Re: Lista dinamica

    patel ha scritto:


    Scusami, ho corretto il post precedente, hai capito bene, il numero dei prodotti è calcolato dalla riga
    LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row ' ultima riga utile
    quindi devi solo cambiare il "9" in un altro numero
    Ti ringrazio per l'ennesima volta. Buona serata e complimenti per le tue conoscenze, invidiabili!
  • Re: Lista dinamica

    Dimenticavo, se vuoi cambiare il numero di criteri e vuoi visualizzare nel risultato tutti gli MP devi anche modificare la colonna J nella riga
    sh2.Range("A" & r & ":J" & r).Copy Range("I" & dr)
  • Re: Lista dinamica

    patel ha scritto:


    Dimenticavo, se vuoi cambiare il numero di criteri e vuoi visualizzare nel risultato tutti gli MP devi anche modificare la colonna J nella riga
    sh2.Range("A" & r & ":J" & r).Copy Range("I" & dr)
    Ok grazie mille! Ciao!
Devi accedere o registrarti per scrivere nel forum
42 risposte