2011-01-27 12 views
76

Desidero ottenere il contenuto di una cella in base al numero di riga e colonna. Il numero di riga e colonna sono memorizzati in celle (qui B1, B2). So che le seguenti soluzioni funzionano, ma si sentono un po 'hacky.Ottenere il contenuto di una cella in base ai numeri di riga e colonna

Sol 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2))) 

Sol 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1)) 

Non c'è metodo meno prolissa? (come = CellValue (row, col) o quant'altro)?

Modifica/Chiarimento: Voglio solo utilizzare le formule del foglio di lavoro excel. Nessun VBA. In breve, cerco praticamente l'equivalente del metodo VBA Cells() come una formula eccellente.

+0

Possiamo ottenere un po 'più di contesto? Stai usando solo le formule di Excel? VBA? Qualche altro metodo? –

risposta

118

Non è necessario la parte CELL() di formule:

=INDIRECT(ADDRESS(B1,B2)) 

o

=OFFSET($A$1, B1-1,B2-1) 

volontà sia il lavoro. Si noti che sia INDIRECT e OFFSET sono funzioni volatili. Le funzioni volatili possono rallentare il calcolo perché vengono calcolate ad ogni singolo ricalcolo.

+0

Questo è abbastanza utile che mi piacerebbe vederlo modificato per avere il giusto numero di parentesi di chiusura. – Wyck

+6

Data la popolarità di questa domanda/risposta, sarebbe bello avere qui una piccola frase su cosa sia una [funzione volatile] (https://msdn.microsoft.com/en-us/library/office/bb687891.aspx # sectionSection2) è. – LondonRob

+0

Si noti che con il secondo modulo, a seconda di $ a $ 1, è necessario non spostare $ a $ 1 in alcun modo nelle successive modifiche del foglio. – Erk

20

Try = indice (Array, riga, colonna)

dove: Array: selezionare l'intero foglio fila, Colonna: la riga e la colonna fa riferimento

che dovrebbe essere più facile da capire per chi è alla ricerca alla formula.

1

Mi ci è voluto un po ', ma ecco come l'ho reso dinamico. Non dipende da una tabella ordinata.

Prima ho iniziato con una colonna di nomi di stato (colonna A) e una colonna di aeromobili in ogni stato (colonna B). (La riga 1 è una riga di intestazione).

Trovare la cella che contiene il numero di aerei era:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1 

ho messo in una cella e poi ha dato quella cella un nome, "StateRow" Quindi con i suggerimenti da sopra, ho liquidata con questo:

=INDIRECT(ADDRESS(StateRow,1)) 

Ciò restituisce il nome dello stato del valore dinamico nella fila "StateRow", colonna 1

Ora, come i valori di conteggio Colonna cambia nel tempo man mano che vengono inseriti più dati, so sempre quale stato ha il maggior numero di velivoli.

Problemi correlati