[[20260319124345]] 『MATCHの計算結果について』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『MATCHの計算結果について』(初心者)

エクセルのシートのセルの以下の範囲に 1 を入力します。

 A01:BH1
 AE2:AN2,AY2:BH2
  U3:AD3,AY3:BH3
  K4: T4,AY4:BH4
  A5: J5,AY5:BH5

次に、それぞれのセルに計算式をいれます。

 CD1=MATCH(1,A1:CB1,1)
 CD2=MATCH(1,A2:CB2,1)
 CD3=MATCH(1,A3:CB3,1)
 CD4=MATCH(1,A4:CB4,1)
 CD5=MATCH(1,A5:CB5,1)

このとき、CD2 の値だけ40になります。
これはこういう仕様なのでしょうか?
それともバグなのでしょうか?
仕様だとすれば、なぜこのようになるのでしょうか?

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 バグでありません。仕様です。
 MATCH関数で照合の型に1を指定する場合、検索範囲は昇順で配置しなければなりません
 検索範囲が昇順になっていない場合、結果は保証されません。 二分探索するので。

 二分探索については調べてみてください
(´・ω・`) 2026/03/19(木) 13:25:36

1が表示されている左端の位置と右端の位置を得るには
どうすればいいのでしょうか?
 1行目最小値=41,最大値=60
 2行目最小値=31,最大値=60
 3行目最小値=21,最大値=60
 4行目最小値=11,最大値=60
 5行目最小値=1,最大値=60
(初心者) 2026/03/19(木) 13:54:44

 左端 =XMATCH(1,A2:CB2,0,1)
 右端 =XMATCH(1,A2:CB2,0,-1)
(´・ω・`) 2026/03/19(木) 14:03:13

(´・ω・`)さんありがとうございます。
2文探索わかりました。
と、思います。

 検索範囲が昇順ではなくて、検索範囲のデータが昇順になっていなければ
 ならないということですよね。

 今回は範囲が80なので40から検索をはじめて
 2行目の40番に1があり、41番目が1ではないのでそれ以降に1がないと判断し
 それ以外の行では40番に1がなく空なので(空<1)右側に検索し、
 最初に見つけた1の位置から1が続く最終の80番目を
 答えとしているというわけですよね。
(初心者) 2026/03/19(木) 14:08:40

 Excel内部でどのように実装されているかはわかりませんので、なんともいえませんが、
 >2行目の40番に1があり、41番目が1ではないので
 二分探索なので、「40番」のあとに「41番」をチェックすることはないでしょう
(´・ω・`) 2026/03/19(木) 15:36:58

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.