diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php
index 00d86f00..d94a8852 100644
--- a/src/PhpSpreadsheet/Reader/Xlsx.php
+++ b/src/PhpSpreadsheet/Reader/Xlsx.php
@@ -312,15 +312,16 @@ class Xlsx extends BaseReader
private function castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType): void
{
+ $attr = $c->f->attributes();
$cellDataType = 'f';
$value = "={$c->f}";
$calculatedValue = self::$castBaseType($c);
// Shared formula?
- if (isset($c->f['t']) && strtolower((string) $c->f['t']) == 'shared') {
- $instance = (string) $c->f['si'];
+ if (isset($attr['t']) && strtolower((string) $attr['t']) == 'shared') {
+ $instance = (string) $attr['si'];
- if (!isset($sharedFormulas[(string) $c->f['si']])) {
+ if (!isset($sharedFormulas[(string) $attr['si']])) {
$sharedFormulas[$instance] = ['master' => $r, 'formula' => $value];
} else {
$master = Coordinate::indexesFromString($sharedFormulas[$instance]['master']);
diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/SharedFormulaTest.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/SharedFormulaTest.php
new file mode 100644
index 00000000..94f8e349
--- /dev/null
+++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/SharedFormulaTest.php
@@ -0,0 +1,41 @@
+', $data);
+ self::assertStringContainsString('', $data);
+ }
+ }
+
+ public function testLoadSheetsXlsxChart(): void
+ {
+ $filename = self::$testbook;
+ $reader = IOFactory::createReader('Xlsx');
+ $spreadsheet = $reader->load($filename, IReader::LOAD_WITH_CHARTS);
+ $sheet = $spreadsheet->getActiveSheet();
+ self::assertSame('=(RANDBETWEEN(-50,250)+100)*10', $sheet->getCell('D6')->getValue());
+ self::assertSame('=(RANDBETWEEN(-50,250)+100)*10', $sheet->getCell('E6')->getValue());
+ $spreadsheet->disconnectWorksheets();
+ }
+}