Risultati da 1 a 18 di 18

Discussione: Lista univoca con condizioni



  1. #1
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Lista univoca con condizioni

    Buona sera a tutti,
    Sono interessato a creare una lista unica, con VBA, che tenga conto di alcune condizione, data inizio data fine e azienda o cliente di rifermento.....
    In allegato file di riferimento...
    Grazie
    Ultima modifica fatta da:Gerardo Zuccalà; 21/09/15 alle 00:30 Motivo: visualizzazioni allegato
    Windows8.1 office 2010

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao Vincenzo,
    potresti provare a scrivere un codice con la stessa logica che useresti usando le formule.... cioè:
    fai fare un ciclo che valuti ogni riga (ciclo For) e che soddisfi le tre condizioni (if).

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. #3
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    Ciao Cromagno,
    Quello che tu chiami (ciclo For) che soddisfi le condizioni posso ottenerlo registrando una macro?
    E in che maniera?
    Purtroppo conosco molto,molto poco il Vba
    Grazie
    Windows8.1 office 2010

  4. #4

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Buongiorno,
    no, col registratore di macro non puoi ottenere un ciclo for e nemmeno prendere in considerazione le varie condizioni con "if".
    Adesso ho solo il cellulare... pomeriggio,se non dovesse rispondere nessun altro, provo a scrivere qualcosa.
    Ciao

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  5. #5
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    Ok Grazie mille
    Windows8.1 office 2010

  6. #6
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3216
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Salve a tutti.
    Di seguito posto il codice per le tue estrazioni con 3 condizioni. La Sub è da inserire in un Modulo Standard ed associare a dei pulsanti (Modulo, non ActiveX) da mettere nel Foglio Aziende e nel Foglio Clienti.
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Sub Cerca3Condiz()
    Dim az As String, dat1 As Date, dat2 As Date, ric As String, dat As Date
    Dim rg As Long, a As Integer, i As Integer
        az = Cells(5, 1).Text: dat1 = Cells(5, 2): dat2 = Cells(5, 3)
        If az = "" Or dat1 = "" Or dat2 = "" Then 'se uno manca avvisa ed esce
            MsgBox "Manca uno dei dati essenziali.", 0 + 16, "Errore"
            Exit Sub
        End If
        rg = Sheets("DataBase").Cells(Rows.Count, 1).End(xlUp).Row
        a = 9
        With Sheets("DataBase")
            For i = 4 To rg
                If ActiveSheet.Name = "Stat_Azienda" Then
                    ric = .Cells(i, 4).Text  'assume azienda
                ElseIf ActiveSheet.Name = "Stat_Cliente" Then
                    ric = .Cells(i, 3).Text  'assume Cliente
                End If
                dat = .Cells(i, 2)
                If ric = az And dat >= dat1 And dat <= dat2 Then
                    Cells(a, 1) = .Cells(i, 3)
                    Cells(a, 2) = .Cells(i, 5).Value
                    a = a + 1
                End If
            Next i
        End With
    End Sub
    Fammi sapere se va bene. Ciao,
    Mario

  7. I seguenti utenti hanno dato un "Like"


  8. #7
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    Ciao Marius44,
    per prima cosa voglio ringraziarti x aver preso in considerazione la mia richiesta....
    ho inserito il codice suggerito ma mi dà errore ......vedi allegato
    attendo tuoi suggerimenti
    Grazie
    Ultima modifica fatta da:Gerardo Zuccalà; 21/09/15 alle 17:06 Motivo: allegato non visulizzato
    Windows8.1 office 2010

  9. #8

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Ciao Vincenzo,
    non so se ho capito bene, ma quello che chiedi si può ottenere con le formule.

    Questa per i clienti:

    =SE.ERRORE(INDICE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!C4:C95;0);PICCOLO(SE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!C4:C95;0)>0;RIF.RIGA(INDIRETTO("1:"&RIGHE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!C4:C95;0)))));RIF.RIGA(INDIRETTO("1:"&RIGHE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!C4:C95;0))))));"")

    questa per l'importo:

    =SE.ERRORE(INDICE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!E4:E95;0);PICCOLO(SE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!E4:E95;0)>0;RIF.RIGA(INDIRETTO("1:"&RIGHE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!E4:E95;0)))));RIF.RIGA(INDIRETTO("1:"&RIGHE(SE(DataBase!D4:D95=stat_Azienda!$A$5;DataBase!E4:E95;0))))));"")

    Sono due formule matriciali multicella, per l'attivazione: ALT+SHIFT+INVIO

    Allego file.

    Fammi sapere forse ho capito male la tua richiesta.

  10. I seguenti utenti hanno dato un "Like"


  11. #9

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Questo il file completo

  12. #10
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3216
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Un errore per non aver testato dopo le dichiarazioni.
    Sostituisci, per favore, questa riga
    Codice: 
    Dim az As String, dat1 As Date, dat2 As Date, ric As String, dat As Date
    con questa
    Codice: 
    Dim az As String, dat1 As Variant, dat2 As Variant, ric As String, dat As Date
    Grazie e scusa.
    Fammi sapere se funziona a dovere. Ciao,
    Mario

  13. #11

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4019
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao Vincenzo,
    vedo che non hai di che scegliere... :)

    Per quanto riguarda il codice di Mario (premetto non son convinto di aver capito il perchè non funzionasse in quel modo... anche se un'idea me la son fatta), prova a sostituire questa riga:

    Codice: 
    If az = "" Or dat1 = "" Or dat2 = "" Then 'se uno manca avvisa ed esce
    con questa:

    Codice: 
    If az = "" Or dat1 = Empty Or dat2 = Empty Then 'se uno manca avvisa ed esce
    [EDIT]
    Scusa Mario, ci siamo sovrapposti ;)

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  14. #12
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3216
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    @cromagno
    scusa di che? siamo qui per aiutare, se possibile. Comunque o col tuo suggerimento o col mio, funziona.
    Ciao a tutti,
    Mario

  15. I seguenti utenti hanno dato un "Like"


  16. #13
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    ciao Ges,
    le tue formule, sono quelle che uso attualmente e funzionano bene.....unico handicap è che avendo un database lunghissimo impiega parecchio tempo x darmi i risultati
    motivo per cui chiedevo la soluzione con VBA che presumo sia più veloce.....comunque grazie x avermi dedicato del tempo...

    Marius e Cromagno,
    le vostre soluzioni hanno risolto l'errore iniziale e funzionano entrambe.....Grazie ancora
    Ultima, cosa se posso approfittare della vostra pazienza, vorrei che la macro si attivi anche se cambio i dati in una delle tre celle che sono le condizioni....
    chiedo troppo?
    spero di essere stato chiaro
    Grazie

    P.S. OPS.... guardando meglio il il file e quindi il risultato del VBA l'elenco che viene fuori non è univoco.....alcune voci si dupplicano
    Ultima modifica fatta da:Vincenzo Damiani; 21/09/15 alle 20:59
    Windows8.1 office 2010

  17. #14
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    ciao Marius44,
    guardando meglio i dati che vengono fuori dal tuo suggerimento, mi sono accorto che non mi dà il risultato che cerco.....cioè una lista UNIVOCA dei clienti
    Io vorrei che il cliente_x o cliente_y venga citato una sola volta nella lista....puoi aiutarmi?
    Windows8.1 office 2010

  18. #15
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3216
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Ciao
    Sostituisci l'intera Sub con la seguente:

    Codice: 
    Option ExplicitOption Compare Text
    
    
    Sub Cerca3Condiz()
    Dim az As String, dat1 As Variant, dat2 As Variant, ric As String, dat As Date
    Dim rg As Long, a As Integer, i As Long, flag As Integer, k As Long
    Dim ext As String, prec As String, vprec As Double
        az = Cells(5, 1).Text: dat1 = Cells(5, 2): dat2 = Cells(5, 3)
        If az = "" Or dat1 = "" Or dat2 = "" Then 'se uno manca avvisa ed esce
            MsgBox "Manca uno dei dati essenziali.", 0 + 16, "Errore"
            Exit Sub
        End If
        rg = Sheets("DataBase").Cells(Rows.Count, 1).End(xlUp).Row
        a = 9
        With Sheets("DataBase")
            For i = 4 To rg
                If ActiveSheet.Name = "Stat_Azienda" Then
                    ric = .Cells(i, 4).Text     'assume azienda
                    ext = .Cells(i, 3).Text     'assume cliente
                ElseIf ActiveSheet.Name = "Stat_Cliente" Then
                    ric = .Cells(i, 3).Text     'assume Cliente
                    ext = .Cells(i, 4).Text     'assume azienda
                End If
                dat = .Cells(i, 2)
                If ric = az And dat >= dat1 And dat <= dat2 Then
                    flag = 0
                    For k = a To 9 Step -1  'controlla precedenti
                        prec = Cells(k, 1).Text 'assume precedente
                        If prec = ext Then 'se c'è già
                            vprec = Cells(k, 2).Value 'assume valore precedente
                            Cells(k, 2) = vprec + Cells(i, 5).Value 'somma col precedente e scrive totale
                            flag = 1
                        End If
                    Next k
                    If flag = 0 Then 'se non c'è scrive nome e somma
                        If ActiveSheet.Name = "Stat_Azienda" Then
                            Cells(a, 1) = .Cells(i, 3)
                        ElseIf ActiveSheet.Name = "Stat_Cliente" Then
                            Cells(a, 1) = .Cells(i, 4)
                        End If
                        Cells(a, 2) = .Cells(i, 5).Value
                        a = a + 1
                    End If
                End If
            Next i
        End With
    End Sub
    Provala e dimmi se va bene.Ciao,
    Mario

  19. #16
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    Perfetto Marius44,
    Funziona tutto alla perfezione.....Grazie, grazie, grazie mille
    Windows8.1 office 2010

  20. #17
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3216
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Grazie del tuo riscontro positivo .
    Se la tua domanda è stata risolta segna questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all’inizio di questa discussione, troverai il menu“Strumenti Discussione” quindi scegliere “Segna questo Thread come risolto”

  21. #18
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637
    Fatto,
    Grazie
    Windows8.1 office 2010

Discussioni Simili

  1. [Risolto] Lista univoca da tabella con duplicati
    Di D@nilo nel forum Domande su Excel in generale
    Risposte: 20
    Ultimo Messaggio: 05/03/17, 16:08
  2. [Risolto] Copia univoca record VBA
    Di camoncino nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 22/12/16, 01:31
  3. Spostare una lista in un altra lista filtrata
    Di walter.rosi nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 07/09/16, 12:03
  4. [Risolto] Estrarre lista univoca da una tabella
    Di Beppe nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 30/09/15, 22:48
  5. Lista univoca dinamica
    Di Toketta nel forum Domande su Excel in generale
    Risposte: 17
    Ultimo Messaggio: 04/09/15, 18:42

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •