LoginSignup
0
1

More than 5 years have passed since last update.

LibreOffice の Calc で Excel ファイルを開いたら、LOOKUP 関数でエラーになったので SUMPRODUCT 関数に修正する

Last updated at Posted at 2018-06-22

LibreOffice の Calc で Excel ファイルを開いたら、
以下の様な LOOKUP 関数でエラーになった。

=LOOKUP(1,0/(B47+ROW($1:$6)-1=B47:B52),B47:B52)

ググっても、なかなか情報が出てこず結構困ったけど、
なんとか解決出来たので、シェア。

=SUMPRODUCT((B47+ROW($1:$6)-1=B47:B52),(B47:B52))
=SUMPRODUCT((B47+ROW($1:$6)-1=B47:B52)*(B47:B52))

とりあえず、
以下は同じ動作するみたいです。たぶん…。

=LOOKUP(1,0/([配列]),[配列])
=SUMPRODUCT(([配列]),[配列])
=SUMPRODUCT(([配列])*([配列]))

以上。


【2018/06/27追記】

すみません。
色々わかっていなかったみたいです…。

LOOKUP の関数は振替休日を算出する関数だったんですが、以下のページで詳しい説明がありました。

この LOOKUP 関数は、GW などの連なった祝日のどれかが日曜と重なった場合、最後の祝日の翌日を次の日を振替休日として、算出している様です。

=LOOKUP(1,0/(B5+ROW($1:$6)-1=B5:B10),B5:B10)+1

で、微妙に違うところもありますが、
これとほぼ同じ動きを SUMPRODUCT で行うと、

=SUMPRODUCT((B5+ROW($1:$6)=B5:B10+1)*(B5:B10+1=B6:B11))+B5+1

でいけるのではと思います。

LOOKUP 関数では、連なった祝日の最後の祝日を算出してますが、
SUMPRODUCT 関数では、連なった祝日の残りの祝日の数を算出しています。

例えば、05/03 が日曜だった場合、

LOOKUP 関数では、05/05 を算出し、それに +1 で 05/06、
SUMPRODUCT 関数では、05/03 の後の残りの祝日数を算出(2)し、それを 05/03 に足して、さらに +1 して、05/06 としています。

ただ、
(現実的には無いけど…)これでも微妙に違いが出るパターンが有ると思いますので、ご注意下さい。

適当な投稿で非常に申し訳ありませんでした…。

以上。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1