getSheet(); $sheet->getParentOrThrow()->addDefinedName(new NamedRange('NAMED_RANGE', $sheet, 'C1')); $sheet->getCell('A1')->setValue("=ISREF($ref)"); self::assertSame($expected, $sheet->getCell('A1')->getCalculatedValue()); } public static function providerIsRef(): array { return [ 'cell reference' => [true, 'B1'], 'invalid cell reference' => [false, 'ZZZ1'], 'last valid column' => [true, 'XFD1'], 'beyond last valid column' => [false, 'XFE1'], 'last valid row' => [true, 'A1048576'], 'beyond last valid row' => [false, 'A1048577'], 'cell range' => [true, 'B1:B2'], 'complex cell range' => [true, 'B1:D4 C1:C5'], 'text string' => [false, '"PHP"'], 'math expression' => [false, 'B1*B2'], 'unquoted sheet name' => [true, 'Worksheet2!B1'], 'quoted sheet name' => [true, "'Worksheet2'!B1:B2"], 'quoted sheet name with apostrophe' => [true, "'Work''sheet2'!B1:B2"], 'named range' => [true, 'NAMED_RANGE'], 'unknown named range' => [false, 'xNAMED_RANGE'], 'indirect to a cell reference' => [true, 'INDIRECT("A1")'], 'indirect to a worksheet/cell reference' => [true, 'INDIRECT("\'Worksheet\'!A1")'], 'indirect to invalid worksheet/cell reference' => [false, 'INDIRECT("\'Invalid Worksheet\'!A1")'], 'returned cell reference' => ['incomplete', 'CHOOSE(2, A1, B1, C1)'], ]; } }