Excel-formel: Öka cellreferensen med INDIRECT -

Generisk formel

=INDIRECT(sheet&"!"&CELL("address",A1))

Sammanfattning

För att öka en referens som skapats som text i funktionen INDIRECT kan du använda CELL-funktionen. I exemplet som visas är formeln i D5:

=INDIRECT($B$5&"!"&CELL("address",A1))

Vilka steg som formeln kopieras ner.

Förklaring

Tänk på en enkel dynamisk hänvisning till Sheet2 med INDIRECT i en sådan formel:

=INDIRECT($B$5&"!"&"A1"))

Om vi ​​ändrar bladnamnet i B5 till ett annat (giltigt) namn kommer INDIRECT att returnera en referens till A1 i det nya arket.

Men om vi kopierar den här formeln ner i kolumnen ändras inte hänvisningen till A1 eftersom "A1" är hårdkodad som text.

För att lösa detta problem använder vi CELL-funktionen för att generera en textreferens från en vanlig cellreferens:

CELL("address",A1)

Med "adress" som det första argumentet och A1 som det andra argumentet returnerar CELL-funktionen en sträng som "$ A $ 1". Eftersom A1 är en vanlig cellreferens ökar den normalt när formeln kopieras ner i kolumnen. Resultatet i D5: D9 är en serie formler så här:

=INDIRECT("Sheet2!$A$1") =INDIRECT("Sheet2!$A$2") =INDIRECT("Sheet2!$A$3") =INDIRECT("Sheet2!$A$4") =INDIRECT("Sheet2!$A$5")

I båda fallen löser INDIRECT varje textsträng till en referens och Excel returnerar värdet vid den angivna cellen i Sheet2.

Obs! Både INDIRECT och CELL är flyktiga funktioner och beräknar på nytt med varje kalkylbyte. Detta kan orsaka prestandaproblem i mer komplexa kalkylblad.

Intressanta artiklar...