Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
RE:「この関数で何故やりたいことが実現できるのか教えてください」の「のらねこ」さんへ
投稿日時: 22/05/05 16:51:39
投稿者: WinArrow
投稿者のウェブサイトに移動

【配列数式とは、】でWeb検索すると、次のように説明されています。
 

引用:

配列数式とは、配列(複数セル)を対象に、1つの数式を作成する式です。

 
この説明は、間違っていませんが、肝心なことがぬけていると、私は、思います。
 
それは、1つではなく、複数の答(配列)を返すということです。
 
>配列(複数セル)を対象
といえば、一般的に使用されている「SUM」「Vlookup」など、沢山あります。
 
配列数式を含む数式では、数式全体を「{」「}」で囲む形になっていますが、
どこの部分が該当するかを見極めることが大事です。
前トピの
MATCH関数の「検索範囲」取得に配列数式が使われています。
MMYSさんのレスにあるように
{FALSE,TRUE,FALSE,FALSE}の部分です。
それ以外の部分は、一般的な数式です。
 
=MATCH(TRUE,{FALSE,TRUE,FALSE,FALSE},0)
 
しばらく掲示しておきます。

回答
投稿日時: 22/05/06 12:27:03
投稿者: MMYS

先の話ですが、まず、論理演算の理解が必要です。論理演算は理解してますか。まずは、その論理演算を説明する前、次の例題を考えてみてください。
 
次の文章が、正しいものは○、間違いは×をつけなさい。

・赤信号は止まれ  ⇒  ○
・黄信号は進め   ⇒  ×
・青信号は止まれ  ⇒  ×

小学生でも、正解する例題ですが、それはさておき、
コンピューターでは、正しいものはTRUE、正しくない時はFALSEとなります。
・赤信号は止まれ  ⇒  TRUE
・黄信号は進め   ⇒  FALSE
・青信号は止まれ  ⇒  FALSE

つまり、正しいときだけ、TRUE。それ以外はFALSEです。
これで、基本は理解したと思いますので、次に移ります。
 
 
Excelに話を戻します。先のWinArrowさんの例題を元にすると次の通りです。
  "a"="b"  ⇒  ×
  "b"="b"  ⇒  ○
  "c"="b"  ⇒  ×
  "b"="b"  ⇒  ○

つまり、左辺の値が、"b"かを比較しています。この条件が成立するときは○ 不成立は×です。だだし、コンピューターなので結果は、次の通り TRUE/FALSE です。なお、論理演算の条件 ="b" に注目
  "a"="b"  ⇒  FALSE
  "b"="b"  ⇒  TRUE
  "c"="b"  ⇒  FALSE
  "b"="b"  ⇒  TRUE

https://www.moug.net/faq/viewtopic.php?t=81422
 
 
ここまでは、よろしいですか。
では、Excelの適当なセルに次の数式を入れてみてください。
 
=("a"="b")
=("b"="b")
=("c"="b")
=("b"="b")
 
Excelの結果は、どんな値が表示されると思いますか。実行前に結果をご自身で結果を予想し、実際に実施したときの結果を確認してください。予想通りですか。
 

回答
投稿日時: 22/05/06 13:09:51
投稿者: MMYS

さて、配列数式の
=MATCH(TRUE,A1:A4="b",0) ですが、
 
Excelの内部では、次のように展開されます。
=MATCH(TRUE,{A1="b",A2="b",A3="b",A4="b"},0)
 
次にA1からA4を、セル値に置き換えます。
=MATCH(TRUE,{"a"="b","b"="b","c"="b","b"="b"},0)
 
その後、論理演算が行われます。
=MATCH(TRUE,{FALSE,TRUE,FALSE,TRUE},0)
 
 
あとは、配列 {FALSE,TRUE,FALSE,TRUE}から、最初のTRUEが何番目にあるかを返すMATCH関数です。今回の例なら 2 が返ります。
 

投稿日時: 22/05/07 08:11:10
投稿者: WinArrow
投稿者のウェブサイトに移動

若しかして
>=A1="b"
が、なぜ「TRUE」や「FALSE」になるのか?
を疑問に思っていませんか?
これは、次の条件式と同じです。
=IF(A1="b",TRUE,FALSE)
 
「のらねこ」さんの閲覧を願いつつ・・・閉じます。