質問編集履歴

1 コードをブロックに変更し、関数部分の扱いについて追記

zeijaku.net

zeijaku.net score 132

2017/02/15 12:49  投稿

PHPExcelでテンプレートの関数部分が#VALUEになる(もしくは消える)
PHPExcelを使ってExcelを作成しています。
環境:PHP5.6 / PHPExcel1.8.0
テンプレートに(template.xltx)に以下の様にしてデータを入力し、order.xlsとして出力しています。
```ここに言語を入力  
/* テンプレート追記 + 作成 */
$book = new PHPExcel();
$book->getProperties();
/* テンプレート指定 */
$book = PHPExcel_IOFactory::load('./template.xltx');
/* シート指定 */
$sheet = $book->getSheetByName('Sheet1');
$sheet->setCellValue('A1', 'Hellow');
$sheet->setCellValue('A2', 'World');
/* Excel生成 */
$writer = PHPExcel_IOFactory::createWriter($book, 'Excel5');
$writer->save('order.xls');
```  
問題はA3に以下の関数を入れています。
=IF(COUNTIF(A1,"*Hellow*"),"OK","NG")
※関数はテンプレートのA3に入力済み  
その為、実行した場合はExcel上に以下の様にデータが表示されるはずですが#VALUE!となってしまいます。
□実行結果
 A1:Hellow
 A2:World
 A3:#VALUE!
□求める結果
 A1:Hellow
 A2:World
 A3:OK
なぜ#VALUE!になるのか原因が分かりません。
原因、もしくは対応策などあればアドバイスいただけると助かります。
※Excelの生成をExcel2007で出力すると求める結果となりましたが、Excel2003で出力する必要があります。
※関数部分を=IF(COUNTIF(A1,"*"&"Hellow"&"*"),"OK","NG")と書き直したら、関数部分が消えるようになりました。
  • PHP

    23997 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Excel

    1921 questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • 関数

    259 questions

    関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る