Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/LookupRef.php
public static function INDIRECT($cellAddress = null, Cell $pCell = null)
    {
        $cellAddress = Functions::flattenSingleValue($cellAddress);
        if ($cellAddress === null || $cellAddress === '') {
            return Functions::REF();
        }

        $cellAddress1 = $cellAddress;
        $cellAddress2 = null;
        if (strpos($cellAddress, ':') !== false) {
            list($cellAddress1, $cellAddress2) = explode(':', $cellAddress);
        }

        if ((!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress1, $matches)) ||
            (($cellAddress2 !== null) && (!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress2, $matches)))) {
            if (!preg_match('/^' . Calculation::CALCULATION_REGEXP_NAMEDRANGE . '$/i', $cellAddress1, $matches)) {
                return Functions::REF();
            }

            if (strpos($cellAddress, '!') !== false) {
                list($sheetName, $cellAddress) = explode('!', $cellAddress);
                $sheetName = trim($sheetName, "'");
                $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName);
            } else {
                $pSheet = $pCell->getWorksheet();
            }

            return Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, false);
        }

        if (strpos($cellAddress, '!') !== false) {
            list($sheetName, $cellAddress) = explode('!', $cellAddress);
            $sheetName = trim($sheetName, "'");
            $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName);
        } else {
            $pSheet = $pCell->getWorksheet();
        }

        return Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false);
    }
public static function INDIRECT($cellAddress = null, Cell $pCell = null)
    {
        $cellAddress = Functions::flattenSingleValue($cellAddress);
        if ($cellAddress === null || $cellAddress === '') {
            return Functions::REF();
        }

        $cellAddress1 = $cellAddress;
        $cellAddress2 = null;
        if (strpos($cellAddress, ':') !== false) {
            list($cellAddress1, $cellAddress2) = explode(':', $cellAddress);
        }

        if ((!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress1, $matches)) ||
            (($cellAddress2 !== null) && (!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress2, $matches)))) {
            if (!preg_match('/^' . Calculation::CALCULATION_REGEXP_NAMEDRANGE . '$/i', $cellAddress1, $matches)) {
                return Functions::REF();
            }

            if (strpos($cellAddress, '!') !== false) {
                list($sheetName, $cellAddress) = explode('!', $cellAddress);
                $sheetName = trim($sheetName, "'");
                $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName);
            } else {
                $pSheet = $pCell->getWorksheet();
            }

            return Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, false);
        }

        if (strpos($cellAddress, '!') !== false) {
            list($sheetName, $cellAddress) = explode('!', $cellAddress);
            $sheetName = trim($sheetName, "'");
            $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName);
        } else {
            $pSheet = $pCell->getWorksheet();
        }

        return Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false);
    }
public static function INDIRECT ( $ cellAddress = null , Cell $ pCell = null ) { $ cellAddress = Functions :: flattenSingleValue ( $ cellAddress ) ; if ( $ cellAddress === null || $ cellAddress === '' ) { return Functions :: REF ( ) ; } $ cellAddress1 = $ cellAddress ; $ cellAddress2 = null ; if ( strpos ( $ cellAddress , ':' ) !== false ) { list ( $ cellAddress1 , $ cellAddress2 ) = explode ( ':' , $ cellAddress ) ; } if ( ( ! preg_match ( '/^' . Calculation :: CALCULATION_REGEXP_CELLREF . '$/i' , $ cellAddress1 , $ matches ) ) || ( ( $ cellAddress2 !== null ) && ( ! preg_match ( '/^' . Calculation :: CALCULATION_REGEXP_CELLREF . '$/i' , $ cellAddress2 , $ matches ) ) ) ) { if ( ! preg_match ( '/^' . Calculation :: CALCULATION_REGEXP_NAMEDRANGE . '$/i' , $ cellAddress1 , $ matches ) ) { return Functions :: REF ( ) ; } if ( strpos ( $ cellAddress , '!' ) !== false ) { list ( $ sheetName , $ cellAddress ) = explode ( '!' , $ cellAddress ) ; $ sheetName = trim ( $ sheetName , "'" ) ; $ pSheet = $ pCell -> getWorksheet ( ) -> getParent ( ) -> getSheetByName ( $ sheetName ) ; } else { $ pSheet = $ pCell -> getWorksheet ( ) ; } return Calculation :: getInstance ( ) -> extractNamedRange ( $ cellAddress , $ pSheet , false ) ; } if ( strpos ( $ cellAddress , '!' ) !== false ) { list ( $ sheetName , $ cellAddress ) = explode ( '!' , $ cellAddress ) ; $ sheetName = trim ( $ sheetName , "'" ) ; $ pSheet = $ pCell -> getWorksheet ( ) -> getParent ( ) -> getSheetByName ( $ sheetName ) ; } else { $ pSheet = $ pCell -> getWorksheet ( ) ; } return Calculation :: getInstance ( ) -> extractCellRange ( $ cellAddress , $ pSheet , false ) ; }
INDIRECT.

Returns the reference specified by a text string.
References are immediately evaluated to display their contents.

Excel Function:
=INDIRECT(cellAddress)

NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010

@param null|array|string $cellAddress $cellAddress The cell address of the current cell (containing this formula)
@param Cell $pCell The current cell (containing this formula)

@return mixed The cells referenced by cellAddress

@todo    Support for the optional a1 parameter introduced in Excel 2010
INDIRECT .