【问题标题】:PHPSpreadsheet and Implicit intersection operator: @PHPSpreadsheet 和隐式交集运算符:@
【发布时间】:2020-03-04 04:46:42
【问题描述】:

我在 Excel 模板中命名了范围,并在生成文件时使用公式 =MIN(IF(UnitTypes=T43,Rents)) 转换为 =MIN(IF(@UnitTypes=T43,Rents))。由于隐式交集运算符:@,除非我手动进入每个单元格并删除 @,否则该公式不起作用。

我尝试使用:=MIN(IF(C:C=T43,L:L)) 只是为了将其转换为=MIN(IF(@C:C=T43,L:L))

我也尝试在 PHPSpreadsheet 中设置命名范围:

$spreadsheet->addNamedRange( new \PhpOffice\PhpSpreadsheet\NamedRange('UnitTypes', $spreadsheet->getSheet(1), 'C15:C38') );
$spreadsheet->addNamedRange( new \PhpOffice\PhpSpreadsheet\NamedRange('Rents', $spreadsheet->getSheet(1), 'L15:L38') );

$spreadsheet->getSheet(1)->setCellValue('T45','=MIN(IF(UnitTypes=T43,Rents))');

但是,这会产生 #VALUE 错误,(而再次删除 @ 将起作用。)

PHPSpreadsheet 中是否有防止 Excel 插入隐式交集运算符的设置?

【问题讨论】:

  • 根据 Excel 的版本,MINIFS 是否可用?
  • 我正在使用 Office 365
  • 然后使用MINIFS。
  • 生成未捕获的 PhpOffice\PhpSpreadsheet\Calculation\Exception: Rent Roll !T45 -> 公式错误:意外,在 /home/devl3valuation/public_html/cards/templates/src/vendor/phpoffice/phpspreadsheet /src/PhpSpreadsheet/Cell/Cell.php:274 公式不错。我试过 '=MINIFS(Rents, UnitTypes, T43)' 和 '=MINIFS(L:L, C:C, T43)'
  • 嗯 - 对不起,我不是 PHP 人,不知道该建议什么。

标签: excel phpspreadsheet


【解决方案1】:

这是通过进入 Excel 中的公式并按住 CTRL=SHIFT=ENTER 来包围 {} 中的公式来获得的

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2013-08-25
    • 2021-12-02
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多