2013-04-25 16 views
11

Ho seguente cartella di lavoro:Excel dati Lista convalida usando la formula con il filtraggio

Foglio Conti:

Accounts worksheet

Foglio Messaggi:

Posts worksheet

Vorrei sapere se è possibile definire la convalida dei dati di tipo List per tutta la colonna B in lamiera messaggi usando la formula, in modo che convalida dei dati popup mostra solo account Ids da Conti foglio che Sito colonna partite Sito colonna di una riga selezionata nella messaggi patrimoniale e che hanno un valore attivo in Stato colonna?

in SQL-ish o LINQ-ish parole:

SELECT id FROM WHERE Accounts sito = @ SelectedPostRow.Website e STATUS = attivi

segni sul secondo mostra immagine quali valori dovrebbe essere mostrato in un menu a discesa.

risposta

2

Sì, è possibile farlo, ma richiede alcune impostazioni di supporto.

Prima di ogni opzione del sito Web, è necessario creare un intervallo denominato per le opzioni che sarebbero nel menu a discesa che si desidera creare.

Per fare questo, basta evidenziare l'elenco delle cellule e tasto destro del mouse, il scegliere il nome di un intervallo

Quindi è necessario creare un elenco di ricerca per i vostri nomi di siti web per l'intervallo denominato possiblities

Poi, nel la vostra fonte di convalida dei dati usa un forumla come questo:

=indirect(vlookup(a1,$i$8:$j$13,2,false)) 

poi whala, l'elenco a discesa modifiche sulla base del valore sito.

Ora, se è anche necessario automatizzare i bit dell'intervallo denominato, è possibile modificarli per racchiudere intere colonne e quindi utilizzare una tabella pivot per inserire i dati. Avrebbe solo bisogno di un pivot indipendente per ogni opzione del sito.

Ogni volta che si inserivano nuovi dati, è necessario aggiornare i pivot, ma funzionerebbe.

+0

Se ho capito bene, devo creare un intervallo denominato di ID account per ciascun valore del sito web. Questo non funzionerà per me dal momento che la scheda Conti può essere ulteriormente popolata con nuovi account e non voglio aumentare l'intervallo con nome ogni volta che ciò accade. Anche Pivot non funzionerebbe perché richiederebbe un aggiornamento. Voglio che questo sia completamente automatizzato senza attività di contabilità aggiuntive. E per quanto riguarda Status = Active part? – Stipo

+0

La tabella pivot è ciò che è necessario fare lo stato = pezzo attivo. Anche i pivot possono essere aggiornati tramite VBA, che può essere automatizzato. –

3

Questo problema richiede un po 'di preparazione. Nello stesso foglio o in un altro, copia i tuoi dati (o aggiungi le celle pertinenti)

Nella colonna A hai un numero che potrebbe essere classificato. ho ottenuto con (cella A2):

= SE (C2 = $ J $ 2,1,0) * SE (E2 = "Active", 1,0) * ROW()

Nella colonna B rango il numero ed escludere le righe indesiderate (B2):

= SE (A2 = 0,0, RANK (A2, A: A))

Poi si può CERCA CERCA nella colonna H, usando un enum nella colonna G (inserito manualmente). La formula per H1:

= SE.ERRORE (CERCA.VERT (G2, $ B $ 2: $ D $ 9,3, FALSO), "")

Ora è possibile impostare la convalida sulla base della colonna H

screenshot

PS: ci potrebbero essere piccoli errori nelle formule come le ho tradotte dal italiana e non posso testare in inglese.

+1

intelligente ed elegante – Israel

Problemi correlati