
エクセルの数式で以下のようなものを見うることが有ります。
INDEX(0/(A:A<>""),0)
論理演算なのかなと思いますが、何を意味しているのかネットを調べたのですが
さっぱり見つかりませんでした。
もしかしたら調べ方が悪いのかもしれませんが、キーワードもわからないような状態です。
疑問は以下の内容です。
1.配列<>""は何を意図しているのでしょうか?
2.数字/配列の意味
①スラッシュ「/」は、もしかしてORの意味合い?
②そもそも0/(A:A<>"")は何を期待しているのか?
3.配列の論理演算子
上記が配列の論理演算だとした場合、他の論理演算子はどのような物があるのでしょうか?
ご教示ください。
No.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の「数式」タブの「数式の検証」でみることができます。今回のような一見意味不明な式の意味を知る助けになると思いますので、ご利用下さい。
なるほど!INDEX関数にそのような機能が有るとは思いませんでした。
いやーおどろきました。
実際に数式の検証をやってみました。
配列そのものを返している様がよくわかりました。
数式検証の方法までご教示いただきありがとうございました。
本当に勉強になりました。
やっとスッキリしました。
No.1
- 回答日時:
> 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!が返ることになります。
非常にわかりやすいご回答ありがとうございます。
配列を要素展開して考えれば分かりやすいという事ですね。
ご指摘いただたいた式:INDEX(0/(A:A<>""),0)なのですが実際にはMATCH関数に
ネストして使用しています。
①一番最初に値が入っている行:MATCH(1,INDEX((A1:A3<>"")*1,0),0)
②一番最後に値が入っている行:MATCH(1,INDEX(0/(A1:A3<>""),0),1)
上記①・②の数式はネットで見つけ、実際に正しく値を返してくるのですが、内容が
わからないと今後応用もできないし、落ち着かずにいました。
追加の質問で申し訳ないのですが、ご教示頂いた内容ですと、上記①・②式のINDEX
関数は配列の0番目の項目を参照する事になりそうです。
それだと値が無いはずなので、正しい結果は返さ無いのではないかと思うのですが、
何か特殊な事が起きているのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで配列の計算
-
IF関数でEmpty値を設定する方法。
-
動的配列が存在(要素が有る)か...
-
ログデータを表示するグラフに...
-
ジャグ配列とは
-
VBでbyte配列型のインスタンス...
-
EXCEL VBA で、0から?1から?
-
遅延バインディングを使用でき...
-
変数を動的に作るには?
-
Visual C++ でコントロールを...
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JavaScriptの変数をjavaのメソ...
-
ORA-01858: 数値を指定する箇所...
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
streamで送信されたArrayListを...
-
JavaScriptとVBScriptに関して
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
パソコンキーボードで時分秒を...
-
動的配列が存在(要素が有る)か...
-
VBAで配列の計算
-
VB.net 引数で配列変数を渡す際...
-
C言語 重複しない4ケタの乱数...
-
EXCEL VBA で、0から?1から?
-
変数を動的に作るには?
-
複数のテキストボックスに同じ...
-
配列の要素数を超えた参照のコ...
-
VBでbyte配列型のインスタンス...
-
10進数を4桁のバイト配列に格納...
-
ジャグ配列とは
-
ログデータを表示するグラフに...
-
ゲーム箱入り娘のつくりかた
-
遅延バインディングを使用でき...
-
VBで作った乱数を一度も重複さ...
-
C#の質問
-
このプログラムがわかりません
-
【MFC】GetCount()とGetSize()...
おすすめ情報