Я создал несколько формул и добавил их в таблицу PhpSpreadsheet без каких-либо проблем. Но когда я создал следующую формулу, добавил в PhpSpreadsheet и открыл файл xlsx 6 из 8 строк имели «#VALUE!»
Формула вычисляет STDEV для диапазона ячеек, которые больше или равно минимальному значению и меньше или равно максимальному значению.
Формула была создана следующим образом:
$cf_mP_Stdev =
"=STDEV(IF(('" . $samplesWellsSheetName . "'!" . $mpCol . ($writeSampleWellsRow - 319) . ":" . $mpCol . $writeSampleWellsRow . ">=J" . $writeControlPlatesRow . ")*('" .
$samplesWellsSheetName . "'!" . $mpCol . ($writeSampleWellsRow - 319) . ":" . $mpCol . $writeSampleWellsRow . "<=L" . $writeControlPlatesRow . "),'" .
$samplesWellsSheetName . "'!" . $mpCol . ($writeSampleWellsRow - 319) . ":" . $mpCol . $writeSampleWellsRow . "))";
В Excel я ожидал:
=STDEV(IF(('Samples-Wells'!H3:H322>=J4)*('Samples-Wells'!H3:H322<=L4),'Samples-Wells'!H3:H322))
, но когда я открыл свой файл xlsx, он имел символы '@' перед двумя из трех диапазонов:
=STDEV(IF((@'Samples-Wells'!H3:H322>=J4)*(@'Samples-Wells'!H3:H322<=L4),'Samples-Wells'!H3:H322))
Для этой формулы и следующей формулы вычисленное значение было правильным. Но за следующие 6 формул я получил «# ЗНАЧЕНИЕ!». Вот третья формула. Нет разницы, кроме того, что это против следующего набора ячеек. Столбец H на листе Samples-Wells содержит данные от строки 3 до 1282.
=STDEV(IF((@'Samples-Wells'!H323:H642 >= J6)*(@'Samples-Wells'!H323:H642 <= L6),'Samples-Wells'!H323:H642))
Итак, мои вопросы:
Почему символы @ добавляются в формулу? Это происходит из PhpSpreadsheet или Excel?
Примечание: Если я вручную удаляю символы @ из формулы в Excel и нажимаю ввод, вычисление правильное.
Есть мысли о том, почему первые две формулы для «Stdev mP» работали, но последние шесть не сработали?
Использование PhpSpreadsheet 1.10.1