ottenere valori in una colonna con condizione



  • ottenere valori in una colonna con condizione
    di Alexa (utente non iscritto) data: 20/08/2016 16:32:56

    Salve a tutti,
    sto realizzando uno scadenzario in excel. Su un primo sheet ho creato un database generale in modo da poter realizzare diverse interrogazioni. Sul secondo sheet vorrei far "pescare" ad excel un elenco di fornitori che abbiano nella colonna "da archiviare" un si.


    Grazie
    Alexa



  • di patel data: 20/08/2016 16:44:17

    dovrebbe bastare un cerca.verticale, ma ti conviene allegare un file di esempio con i dati ed il risultato desiderato




  • il cerca.vert non lo vedo bene...
    di Alexa (utente non iscritto) data: 20/08/2016 16:53:55

    ...e questo perchè non ho un elenco di fornitori di confronto. Ho solo una colonna in ui c'è un elenco di fornitori che "scadono" e che hanno un "si" o un "no" in funzione se vanno archiviati oppure no.
    Il mio obiettivo è fare un foglio in cui vengono pescati in automatico tutti i fornitori con il si.
    Ho allegato anche un file di esempio.
    La formula andrebbe inserita nella cella in giallo....




  • di patel data: 20/08/2016 17:18:28

    con una macro ti va bene ?
     
    Sub Macro2()
    With Sheets("SCADENZARIO")
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("A2:G" & LR).Select
        Selection.AutoFilter Field:=7, Criteria1:="SI"
        Selection.Resize(Selection.Rows.Count, 3).Copy Sheets("FORNITORI ARCHIVIATI").Range("A1")
        Selection.AutoFilter
    End With
    End Sub






  • di Alexa (utente non iscritto) data: 20/08/2016 18:12:47

    Grazie
    Purtroppo sono poco pratica di macro ma proverò a cercare tutorial su internet e proverò ad inserire la tua...

    Con Excel è cosa impossibile vero?




  • di alfrimpa data: 20/08/2016 19:46:55

    Ciao Alexa

    Come impossibile con Excel?

    La macro che ti ha scritto Patel (che saluto) fa proprio quello che hai chiesto.

    Per utilizzarla ti devi

    1) Aprire il tuo file
    2) Apri l'editor di vba con Alt+F11
    3) Dal menù Inserisci scegli Modulo
    4) Nella finestra a destra in alto copia e incolla la macro di Patel
    5) Torna al foglio ed esegui la macro

    Alfredo





  • di patel data: 20/08/2016 20:49:06

    Probabilmente si può fare anche con le formule, ma io non lo so fare





  • di Raffaele_53 data: 21/08/2016 02:36:11

    >>>Con Excel è cosa impossibile vero?
    No, però con tante righe diventerà pesante. VBA più leggero

    @patel
    Bella idea copiare il filtrato e tante volte io vado a fare dei For inutili
    Potresti anche integrarlo nel Worksheet_Change....colonna G

    @alfrimpa
    1) Aprire il tuo file
    2) Apri l'editor di vba con Alt+F11
    *3) Dal menù Inserisci scegli Modulo
    4) Nella finestra a destra in alto copia e incolla la macro di Patel
    5) Torna al foglio ed esegui la macro
    *6) Salva come xlsm

    *3) Nel caso che patel faccia Worksheet_Change, non và in un modulo, solo nel foglio attuale



  • di patel data: 21/08/2016 07:10:15

    non mi sembra adatto il Worksheet_Change per un principiante




  • GRAZIE
    di ALEXA (utente non iscritto) data: 23/08/2016 17:51:33

    Grazie a tutti per avermi risposto. Purtroppo non essendo pratica di macro non sono riuscita a risolvere il problema. Ho fatto la stessa richiesta anche su un altro forum (forumexcel) sul quale non volendo sono andata contro il regolamento e mi sono beccata anche una penalità per aver chiesto qui lo stesso quesito. Non era mia intenzione. Ho scritto su due forum diversi solo per una questione di tempo e quindi per velocizzare.
    Su forumexcel mi hanno fornito una soluzione che con excel 2013 funziona ma con excel 2007 no. Purtroppo con excel 2007 anche la nuova formula che mi hanno proposto non funziona (non so se sbaglio io oppure se c'è un errore nella formula) ma avendomi chiuso la discussione non ho avuto modo di comunicarglielo. Sono certa che lo leggeranno da qui.
    Vi ringrazio comunque.
    Un saluto
    Alexa



  • di patel data: 23/08/2016 20:25:07

    invece di fare crossposting dovresti spiegarti meglio, cosa significa "Purtroppo non essendo pratica di macro non sono riuscita a risolvere il problema" ? non sei riuscita ad inserire la macro e ad eseguirla ? non funziona come vorresti ?
    qual'è la soluzione che sul 2013 funziona ?





  • di alexa (utente non iscritto) data: 23/08/2016 20:49:04

    Non sono capace ad usare macro e non sono ad un livello avanzato di Excel visto che ho imparato da me tutto quello che so. Di sicuro la macro funzionerà, non ne ho dubbi. Mia intenzione era quella di cercare un supporto senza creare problema a nessuno. A questo punto rinuncio alla cosa e per evitare di parlare di discussioni affrontate su altro forum ti chiedo (se vuoi) di andarlo a vedere tu.
    Il post può anche essere cancellato. Vi ringrazio comunque tutti. Siete in gamba.
    Alexa



  • di Gianfranco data: 23/08/2016 21:28:58

    Ciao
    in foglio FORNITORI ARCHIVIATI cella A2
    =SE.ERRORE(INDICE(SCADENZARIO!$A$3:$A$10000;AGGREGA(15;6;RIF.RIGA($1:$10000)/(SCADENZARIO!$G$3:$G$10000="SI");RIF.RIGA(A1)));"")

    cella B2
    =SE.ERRORE(INDICE(SCADENZARIO!$B$3:$B$10000;AGGREGA(15;6;RIF.RIGA($1:$10000)/(SCADENZARIO!$G$3:$G$10000="SI");RIF.RIGA(B1)));"")

    cella c2
    =SE.ERRORE(INDICE(SCADENZARIO!$C$3:$C$10000;AGGREGA(15;6;RIF.RIGA($1:$10000)/(SCADENZARIO!$G$3:$G$10000="SI");RIF.RIGA(C1)));"")

    e tira in giù

    ciao



  • di Vecchio Frac data: 23/08/2016 22:13:00

    @Alexa perdonami ma vedo tre opportunità di riflessione:
    1) cit. "Non sono capace ad usare macro e non sono ad un livello avanzato di Excel visto che ho imparato da me tutto quello che so"
    ---> Sei stata bravissima se da zero hai affrontato un pachiderma come Excel. Le macro sono una cosa tra l'intermedio e l'avanzato ma non è per pochi eletti, e tutti ci possono riuscire.

    2) cit. "Mia intenzione era quella di cercare un supporto senza creare problema a nessuno. A questo punto rinuncio alla cosa"
    ---> Non hai creato problemi a nessuno, te lo assicuro. Non rinunciare a priori solo perchè ti sembra di non avere i mezzi adatti, certo ci vuole tempo e fatica ma alla fine tutti possono addomesticare queste famose "macro". L'importante è aver chiaro il problema da affrontare :)

    3) cit. " per evitare di parlare di discussioni affrontate su altro forum ti chiedo (se vuoi) di andarlo a vedere tu. Il post può anche essere cancellato."
    ---> Qui non si cancellano i post (e i thread) di nessuno. Inoltre come hai visto quando hai letto il nostro regolamento, e come hai constatato visto che nessuno ti ha rimproverata, qui il crossposting non è vietato (argomento caldo in questi giorni ^_^) come non lo è parlare di argomenti già trattati altrove.

    Perciò se le macro sono così ostiche vedi almeno se la soluzione di Gianfranco ti può aiutare (non ho seguito la discussione quindi non so se è pertinente o meno, devi valutarlo tu).





  • di Alexa (utente non iscritto) data: 23/08/2016 22:27:04

    @Gianfranco grazie per la tua soluzione ma da come ho imparato la formula "aggrega" non è supportata da Excel 2007. Purtroppo questo report lo sto lavorando da due pc e dal mio (in cui c'è l'ultima versione di Excel) non ho problemi ma su quello aziendale (in cui c'è Excel 2007) non funziona. Ti ringrazio comunque per la disponibilità

    @Vecchio Frac grazie per il sostegno ed io la penso come te. Imparerò anche le macro ma ora per questioni di consegna ho preferito scovare una formula tradizionale (sapendo già che andrà ad appesantire) piuttosto che sperimentare una macro. Sinceramente ho anche provato ad inserirla ma non sapendo minimamente l'abc ho preferito sorvolare (per il momento).
    So che la "legge" non ammette ignoranza ma "sportivamente" ho scritto su entrambi i forum senza voler togliere "diritti" a nessuno. Ora che lo so (anche se non approvo) rispetto le regole della casa



  • di Vecchio Frac data: 23/08/2016 22:42:47

    Vero, AGGREGA è stato introdotto dopo Excel 2007, pure io ho avuto problemi con questa funzione. Ma sono quasi sicuro di ricordare che c'è l'escamotage per riprodurla anche in XL 2007, visto che tale funzione è solo una facility creata per comodità. Comunque capisco i tempi e l'urgenza di dover finire il lavoro. Magari segnatelo e appena hai tempo studiati qualche alternativa compatibile con XL 2007, poi torni qui e la condividi con noi, questo in realtà sarebbe lo spirito di questo forum, non solo domande e risposte ma anche condivisione di scoperte ;)
    Sulla lettura dei regolamenti, che dirti, di solito quasi nessuno si prende la briga di leggerli davvero quando accede a un forum... e poi purtroppo può sempre capitare di trovare il moderatore pignolo :)





  • di Gianfranco data: 24/08/2016 01:47:23

    Ciao
    per il 2007

    stesse posizioni ma
    la formula è matriciale

    una volta inserita devi cliccare su

    ctrl shift invio (shift è la freccia del maiuscolo)

    per capirci ti posizione nella barra della formula e clicchi crtl shift invio
    in A2
    =SE.ERRORE(INDICE(SCADENZARIO!$A$3:$A$10000;PICCOLO(SE(SCADENZARIO!$G$3:$G$10000="SI";RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));"")

    in B2
    =SE.ERRORE(INDICE(SCADENZARIO!$B$3:$B$10000;PICCOLO(SE(SCADENZARIO!$G$3:$G$10000="SI";RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));"")

    in C2
    =SE.ERRORE(INDICE(SCADENZARIO!$C$3:$C$10000;PICCOLO(SE(SCADENZARIO!$G$3:$G$10000="SI";RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));"")

    ti allego
    il file ù
    ciao




  • di ALEXA (utente non iscritto) data: 24/08/2016 11:03:27

    Grazie a tutti.

    @Gianfranco grazie soprattutto a te, la tua formula funziona con excel 2007!

    @ Vecchio Frac nella vita c'è sempre da imparare e sono certa che nel mio piccolo se potrò dare una mano lo farò. Mi dispiace solo per tutto il caos che è successo. Non accadrà più.

    Buona giornata a tutti.
    Alexa



  • di Alexa (utente non iscritto) data: 24/08/2016 11:30:38

    @Gianfranco ti chiedo un'ultima cosa. C'è l possibilità, in caso di cella originaria vuota di ottenere una cella vuota e non con uno zero?




  • di Gianfranco data: 24/08/2016 12:11:34

    Ciao

    seleziona la colonna

    vai in formato
    personalizzato

    e inserisci questo

    0;-0;;@

    lo zero sparisce

    ciao



  • di Alexa (utente non iscritto) data: 24/08/2016 13:18:13

    Funziona perfettamente! Grazie ancora!
    Ciao
    Alexa



  • di ALEXA (utente non iscritto) data: 24/08/2016 16:05:51

    @Gianfranco ciao, scusami se continuo a chiederti aiuto su questa formula. Se vuoi puoi non rispondere (capirò! ci mancherebbe!).
    Volevo chiederti due cose:
    1) è possibile far rispettare alla formula due condizioni e non solo una (quella del "SI" dalla colonna "da archiviare") e quindi far pescare alla formula tutti quei fornitori che oltre ad avere il "SI" abbiano anche la dicitura "ricorrente" in un'altra colonna;

    2) ho notato che una volta impostata la formula in una cella, se vado ad inserire delle righe in alto,non mi estrapola più nulla. Cosa devo fare per far si che inserendo delle righe (o facendo partire la formula più in basso e non da A1) riesco ad ottenere i valori corretti?

    Allego un file per comodità.

    Alexa






  • di Gianfranco data: 24/08/2016 17:45:25

    Ciao
    perché non dovrei risponderti è un piacere per me.

    A) se inserisci righe in alto devi cambiare i riferimenti della formula

    SCADENZARIO!$C$3:$C$10000

    se aggiungo una riga in alto diventa

    SCADENZARIO!$C$4:$C$10000
    però è strano l'inserimento in alto

    B)

    non cv'è problema per aggiungere un riferimento nuovo

    metti la colonna sul mio file e allegalo
    ti creo la formula
    oppure
    la formula di base è questa
    =SE.ERRORE(INDICE(SCADENZARIO!A$3:A$10;PICCOLO(SE(((SCADENZARIO!$G$3:$G$10="SI")*(SCADENZARIO!$H$3:$H$10="x"));RIF.RIGA($A$3:$A$10)-2);RIF.RIGA($A1)));"")

    la colonna nuova è la H e io ho messo X tu metti quello che vuoi

    sempre matriciale



  • di Alexa (utente non iscritto) data: 25/08/2016 12:07:11

    penso di aver commesso un errore nel messaggio di risposta quindi provo a rispondere di nuovo.

    Intanto Gianfranco, ti ringrazio tantissimo, mi stai dando veramente una mano. La formula con due condizioni funziona perfettamente, l'unico problema resta quando vado ad inserire le righe in alto.
    In allegato c'è un file (con filtro) in cui si può capire il perchè del mio inserimento di righe. Nello sheet verde tutto funziona e nel filtro si può scegliere il mese di scadenza. Nello sheet in rosso ho spostato il filtro in alto e spostandolo la formula non va più

    Sai dirmi se c'è una formula da inserire nella cella in giallo sul primo sheet che mi ridia una data con mese corrente (in questo caso agosto) e con giorno il numero inserito nella colonna C?

    Grazie ancora...veramente

    Alexa



  • di alfrimpa data: 25/08/2016 13:15:12

    Ciao Gianfranco ed un saluto ad Alexa.

    Gianfranco come sai sono in ferie (-:)) e non ho seguito la discussione però mi son chiesto come mai hai preferito la strada delle formule e non il VBA?

    Non era possibile con un ciclo For Each scorrere la colonna dei SI e dei NO e quando incontrava il SI copiare i dati voluti?

    Oppure con una Worksheet_Change nel momento in cui si va a digitare il SI fare la copia dati.

    Solo per curiosità

    Un caro saluto a te e ad Alexa.

    Alfredo

    P.S. Mentre scrivevo penso di essermi dato la risposta: con le formule in caso di errori si ha sempre il risultato giusto o forse il SI e il NO derivano da formule (il file non l'ho potuto vedere)





  • di Gianfranco data: 25/08/2016 14:36:14

    Ciao

    Al basta con le ferie!!!!!!

    ecco la risposta
    Grazie
    Purtroppo sono poco pratica di macro ma proverò a cercare tutorial su internet e proverò ad inserire la tua...

    Con Excel è cosa impossibile vero?

    impossibile


    non sia mai detto

    alexa

    il file in allegato ha le soluzioni che chiedevi

    ti spiego come spostare le formule senza che si cambino i parametri.

    seleziona la formula (non la cella)

    taglia

    e clicca sulla x della barra della formula

    ora puoi incollarla dove vuoi senza che i riferimenti ne risentano

    ho aggiunto vicino alla data mese e anno che ti servono per avere la data nella cella gialla
    se non li vuoi vedere metti il carattere bianco.

    ti ho lasciato nel foglio rosso
    la colonna di mezzo vuota mettiti la formula



  • di Alexa (utente non iscritto) data: 25/08/2016 15:58:18



    @Gianfranco che dire!!! Non ho parole! Bravissimo! Oltre che a realizzare un super scadenzario sto imparando molto!!

    @Alfrimpa, purtroppo da brava autodidatta excel non sto così avanti. Ciò che so l'ho imparato strada facendo e da qualche giorno a questa parte rompendo le scatole a Gianfranco :-P

    Un saluto ad entrambi

    Alexa

    PS: credo e spero di non avere altro da chiedere hehe



  • di alfrimpa data: 25/08/2016 16:09:00

    Ciao Akexa

    Qui, come altrove, siamo tutti autodidatti; pensa che io sino a circa tre anni fa (e Gianfranco lo sa bene) del VBA non conoscevo neanche l'esistenza (mentre per le formule sono e rimango "negato" non riesco proprio a farmele entrare in testa).

    Comunque per qualunque tipo di necessità/dubbio o curiosità non farti scrupoli a chiedere e sicuramente avrai risposte.

    A presto.

    Alfredo

    P.S. Se ho imparato io il VBA (che sicuramente sono più vecchio di te ) puoi farlo tranquillamente anche tu





  • di Alexa (utente non iscritto) data: 26/08/2016 10:25:10

    @Gianfranco buongiorno! Scusa se rivolgo la domanda direttamente a te ma ormai in questa discussione la formula la sto adeguando con te (ovvio che può rispondere chiunque ).

    Sulla formula con il filtro ho impostato la condizione per far pescare i valori in funzione del mese. Come posso impostare la condizione per far pescare in funzione o del mese o della data scadenza? In poche parole chi consulterà lo scadenzario sceglierà come meglio crede le scadenze (o del mese o del giorno)...

    I più, ho provato ad applicare il procedimento per non far cambiare i riferimenti alla formula. Sul file di prova allegato qui mi funzionava ma sul mio file su cui sto lavorando non va...il procedimento è sempre lo stesso non capisco perchè non riesco

    @Alfrimpa mi fai così piccina? Scherzo...comunque più vedo la vostra preparazione e più mi invogliate a voler sapere...ho deciso che cercherò guide online!




  • di Gianfranco data: 26/08/2016 17:08:37

    Ciao
    ti preparo il file con le variabili
    però mi devi dire se userai menu a tendina
    o se le celle vengono riempite a mano
    con il meno a tendina e oggi() devo utilizzare altre celle
    perché ci sono problemini con l'azzeramento.



  • di Alexa (utente non iscritto) data: 26/08/2016 17:46:27

    Ciao!
    Allora la mia idea era quella di far scegliere il mese sulla tendina ed il giorno inserirlo manualmente su data scadenza (devo pensare di meno lo so :-D )



  • di Gianfranco data: 26/08/2016 18:35:26

    ciao
    ti allego il file
    con nel terzo foglio la prova per vedere se ti va.
    ora le celle di inserimento sono tutte " a mano"
    per il menu a tendina devo cambiare un po di cose

    dimmi se la formula ti va bene

    ( lunghetta ma di meglio non riesco a fare ci vorrebbe un esperto )

    =SE.ERRORE(SE($B$2<>"";INDICE(SCADENZARIO!$A$3:$A$10002;PICCOLO(SE(SCADENZARIO!$F$3:$F$10000=$B$2;RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));SE($B$3<>"";INDICE(SCADENZARIO!$A$3:$A$10002;PICCOLO(SE(SCADENZARIO!$D$3:$D$10000=$B$3;RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));SE($B$4<>"";INDICE(SCADENZARIO!$A$3:$A$10002;PICCOLO(SE(SCADENZARIO!$D$3:$D$10000=$B$4;RIF.RIGA($A$3:$A$10000)-2;"");RIF.RIGA($A1)));"")));"")


    guarda il file