nfTlWNl rn Ѻq$³*L ZR]_-H#GP~ wz9SͰK#:.[C#֒Hnn!V5孱4Fϟh^|}3 稅^iI4 H Ϝf&oAY\QN#]>H7Kh>/. vu˼ƒPQ?ltjd~2|~-Ŋ҄ݫ7( l#1 $1oJ CӝINg0)L\`! ) ^2sx^6;*ҫjFJ,Nbð\U.8n;LhNΗxjξ>@ey5GIIT2Zd\usB^_黈i}ߧ DaXsVb^BFwnUid/}*"a}O?^gE}3=<$^ZnDXɋ&NZ1kּð)4QJvr :IwY^[w])ejSطdS6<~R;ﮣ%G/Y?>DMWGYH`:zq&4`hn.H4#WORii~ѱ,7R;|2Va]7؀|]=%D|0}D4 o&SߐJ |NNTN7J6z:&AyFP9nVf"\v*@M0~8JAR~๤eb6~mf\ﱝ9Qݼf\q2;3[ϣH? mg\xhUkQЖhTV~ x._5 ƞɀnim6ruݻJߖkyVSrЍ ,XU%pQӃ\f0j{!\jY>뺁s~=o&)7dl}s3OyA3 بdYe%u CPGģSGe|9,5o 1*g*}1LM+P.wC%*;~'3jvx0z9G-\uBD ܰJDT|6j@`+,*ѭfO۩On? &Gh??>^rέ?AoS$8JAD$'d~Tj3[}V¦nvʀ>jg%63NR݊&d .4 #])6I9շ],HI1#8)&xz΄] rؕy?)R 0n'T@meQAOyܲ'N 4$/x[ q}q"Y w57ս+-zOٷùD] e(<ѱjN!~AUUߨnim63[D ń4v٧l{y8k߭ An4('l.T*]X3{OiVvRRObƇ`v"ŭQˈR&]bNO+朣lBcc2Qi%48{4i^U#{H#4#f 9eC)u@8vI{4̘Pp]H",`r+ {I&c41廖ꄴb(|S!yNB:MT3OB#\ 4B}_~jB.#p*=,PGHGj6;$*%|RM@R, T>d˥CD lQH3i'+U e;|rɽ҈ kA8,93ZxOQA]@Jɤֹ38XBTi=^|:-Za$ Lب2_ڴx?<=pQJObQQj̮AcJbm OWxJT1KhR((6^ dl޶-;/xlT(*XvU\*b^yO㲨 Mߋ*a2+ya{,@t\o=8% vALv3Od-@}>ٞaٳeΏVH[v {i+L.3U' 83= k?@q)~Uŵ݀>ҺdRlJIPUٲ=tлlq6rGwcR ĢQ$3R^AG@&M5J.}(2W(m,$^+jE%&#cXQjqź%rT 5b9& X6y;7\U$+HJbJ=xP=Bo)C$Յ'C#UӸ_Cwl֩7 ĢQ$3SZYqΚ˯53au ĢQ$3); } } unset($value); // Then rebuild the condition string to return it return implode(Calculation::FORMULA_STRING_QUOTE, $splitCondition); } protected function conditionCellAdjustment(array $matches): string { $worksheet = $matches[1]; $column = $matches[6]; $row = $matches[7]; if (strpos($column, '$') === false) { $column = Coordinate::columnIndexFromString($column); $column += $this->referenceColumn - 1; $column = Coordinate::stringFromColumnIndex($column); } if (strpos($row, '$') === false) { $row += $this->referenceRow - 1; } return "{$worksheet}{$column}{$row}"; } protected function cellConditionCheck(string $condition): string { $splitCondition = explode(Calculation::FORMULA_STRING_QUOTE, $condition); $i = false; foreach ($splitCondition as &$value) { // Only count/replace in alternating array entries (ie. not in quoted strings) $i = $i === false; if ($i) { $value = (string) preg_replace_callback( '/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', [$this, 'conditionCellAdjustment'], $value ); } } unset($value); // Then rebuild the condition string to return it return implode(Calculation::FORMULA_STRING_QUOTE, $splitCondition); } protected function adjustConditionsForCellReferences(array $conditions): array { return array_map( [$this, 'cellConditionCheck'], $conditions ); } }