アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの数式で以下のようなものを見うることが有ります。

INDEX(0/(A:A<>""),0)

論理演算なのかなと思いますが、何を意味しているのかネットを調べたのですが
さっぱり見つかりませんでした。

もしかしたら調べ方が悪いのかもしれませんが、キーワードもわからないような状態です。

疑問は以下の内容です。

1.配列<>""は何を意図しているのでしょうか?
2.数字/配列の意味
 ①スラッシュ「/」は、もしかしてORの意味合い?
 ②そもそも0/(A:A<>"")は何を期待しているのか?
3.配列の論理演算子
 上記が配列の論理演算だとした場合、他の論理演算子はどのような物があるのでしょうか?

ご教示ください。

A 回答 (2件)

No.1です。



> ご教示頂いた内容ですと、上記①・②式のINDEX
> 関数は配列の0番目の項目を参照する事になりそうです。

私も今回のことで初めて知ったのですが、INDEX関数で2番目の引数に0を指定すると、配列の中の特定の位置の値ではなく、配列そのものを返す仕様のようです。

WorksheetFunction.Index メソッド (Excel) - MSDN の注釈 - 配列形式の部分
https://msdn.microsoft.com/ja-jp/vba/excel-vba/a …


あとNo.1で書いた式の変型は、実はExcelの「数式」タブの「数式の検証」でみることができます。今回のような一見意味不明な式の意味を知る助けになると思いますので、ご利用下さい。
    • good
    • 0
この回答へのお礼

なるほど!INDEX関数にそのような機能が有るとは思いませんでした。
いやーおどろきました。

実際に数式の検証をやってみました。
配列そのものを返している様がよくわかりました。

数式検証の方法までご教示いただきありがとうございました。

本当に勉強になりました。
やっとスッキリしました。

お礼日時:2018/06/28 05:36

> INDEX(0/(A:A<>""),0)



最後の数字は本当に0なのでしょうか? 1以上が正しいような気がします。。


前提
1. A:Aだと範囲が広すぎるので、A1:A3で考えます。
2. A1セルとA2セルに何か値が入っていて、A3セルは空とします。
3. 最後の0は1にします。

式の変形していきます。
INDEX(0/(A1:A3<>""),1)
 ↓
INDEX(0/({A1<>"";A2<>"";A3<>""}),1)
 ↓
INDEX(0/{A1<>"";A2<>"";A3<>""},1) ' 各セルが空白か否かを判断
 ↓
INDEX(0/{TRUE;TRUE;FALSE},1)
 ↓
INDEX(0/{1;1;0},1) ' TRUEは1、FALSEは0なので
 ↓
INDEX({0/1;0/1;0/0},1)
 ↓
INDEX({0;0;#DIV/0!},1)

従って配列{0;0;#DIV/0!}の1番目の値は0なので、0が式の値になります。

つまり2番目の引数で指定したセルに値が入っていれば0が返り、空白なら#DIV/0!が返ることになります。
    • good
    • 0
この回答へのお礼

非常にわかりやすいご回答ありがとうございます。
配列を要素展開して考えれば分かりやすいという事ですね。

ご指摘いただたいた式:INDEX(0/(A:A<>""),0)なのですが実際にはMATCH関数に
ネストして使用しています。

①一番最初に値が入っている行:MATCH(1,INDEX((A1:A3<>"")*1,0),0)
②一番最後に値が入っている行:MATCH(1,INDEX(0/(A1:A3<>""),0),1)

上記①・②の数式はネットで見つけ、実際に正しく値を返してくるのですが、内容が
わからないと今後応用もできないし、落ち着かずにいました。

追加の質問で申し訳ないのですが、ご教示頂いた内容ですと、上記①・②式のINDEX
関数は配列の0番目の項目を参照する事になりそうです。

それだと値が無いはずなので、正しい結果は返さ無いのではないかと思うのですが、
何か特殊な事が起きているのでしょうか。

お礼日時:2018/06/28 02:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!