プロが教える店舗&オフィスのセキュリティ対策術

以下のURLで、質問が3つあって、XLOOKUP関数が、①一致モードが0の場合は、ソート順に並んでいれば、検索モードが2とー2が選べて、ソート順に並んでいなければ、1とー1が選べるという事でしょうか? で、②一致モードが、ー1と1の場合はソート順に並んでなければならなくて、検索モードは、2とー2しか選べないという事でしょうか?③一致モードが2の場合は検索モードがー1と1しか選べないのは何故でしょうか?以上3点教えていただけると助かります。すみません。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …

質問者からの補足コメント

  • うーん・・・

    一致モードがー1と1ではソートされていなくても使えるが、ソートされていると検索モードの2とー2も使えるという事でしょうか?教えていただけると助かります。すみません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/08/15 21:57
  • うーん・・・

    因みに、一致モードが0の時は検索モードはどれでも大丈夫という事でしょうか?教えていただけると助かります。すみません。

      補足日時:2021/08/15 23:23
  • うーん・・・

    一致モードがー1と1ではソートされていなくても使えるが、ソートされていると検索モードの2とー2も使えるという事でしょうか?教えていただけると助かります。すみません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/08/16 17:36

A 回答 (4件)

少し違うようです。


一致モード(0完全一致・-1一致か直近小・1一致か直近大・2ワイルドカード)は、検索モードや昇順降順の制約はありません。
検索モードのうち、1先頭→末尾(デフォルト)・-1末尾→先頭は、昇順降順の制約はありません。
2バイナリ検索(昇順で並び替え)と-2:バイナリ検索(降順で並び替え)のみ、並び方の制約があります。これは、バイナリ検索に必要な条件だからです。
③ですが、ワイルドカードがあるので、部分一致を探索します。したがって、データが並んでいても、探索方法は順探索しかできません。例として、
"abc","acbx","bac","bca","cab","cba"の6個のデータから"*x*"を探すものとして、最初に中央値"bca"を調べ、一致しない(xがない)ので、前方に行くのか後方に行くのかわかりません。このような事情で、1先頭→末尾(デフォルト)・-1末尾→先頭しかできないのです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

一致モードが、ー1と1は、データが、ソート済みだと聞いたのですが。それと、③は、数字であれば探せるという事でしょうか?ワイルドカードは、文字にしかつかないですよね?教えていただけると助かります。すみません。

お礼日時:2021/08/15 21:21

①「一致モードが、ー1と1は、データが、ソート済みだと聞いたのですが。


一致モードが、ー1と1は、データの並びに制約はありません。
②「③は、数字であれば探せるという事でしょうか?ワイルドカードは、文字にしかつかないですよね?」
ご指摘の通り、ワイルドカードは、検索対象が文字の場合にしかつかえません。数値は、”123”のような文字列ではなく、二進数(厳密には不明ですが倍精度浮動小数点などの形式と思われます)なので、文字単位(1bytes)の意味がないのです。
③「一致モードが0の時は検索モードはどれでも大丈夫という事でしょうか?」
ご指摘の通りです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

②の文字単位が分かりません。普通の数字では使えないという事でしょうか?もう少し詳しく教えていただけると助かります。すみません。②の回答を詳しく教えていただけると助かります。すみません。

お礼日時:2021/08/16 17:35

①「一致モードがー1と1ではソートされていなくても使えるが、ソートされていると検索モードの2とー2も使えるという事でしょうか?」


ご指摘の通りです。
②「②の文字単位が分かりません。普通の数字では使えないという事でしょうか?」
これは説明すると長くなるし、予備知識がないとその説明もしないといけないので、ここでは詳しく言えません。文字の”1"はASCIIコード表では1バイト二進表記で、0011-0001ですが、数字の1は1バイトで二進表記で0000-0001です。このように、文字と数字とは違うものなのです。ここではこれぐらいにしておきます。
    • good
    • 0
この回答へのお礼

"abc","acbx","bac","bca","cab","cba"の6個のデータから"*x*"を探すものとして、最初に中央値"bca"を調べ、一致しない(xがない)ので、前方に行くのか後方に行くのかわかりません。このような事情で、1先頭→末尾(デフォルト)・-1末尾→先頭しかできないのです。とは、どういう事でしょうか?一致しないので、前方に行くのか後方に行くのか分かりません。という所です。教えていただけると助かります。すみません。

お礼日時:2021/08/16 20:32

バイナリ探索(二分探索)において部分一致が探索できない理由について


"abc","acbx","bac","bca","cab","cba"の6個のデータがあるとして、これは昇順に並んでいるので本来は(部分探索でないなら)バイナリ探索ができます。
二分探索の探索順序を、”abc”探索で追ってみます。
①中央値を調べます。中央値"bca"は目的値"abc"よりより大きいので、前方探索に移ります。
②"bca"より前の中央値を調べます。中央値"acbx"は目的値"abc"より大きいので、前方探索に移ります。
③"acbx"より前の中央値を調べます。中央値”abc”は目的値"abc"ですので、探索を終了します。
さて、部分探索でも、同様に二分探索を"*x*"探索で、試みてみます。
①中央値を調べます。中央値"bca"は目的値"*x*"よりより大きいのでしょうか、小さいのでしょうか。
そのような事情で、バイナリ探索は使えません。
    • good
    • 0

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