古いExcelで関数が使えるかどうかチェックする

残念ながら古いExcelでは、最新の関数を使うことができません。
しかし、Excel2007以降であれば、どこバージョンで作ったデータでも相互に読み取ることはできます。
そのときに、対応していない最新の関数は昔のExcelでは使えないので#NAMEエラーになります。
エラーとなった場合は、その代替え手段をとるのか、それならばその計算は使っているExcelではできない旨を表示するかの判断が必要です。
今回は、古いExcelで最新関数を扱うときのテクニックを紹介します。

エラーの判断

通常のExcelの数式は、計算式内でエラーが発生すれば、そのエラーをそのまま引きずって最終的な答えもエラーになります。
しかし、エラー処理をするIFERROR関数や、エラーを検出するISERROR関数は、その結果がエラーでもエラーにならず処理できます。
古いExcelでは新しいExcel関数は知らないのでエラーになります。
そのエラーを検出すればよいのです。

実際の仕組み

では実際に、そのExcelが知っている関数かどうかを調べてみましょう。
実際に使用したい関数は

=IFS(A1=”A”,1,A1=”B”,2, TRUE,0)+ROW()

だとします。

その関数を使った計算式はエラーになっているかをチェックします。
この時、他のエラーにならないように、その関数は対応しているExcelならば間違いなくエラーにならない単純な式である必要があります。

例えばIFS関数であれば、条件式と値が交互に来るので

=IFS(TRUE,0,FALSE,1)

のように単純化します。

実際の式は、

=IF(ISERROR(IFS(TRUE,0,FALSE,1)),”このExcelでは計算できません”, IFS(A1=”A”,1,A1=”B”,2, TRUE,0)+ROW())

のようになります。

この時、ROW関数も対応しているExcelかどうかを試す場合は、ISERROR関数の中に入る計算式を

=IFS(TRUE,0,FALSE,1)+ROW()

のような単純な式にして評価してもよいです。

そんなに単純ではなく、式を単純化するのも面倒な場合は、実際に使用する式をISERROR関数の中に入れてもかまわないと思います。その場合、他のエラーが混入してしまう可能性があることをわかっておきましょう。

まとめ

この記事を書こうと思ったのは、COUNTIFS関数は使い慣れてくるとものすごく便利なのですけど、Excel2013以前では使えないことを忘れていてしまったためです。
古いExcelを使うことは、サポートが切れてしまったExcelについては私としても対応しないのですが、Excel2013は記事執筆時点では、まだまだ現役ですので、そこでも使えるようにできるだけしなければいけないかと思います。

だからと言ってより複雑な構造にしてCOUNTIF関数で何とかするというのも、いいのか悪いのか。
だから、思い切って使えないのであれば使えないと表示した方が親切なのかもしれません。
そのExcelで使えない関数だった場合

  • 何もせずエラーのまま
  • 使えないことを検出してメッセージを表示
  • 昔のExcelでも動作するような計算式にする

という対処が考えられ、どれにするかはユーザーにその計算書がどんなものなのか説明している内容にもよるかと思います。

コメント

タイトルとURLをコピーしました