Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Rozwiązany] PHPOffice, PhpSpreadsheets, problem z zakresem z funkcją
bulimaxiu
post 11.05.2022, 09:05:08
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

Ostrzeżenie: (0%)
-----


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?

Ten post edytował bulimaxiu 11.05.2022, 09:53:44
Go to the top of the page
+Quote Post
nospor
post 11.05.2022, 09:11:51
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Do jakiej funkcji php/phpoffice przekazyjesz ten tekst?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bulimaxiu
post 11.05.2022, 09:52:54
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

Ostrzeżenie: (0%)
-----


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ą.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 17:12