Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Copiare elenco con condizione

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Copiare elenco con condizione

Postdi BG66 » 07/08/18 23:16

Buonasera.
Vorrei che selezionando in A2 il nominativo del corso, il rangeA3:A12 si popolasse con il titolo delle unità didattiche.

In che modo (formule o VBA?) Ma sopratutto come?

Grazie per l'aiuto.

https://www.dropbox.com/s/h1bdt3lctzna5ji/contenuto%20corsi.xlsx?dl=0
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Copiare elenco con condizione

Postdi Anthony47 » 08/08/18 01:42

Hummm...
Seleziona A3:A12; inserisci la formula
Codice: Seleziona tutto
=INDICE(C16:O25;0;CONFRONTA(A2;C14:O14;0))

Conferma con Contr-Maiusc-Enter, non il solo Enter

Probabilmente vorrai eliminare la visualizzazione di "0" su quei corsi che hanno meno di 10 unita' didattiche; lo puoi fare, tra i vari metodi, in Opzioni /Impostazioni Avanzate; in "Opzioni di visualizzazioni per il foglio di lavoro" togli la spunta a Visualizza zero nelle celle con valore zero; ok

Fai sapere...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 15795
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copiare elenco con condizione

Postdi BG66 » 08/08/18 06:52

Ciao Anthony,
sbaglio qualcosa nell'applicare il tuo suggerimento :oops:.
Ho provato anche l'inserimento della formula singolarmente per riga e usando $ per bloccare i range ma senza risultato.

Immagine

Gene

https://www.dropbox.com/s/sz1onwdc7y2pugu/contenuto%20corsiAnthony.xlsx?dl=0
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Re: Copiare elenco con condizione

Postdi Anthony47 » 08/08/18 23:26

Hai messo la formula in A3 e poi l'hai copiata nelle celle sottostanti.
Invece devi inserire una unica formula matriciale in A3:A12:
-selezioni l'intera area, inserisci la formula nella barra della formula, confermi con Contr-Maiusc-Enter

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 15795
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copiare elenco con condizione

Postdi BG66 » 10/08/18 05:34

Ciao Anthony,
ovviamente funziona.
Ma anche frequentando da tempo i vari forum questo modo di operare è la prima volta ... non le formule matriciali ma proprio l'operazione per inserirla nel range....
Hai voglia di spiegarmi qualcosina in più?

Grazie se puoi.
Gene
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Re: Copiare elenco con condizione

Postdi Anthony47 » 10/08/18 10:27

Quella che ho usato e' la vera applicazione della formula matriciale, che restituisce una matrice di valori (il risultato della formula) da inserire in una matrice di celle (l'area in cui la formula e' applicata)

Immagino ti sia chiaro che la formula =INDICE(C16:O25;0;CONFRONTA(A2;C14:O14;0)) restituisce l'intera colonna identificata dal CONFRONTA all'interno della matrice originale (uso di "0" come numero di riga); l'uso della formulazione "matriciale" ci consente di spalmare ogni riga della colonna estratta nella cella giusta dell'area del risultato.
Avrei potuto usare altre soluzioni; ad esempio
Codice: Seleziona tutto
=INDICE(C16:O25;1;CONFRONTA($A$2;$C$14:$O$14;0))
Da inserire (col solo Enter) in A3 e poi copiare verso il basso; ma il concetto di fondo e' che calcolare 1 formula e' piu' veloce che calcolarne 10

Diverso e' l'uso della formula matriciale per ottenere una matrice (intermedia) da cui estrarre poi un valore particolare. Es, se in A1:A100 ci sono dei cognomi, e voglio sapere quale e' l'ultima riga in cui compare Rossi, potrei usare
Codice: Seleziona tutto
=MAX((A1:A100="Rossi")*(RIF.RIGA(A1:A100)))
Da confermare con Contr-Maiusc-Enter
In questo caso la matrice di risultati ottenuta con (A1:A100="Rossi")*(RIF.RIGA(A1:A100)) viene usata dalla funzione Max per restituire l'unico risultato voluto.

Spero di non averti confuso oltre le mie intenzioni...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 15795
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copiare elenco con condizione

Postdi BG66 » 11/08/18 14:20

Ciao Anthony,
sicuramente non di facile comprensione ma in linea di massima ci sono.... ;)

Alla prossima
Gene
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Re: Copiare elenco con condizione

Postdi BG66 » 13/08/18 17:21

