ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:エクセル MATCH関数の内部処理について) エクセルMATCH関数の内部処理と結果の法則性 2007/01/11 20:20 このQ&Aのポイント エクセルのMATCH関数で照合の型に1を指定した場合、データ(数値)を昇順で並べ替えておく必要があるが、昇順になっていなくても何らかの数値が返る。しかし、その法則性はわかりにくく、明確な結論が得られないことがある。内部ではどのような処理が行われているのか、詳細な解説が求められている。 エクセル MATCH関数の内部処理について MATCH関数で、照合の型に1を指定する場合、データ(数値)を昇順で並べ替えておく必要があるとなっています。 しかし、仮に昇順になっていなくても何かしらの数値が返ってきます。 そして、その法則が今ひとつわかりません。 たとえば3を検索するとして、6例挙げてみます。 結果 | データ 3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 | 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 3 | 1 2 3 4 5 6 7 6 1 2 3 4 5 6 7 8 | 1 2 3 4 3 2 2 3 4 5 6 6 7 8 9 3 | 1 2 3 4 3 2 1 4 5 6 7 8 9 10 11 8 | 1 2 3 4 1 1 1 1 9 10 11 12 13 14 15 いろいろ試したのですが、仮説を立てるたびに反例が出てきてしまいどうしても結論が出ません。 内部では一体どのような処理を行っているのでしょうか? 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー venzou ベストアンサー率71% (311/435) 2007/01/11 21:28 回答No.1 厳密に確認したわけではないですが、こんな感じかな。 2分検索というアルゴリズムでは? n = 3 min = 1 max = 15 Do x = min + Int((max - min + 1) / 2) If data(x) = n Then Exit Do ElseIf data(x) < n Then min = x Else max = x End If If max = min Then Exit Do Loop Debug.Print x 質問者 お礼 2007/01/11 22:24 なるほど!これは確かに昇順でないと意味不明になりますね。 とても参考になりました。ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンソフトウェアオフィス系ソフト 関連するQ&A エクセル MATCH関数について エクセル2013の練習でMATCH関数とINDEX関数を利用した データを作っていました。 添付した画像のD79でMATCH関数を使って番号を表示しています。 D79に入力した式は=MATCH(C79,B73:B76)です。 指定の行はB73~B76までの4行で、春、夏、秋、冬の順番で並んでいますが C79に春と入力すると、順番としては1番目の春が何故か3と表示されます。 他の夏、秋、冬は順番通り2,3,4と結果が表示されます。 シートの設定を変にしてしまったのかもしれないと新規で開いて試しましたが結果は同じでした。 MATCH関数の検索を行ではなく列側に変えて試しもしましたが、結果は同じでした。 春以外の言葉や数字だとこのようなことは起こりません。 また、リストにしても直接打ち込みにしても同じ結果でした。 この現象を春を使用しない以外に回避する方法がありますでしょうか? 宜しくお願い致します。 エクセルの関数 VLOOKUP関数とINDEX+MATCH関数の使い分けが良く分かりません。 VLOOKUP関数が検索値と完全一致するものを検索 検索値と一致する値がない時データを昇順に並べ替えて検索値未満を検索 INDEX+MATCH関数もMATCH関数があるから似た事ができると思うのですがどうでしょうか? この2つがいまひとつ理解ができません。分かりやすい説明をいただければ幸いです。 よろしくお願いします。 エクセルのデータ処理についてアドバイス下さいませ A列に不規則なデータの並びがあり(昇順) そのデータが変わるごとにB列に数値を1づつ 増やしていきたいのですが、どのような手順(関数?)を 使用すれば良いのか判りません。 よろしくお願いいたします。excelを使用しています A列 B列 101 1 101 101 103 2 105 3 105 106 4 107 ? 107 107 110 ? 110 110 110 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム ExcelのMATCH関数での列指定 エクセルで作られた社員名簿のデータを別シートにINDEX関数を使って抜き出したいのですが、MATCH関数での列指定が上手くいきません。 表は A B C D E F 1 社員番号 社員氏名A 家族1氏名 家族1年齢 家族2指名 家族年齢 2 社員番号 社員氏名B 家族1氏名 家族1年齢 家族2指名 家族年齢 3 社員番号 社員氏名C 家族1氏名 家族1年齢 家族2指名 家族年齢 と、社員1名につきその家族が一行で表示されています。 これを別シートに家族1名につき一行の表があるので、年齢だけをこの表から持っていきたいのですが、一行に複数の家族がいるので、MATCH関数での列指定が上手くいきません。何かいい方法はないでしょうか? エクセル関数を使うと、まれに正しい値が返ってこない エクセルで、約4,000件のデータの照合作業を行っています。 MATCH関数を使用して、B列のデータがA列にある場合にはその 行数を返すように設定をしたつもりなのですが、 まれに間違った値が返ってきます。 一応例えを添付しました。 例えと違うのは、実際のデータは、テキストを含む ものもある複雑(?)なものです。 関数の式にも問題はありません。以前にもこのような現象が 起こったことがあります。件数が多いとこのように、バグと言うか エラーが出てしまうものなのでしょうか? 件数が多いので、関数で処理したかったのですが このような現象が起きてしまうと、どこか間違っている個所が あるのでは?と不安になり、かと言って 間違っている個所を一つ一つ確認する訳にもいかず、 困っています。 このような現象は普通なのでしょうか?解決方法はありますか? 分かりにくい説明で申し訳ございませんが、お知恵をお貸し 下さいませ。 よろしくお願い致します。 LOOKUP関数で こんばんは。 ある範囲内で右の列を基準にして左側のデータを検索したいのですが、 (VLOOKUPの基準が右になったようなもの) LOOKUP関数ではデータが昇順に並ぶ必要があるなど、 制約が多く上手く求める結果が得られません。 元のデータ(昇順になってません)を触ることなく 右側を基準にVLOOKUPした時のような答えを得るにはどうすれば良いでしょうか? 何か別の関数を指定すればよいのでしょうか? 色々考えてみるのですが、どうも上手く行きません。 ご存知の方がいらっしゃればぜひご教示いただけませんでしょうか? よろしくお願いいたします Excel 項目別昇順関数 皆様方の知恵をお借りに参りました。 あれこれ、サイト巡りして問題解決にあたりましたが、途方にくれています。 私のスキルは、入門者レベルで、至らない点は多くありますが、どうかお許しください。 まず、表をご覧ください。 D列からG列までの間に、データ入力をしております。実際は、200行分前後のデータあります。 D列、G列、K列、M列、O列、Q列は、「ユーザ定義」の設定において、「数値」にしてあります。 日付は、ランダムに入力しています。 これを、表のように、「車両費」など項目別に「日付」を検索して昇順させ、並べて 表示させたいのです。尚、中には、「車両費」の内訳が「空白欄」になっているものもあります。 さらに、「車両費」の内訳(ガソリン代・高速代など ---F列)を「項目別」にして、同じように 「日付」を昇順させ、表のように、「日付」「金額」のみ並べて表示させたいのです。 (データ入力の列をベースとしてください。) お調べしましたところ、「配列数式」と呼ばれるものが必要なのかもしれません。 また関数は、INDEX関数、MATCH関数、SMALL関数などの組み合わせになるかしれません。 どなたか、表のように、表示させることのできる「関数」を教えてください。 エクセルの関数について質問です。 エクセルの関数について質問です。 指定範囲内の中で一番下のデータを返す方法を教えてください。 ただし、必ずしも一番したのセルにデータがあるとは、限らない 状態です。 範囲内の空白のデータを除外したなかで、数値がはいっている ものの下端のデータを拾いたいのです。 教えてください。 マクロでないとできませんか? Excel のSUBTOTAL関数の応用についてお尋ねします。 Excel のSUBTOTAL関数の応用についてお尋ねします。 SUBTOTAL関数は対象データに小計が多いとき便利ですが、同じ列にAVERAGE値など集計対象外の数値が入っているときには、はじめから終わりまでベタの範囲指定ではうまくいきません。 集計対象外の数値をよけ、コンマで区切ってSUBTOTAL範囲に指定すれば、計算はできますが、それではSUBTOTALを使う意味がなくなってしまいます。 ここで別の関数を組み込んで、一発ベタの範囲指定でやっつける方法はないものでしょうか、教えてください、よろしくお願いします。 エクセルの関数について エクセルの関数について いつもご回答者の方々にはお世話になっています。 関数でまた教えていただきたいのですが、 下記画像のようなデータ(解像度の規制上、1月の途中までのデータのみ表示しています)から、該当月の3行目の値が1になっている最初のセルの1行目(1 月であれば1/1)と、3行目の値が1になっている最後のセルの1行目(1月であれば1/6)の値を返すような関数はありますでしょうか? 条件は下記です。 ・C40-N51にそれぞれの月のデータを作成する。 ・作業用の列/行は作成できない。 ・3行目が1になっている何番目などではなく、最初と最後を指定したい。 (月によっては6が1日だけある日(31日)があり、その場合は本関数で導き出される最初と最後を○/31としたい。) 自分なりにHLOOKUPとMATCHなどを組み合わせてやってみたのですが、どうしてもうまくいかず。 識者の方々よろしくお願いいたします エクセルの関数について いつもお世話になっております。 エクセルの操作(関数)について質問があります。 A列に日付、B列に数値を記載したデータがあります。 (1)データの抽出日を指定して、その日より○日前までの最大値、最小値 (2)上記と同じ条件で、マイナス平均、プラス平均 の求め方を教えてください。 分かりづらい文章で申し訳ありませんが、よろしくお願いいたします。 エクセルの関数 数値の集計 質問投稿日時:04/09/24 11:51質問番号:1014624 この質問番号と同じ内容に困っています。 マッチ関数とインデックス関数の複合で下記内容は理解出来たのですが、 例えば、下記内容に9行目があり・・克つそのデータが空欄だった場合で、算出条件を4以下にしたら本来エラーが出て欲しいのですが、 9行目・・つまり空白欄の回答を算出してきます。 これの対策方法ないですかね・・? 上から順に検索していき、ある値以上の数値が初めて現れた行番号を返すような関数はありますか? 例えば 1 38 2 56 3 80 4 44 5 60 6 70 7 53 8 5 と数値が入っていて、60以上という設定にすると「3」が返ってくるような関数です。 宜しくお願いします。 ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム エクセルの関数についての質問です エクセルの関数についての質問です 独学でエクセルを勉強しておりますが以下のような表の中から該当する値を返すことは可能でしょうか。 方法はどのようなものでもアドバイスをいただければトライしてみようと思います。 以下のような元データの中から、行の条件と列の条件を満たすセルに表示されている値(%)を 表示させる関数。そもそも関数での解決は不可能かもしれませんが、もし方法があれば ご教示お願いします。 0000~1000 1001~2000 2001~3000 000~100 5% 5% 4% 101~200 4% 4% 3% 201~300 3% 2% 1% 行と列の値を入力するとその交差した値が表示させたい。 例)行の検索したい数値を110、列の検索したい数値を1200と指定した場合、表示させたい数値は"4%"。 ぜひぜひよろしくお願いいたします。 エクセル関数で文字列か数値かを判断する エクセルの関数で指定した場所のデータが文字列か数値かを判断させることは可能でしょうか? 可能な場合、それをIFとからめて「文字列だったら○○」「数値だったら○○」という条件をつけて処理をしたいのですが。 よろしくお願いします。 エクセル関数について エクセルでデータベースを作っています。別のシートからデータを抽出して合計を出すというものなのですが、どうも関数がうまくいきません。 別のシートには日付・現場名・費目・時間・金額などが入力されています。(オートフィルタが使われていました)そしてデータベースには現場名と費目から金額の合計を抽出したいのですが、どんな関数を使っていいのか分かりません。 =SUMPRODUCT((条件1)*(条件2)*....(集計する数値)) =SUMPRODUCT((入力!$C$3:$C$9810=Sheet1!$B3)*(入力!$G$3:$G$9810=Sheet1!C$1)*(入力!$K$3:$K$9810)) というものを使っていたのですが、別シートのデータが入力されていない所まで範囲を指定するとエラーになってしまいます。 =sumifだとエラーにならないのですが、私の技術では1つの条件(現場名だけ)しか抽出、合計できません。 入力されていない所を範囲指定してもエラーにならなくて上の事が出来る関数はないでしょうか、よろしくおねがいします。 ExcelのMATCH関数の検査範囲の指定について Excelで、指定した値の場所(行番号)を返すというのをMATCH関数を用いてやっているのですが、検査範囲の指定が上手く処理することができないので教えて下さい。 条件---------------------------------------------------------------------------------------------------------------- 2つのExcelファイル、DATA.xlsx と TEST.xlsx を用いる。 DATA.xlsx内に「B19」というシートが存在し、このシート内のB列にある"7777"という値が存在する行番号をTEST.xlsx内のセルに表示させる。 ----------------------------------------------------------------------------------------------------------------------- まず、 =MATCH(7777,[DATA.xlsx]B19!$B:$B,0) で正しい値が返ってくることは理解しています。 この式の中の、B19というシート名について、 この式が存在するシートと同じシートの適当なセル(ここではA33を使うことにします)にB19 という値が存在するとします。このA33のセルにある値を見て値を返す、何がしたいかといいますと、将来参照するシートがB19ではなく例えばB15であったり、B6とした場合、A33のセルの値を変更すればよいというものにしたいのです。 それで、 =MATCH(7777,"[TEST.xlsx]"&$A33&"!$B:$B",0) としてみたのですが、#VALUE!が返ってきます。 何処が間違っているのか?教えてください。 よろしくお願いします。 エクセル 検索 Microsoft Excel 2007を使用しています。 条件を選んでマッチするデーターを表示する方法をお尋ねします。 A列、A1に「1」以下セルA10に「10」までの数字が昇順で入力されています。 セルB1からセルB10まで果物の名前が入力されています。名前の重複はありません。 セルC1に果物の名前を入力したらセルD1に関数を用いてそれに対応するA列の数値が表示されるようにできませんでしょうか。 エクセルのヘルプを見ましたが、旨く当てはまる関数を探し出せませんでした。 宜しくお願い致します。 例) セルA5に「5」という数値があり、B5に「柿」が入力されている。 セルC1に「柿」と入力すると、セルD1に「5」が表示される。 round関数について お世話になります。Sql初心者です。 round関数について質問があります。 double型のデータを少数点第一位までのデータを取得したいと思っています。 select round(double型の数値)ではデータが取得できますが、 double型のデータをselect round(double型の数値,1)という形で とするとエラーになってしまいます。 double型のデータをround関数で小数点指定で取得する場合は、どの様に 記述すればよいのでしょうか? どなたかご教授願えますでしょうか? 何卒よろしくお願いいたします。 エクセルの関数の使い方 エクセルで2つの連続する数値の相関関係を知りたいためにCORREL関数を使いたいです。 しかし、CORREL(A1:A100,B1:B100)と範囲指定した時に、たまに参照している計算式の関係で95列目以降、エラー表示#N/Aが出てしまいます。エラー表示が出るとCORREL関数が使えません。 さらにデータの切り替えがあるので、CORREL(A1:A95,B1:B95)と範囲を狭めたくありません。 またA1:A100とB1:B100で折れ線グラフを作成しており、IFERROR等でエラー表示を消してしまうと、折れ線グラフが0の値を指し示してしまうのでエラー表示を消したくありません。 このようにエラー表示を消さず、CORREL関数を使うにはどのような方法が考えられますか? VLOOKUP関数について エクセルでVLOOKUP関数を使って2種類のデータを使用して作表をしたいのですが、検索値が一方のデータ(仮にA)が5桁で、もう一方のデータ(仮にB)が7桁です。データBの上5桁はデータAの5桁と同意のものです。検索値の桁数を合わせなければならない為、データAの5桁に100を掛けて無理やり7桁にして作表してみたのですが検索の型がTRUEでしか使えない為100%信用できないデータになってしまいます。データBの7桁を、上5桁と下2桁にセル分割する、下2桁を削除する等して検索の型をFALSEで作表したいのですが、この方法をご存知の方どなたかわかり易く教えて下さい!! よろしくお願いしますm(__)m 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン ソフトウェア Excel(エクセル)Word(ワード)PowerPoint(パワーポイント)Access(アクセス)その他MS Office製品オフィス系ソフトPhotoshop(フォトショップ)Illustrator(イラストレーター)その他Adobe製品画像・動画・音楽編集ホームページ作成ソフト筆まめ・はがき作成フリーウェア・フリーソフトその他(ソフトウェア) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
なるほど!これは確かに昇順でないと意味不明になりますね。 とても参考になりました。ありがとうございました。