FORMULE con Range variabile senza VBA - soluzione

di il
6 risposte

FORMULE con Range variabile senza VBA - soluzione

Vorrei dare il mio contributo a questo forum con una soluzione per rendere variabile il Range nelle Formule senza usare VBA.
Per chi fosse interessato, questo è il link per scaricare il file

Aggiungo una spiegazione del motivo per cui è per me importante e la soluzione (funzionante) che ho trovato. Saluti a tutti
------------------
INSERIMENTO VALORE IN UNA TABELLA PREVIA VERIFICA CHE NON ESISTA GIA' IN UNA COLONNA VARIABILE SENZA USO DI CODICE VBA

dati noti: valore da inserire e numero VARIABILE della colonna in cui aggiungerlo
esempio:
devo inserire un valore nella colonna Lombardia in coda a quelli esistenti purchè non sia già presente. Con la formula CONFRONTA eseguo la verifica del valore contenuto in B17 (Milano) nella colonna 7 (G) nel range G24:G… ma lo trovo già presente in G26
Successivamente dovrò inserire un nuovo valore (che scrivo sempre in B17) nella colonna Piemonte e dovrò ripetere la ricerca nel range D24:D…
Nella formula il range dovrà essere diverso in base alla colonna di inserimento: C25:C30 ; D25:D30 ; E25:E30 e così via, quindi NON VARIABILE e sembra non esserci il modo per assegnare una variabile alla lettera indicante la colonna.

il problema e' quindi: come renderlo dinamico per poterlo inserire in una formula in modo che si adatti automaticamente alla colonna in esame?
La soluzione che ho trovato è di aggiungere la colonna di appoggio 'A' che con la formula INDIRETTO(INDIRIZZO(RIF.RIGA();$B$18)) trascinata in basso nelle stesse righe della tabella, al variare del numero della colonna si popola con i valori di quella in cui deve essere fatto il nuovo inserimento. in questo modo la colonna 'A' conterra' ogni volta i valori che devono essere confrontati con quello da aggiungere presente nella cella B17 e la verifica verra' fatta sempre nel medesimo range A25:A…
La formula sarà quindi: CONFRONTA($A$18;A25:A30;0) per qualsiasi numero di colonna della tabella in esame.

6 Risposte

  • Re: FORMULE con Range variabile senza VBA - soluzione

    Buongiorno
    ma non potrebbe bastare una cosa del genere?

    =AGGREGA(15;6;RIF.RIGA($C$24:$H$1000)/($C$24:$H$1000=$B$17)-RIF.RIGA($C$24)+1;1)

    senza colonne di appoggio.....o forse non ho capito l'obiettivo?
  • Re: FORMULE con Range variabile senza VBA - soluzione

    Buongiorno a te D@nilo, proverò la funzione che hai indicato per la quale ti ringrazio. Il problema nasce dal dover definire a priori le colonne della matrice usando le lettere e quindi non poterle rendere variabili. Sarei ben felice di trovare un'altra soluzione, avevo anche aperto un post per chiederlo ma è rimasto senza risposta. Non amo molto le colonne di appoggio ma averne una unica per decine o centinaia di colonne non è una tragedia. Lo scopo finale sarebbe quello di avere una funzione in cui definire il range non con le lettere ma con le variabili, come si fa con VBA in maniera semplice con cells(riga, colonna), ma usando solo le formule non ci sono riuscita.
    P.S. l'ho provata e funziona ma non è ancora la soluzione del problema. Cerco di spiegarmi più in dettaglio: nell'esempio allegato c'è una tabella ben definita e quindi è facile riferirsi al range C24:H28, ma come fare se questo range cambia? Ho sviluppato un programma di gestione eventi e per ogni nuovo evento viene aperta una colonna per le iscrizioni; il range quindi si estende ogni volta di una colonna a destra e devo trovare il modo di inserire nella formula il range C24:H28 ... C24:I28 ... C24:J28 ... C24:K28 ... C24:L28 e così via
  • Re: FORMULE con Range variabile senza VBA - soluzione

    Buonasera
    nella formula che ti ho postato ho previsto 1000 righe ma se il range si allarga a destra basta variare range a destra cosi per 500 colonne


    =AGGREGA(15;6;RIF.RIGA($C$24:$SH$28)/($C$24:$SH$28=$B$17)-RIF.RIGA($C$24)+1;1)
  • Re: FORMULE con Range variabile senza VBA - soluzione

    Non conoscevo questa possibilità perchè non ho mai usato la funzione AGGREGA non avendola capita bene. E' molto importante questa formula perchè permette di fare ricerche in un range molto ampio. Grazie mille per questa soluzione, ho fatto un sacco di ricerche in rete per capire come svincolarmi dalla necessità di indicare una matrice specifica ma non ho mai trovato la risposta. Grazie ancora e buona serata.
  • Re: FORMULE con Range variabile senza VBA - soluzione

    Salve a tutti
    Come sempre, D@nilo (un caro saluto) è un "mostro" con le formule.

    Mi son voluto cimentare ad individuare "meglio" l'elemento cercato e propongo questa formula (non mia ma è l'integrazione di quella di D@nilo):
    in A31 ="riga - colonna"
    in A32 =SE.ERRORE(AGGREGA(15;6;RIF.RIGA($C$24:$SH$1000)/($C$24:$SH$1000=$B$17)-RIF.RIGA($C$24)+1;1) & " - " & AGGREGA(15;6;RIF.COLONNA($C$24:$SH$1000)/($C$24:$SH$1000=$B$17)-RIF.COLONNA($C$24)+1;1);"non presente")

    Può andar bene? Ovviamente, per evitare un riferimento circolare, occorre inserire "fuori" dall'intervallo di ricerca.
    Ciao,
    Mario
  • Re: FORMULE con Range variabile senza VBA - soluzione

    Va benissimo grazie. Funzionano entrambe e l'ho già inserita nel progetto. Ciò che mi sembra strano è che in rete non abbia trovato nessuna soluzione nonostante decine di ricerche incrociate sia in siti italiani che stranieri (gli indici di ricerca in inglese sono sempre più esaurienti di quelli italiani, ma anche lì nulla). Mi sembra improbabile di avere solo io la necessità di una formula per cercare un valore in una tabella in un range variabile, ora finalmente riesco a svincolarmi dalla necessità di definire il range, ne imposto uno bello abbondante e grazie a questa formula è sufficiente inserire il valore da cercare. Grazie ad entrambi, buona serata
    Lucrezia
    P.S. salutami Ges e Alfredo
Devi accedere o registrarti per scrivere nel forum
6 risposte