Ciao Anthony,
per capire....se avevo capito..ho provato a ri-creare una condizione simile in un file diverso e poi ho usato:
Codice: Seleziona tutto
=INDICE(Legenda!A8:L18;0;CONFRONTA(3;Legenda!A7:L7;0))

Ma non ha funzionato :aaah

Ad esempio volevo inserire nel range A13:F17 del foglio "Aree S", i dati presenti nella tabella del foglio di lavoro "Legenda" usando in numero dell'area presente nella colonna K

https://www.dropbox.com/s/qpdk1jqxrhkewwr/Aree%20-%20Forum.xlsm?dl=0

Grazie se puoi.
Gene
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Re: Copiare elenco con condizione

Postdi Anthony47 » 13/08/18 23:16

Con la tua impostazione hai cercato di mettere in un'area di 5 righe * 6 colonne una matrice di una sola colonna.
In piu' CONFRONTA("3";Legenda!A7:L7;0)) cerca "3" in riga 7, che pero' contiene le intestazioni, e quindi non trova niente.
In presenza di piu' errori non ho capito cosa vorresti importare; spiegalo ancora e vedremo se usare lo stesso approccio del quesito iniziale o se invece e' meglio cambiare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 15795
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copiare elenco con condizione

Postdi BG66 » 14/08/18 05:51

Ciao Anthony,
ho aggiornato il file d'esempio popolandolo in maniera più completa:
https://www.dropbox.com/s/qpdk1jqxrhkewwr/Aree%20-%20Forum.xlsm?dl=0

e aggiungo:
1) cosa vorrei fare:
Vorrei riportare i dati presenti nelle colonne C:H della tabella presente in Legenda suddividendoli per l'area di appartenenza (colonna K in Legenda).

2) l'immagine del dato atteso:
Immagine

Grazie in anticipo..soprattutto per la pazienza. :roll:

Gene
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44

Re: Copiare elenco con condizione

Postdi Anthony47 » 16/08/18 19:06

Per ottenere tramite formule il risultato voluto conviene usare una colonna di appoggio.
Ad esempio in I13 calcolo la prima occorrenza del codice di "area" con la formula
Codice: Seleziona tutto
=PICCOLO(SE((Legenda!$K$8:$K$200=--DESTRA('Aree S'!$A$8;1));RIF.RIGA(Legenda!$K$8:$K$200);"");RIF.RIGA(A1)
Da confermare con Contr-Maiusc-Enter; poi copia fino a I17

Successivamente in A13:F13 inserisci (selezionare l'area, poi scrivere la formula):
Codice: Seleziona tutto
=SE.ERRORE(INDICE(Legenda!$C$1:$H$20;I13;0);"")

Sempre Contr-Maiusc-Enter; poi copia A13:F13 e incolla in A14:A17

Come vedi la prima formula e' matriciale ma di "tipo 1"; la seconda e' una matriciale di tipo... "matriciale"

La formula in I25 va modificata in
Codice: Seleziona tutto
=PICCOLO(SE((Legenda!$K$8:$K$200=--DESTRA('Aree S'!$A$20;1));RIF.RIGA(Legenda!$K$8:$K$200);"");RIF.RIGA(A1))


Immagino che sai modificare le formule delle aree successive

La formula di colone A:F sono invece solo da copiare verso il basso

Volendo evitare la colonna di appoggio, potresti allora usare in A13 la formula a matrice (di tipo 1):
Codice: Seleziona tutto
=SE.ERRORE(INDICE(Legenda!C$1:C$200;PICCOLO(SE((Legenda!$K$8:$K$200=--DESTRA('Aree S'!$A$8;1));RIF.RIGA(Legenda!$K$8:$K$200);"");RIF.RIGA(A1)));"")

Poi copia A13 verso destra; poi copia A13:F13 in A14:A17
In questo caso, pero', in ogni colonna viene ricalcolato il numero di riga della tabella in Legenda da cui il dato va prelevato, con evidente rallentamento se le formule sono tante.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 15795
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copiare elenco con condizione

Postdi BG66 » 20/08/18 22:45

Ciao Anthony,
ho preferito seguire il tuo primo consiglio ( colonna d'appoggio).
[RISOLTO]

Grazie ancora.
Gene
BG66
Excel2010
BG66
Utente Senior
 
Post: 130
Iscritto il: 20/08/16 07:44


Torna a Applicazioni Office Windows


Topic correlati a "Copiare elenco con condizione":


Chi c’è in linea

Visitano il forum: gimart e 34 ospiti