Napisany przez: bulimaxiu 11.05.2022, 09:05:08
Witam.
Tworzę w PHPOffice / PHPSpreadsheet w wersji 1.20.0 - 2021-11-23 formułę typu
Kod
=SUM($K$2:INDIRECT("K"&(ROW()-4)))
Excel tą formułę przyjmuje bez zastrzeżeń, ale klasa PHP niestety zwraca błąd
Kod
Fatal error: Uncaught TypeError...
Ustaliłem, że problem tkwi w części, gdzie podany zakres jest łączony z funkcji INDIRECT
Kod
=INDIRECT("K"&(ROW()-4)) // nie zgłasza błędu
=SUM(INDIRECT("K"&(ROW()-4))) // nie zwraca błędu
=SUM(INDIRECT("K"&(ROW()-5)):INDIRECT("K"&(ROW()-4))) // ZWRACA BŁĄD Uncaught TypeError: trim(): Argument #1 ($string) must be of type string, array given
=SUM($K$5:INDIRECT("K"&(ROW()-4))) // ZWRACA BŁĄD - błędna formuła
=SUM($K$5;INDIRECT("K"&(ROW()-4))) // ZWRACA BŁĄD - błędna formuła
=SUM($K$5:INDIRECT("K"+(ROW()-4))) // nie zwraca błędu, ale Excel wskazuje błędny argument
=SUM($K$5;INDIRECT("K"+(ROW()-4))) // ZWRACA BŁĄD - błędna formuła
Podejrzewam, że problemem jest określenie zakresu czyli dwukropek -> średnik, zgodnie z dokumentacją zastąpiłem, ale nadal jestem w ślepej uliczce.\
Czy ktoś dostrzega defekt?
Napisany przez: nospor 11.05.2022, 09:11:51
Do jakiej funkcji php/phpoffice przekazyjesz ten tekst?
Napisany przez: bulimaxiu 11.05.2022, 09:52:54
Ten tekst przekazuje do funkcji $sheet->setCellValue(), tak jak inne formuły (działają), choć nie zawierające zakresów.
Kod
$sheet->setCellValue('K20', '=SUM($K$5;INDIRECT("K"&(ROW()-4)))');
Problem rozwiązany. Wystarczyło zakres komórek określić w funkcji INDIRECT, a nie tylko adres docelowej komórki:
Kod
=SUM(INDIRECT("$K$2:K"&(ROW()-4)))
Pomimo, że Excel akceptuje obie te formy, to PHPOffice nakazuje tylko tą jedną.