エクセルの表引き関数について

このQ&Aのポイント
  • エクセルの表引き関数(VLOOKUP)について、同一の検索値が存在するデータ内で、開始年月から終了年月の間の月を検索し、表引きする方法を教えてください。
  • 年間の業務端末使用料の担当者ごとの集計が必要であり、退職や入社による担当者の変更も頻繁に発生しています。しかし、過去のデータを保持するためデータ表から削除はできません。利用月と番号から担当者を検索したいのですが、現状では年初に登録した表と変更のあった場合の表を別々に検索しています。表を分けずに開始日と終了日で検索する方法があれば教えてください。
  • エクセルの表引き関数(VLOOKUP)を使用して、同一の検索値が存在するデータ内で、開始年月から終了年月の間の月を検索し、表引きする方法を教えてください。年間の業務端末使用料の担当者ごとの集計が必要であり、過去のデータを保持するためデータ表から削除はできません。利用月と番号から担当者を検索するために、表を分けずに開始日と終了日で検索する計算式を教えてください。
回答を見る
  • ベストアンサー

同一データの表引き(VLOOKUP)関数について

同一データの表引き(VLOOKUP)関数について いつも皆様の回答を参考にしております。 エクセルの表引き関数につきまして、お教えください。 同一の検索値が何行か存在するデータ内から、 開始年月~終了年月の間の月を検索し、表引きすることは可能でしょうか? 年間の業務端末使用料の担当者ごとの集計が必要で、 退職・入社等で担当者が変わったりということが頻繁にあり、(でも、過去のデータとして必要なので、データ表から削除が出来ない状態です。 利用月・番号から担当者を検索したいのですが、 現状、年初に登録した表と、変更のあった場合の表をIFで分けて検索させています。 この状態ですと、担当者が何度も変わってしまう番号の検索が出来ません。 出来れば、検索の表を分けずに(下方向へ入力すれば、開始~終了の日付で検索行を判断する・・・)ような計算式があればご教授ください。 開始日でmax、index等使えば可能かと四苦八苦してみましたが、どうしてもうまくいかず 皆様のお知恵をお貸しいただければと思い 質問いたしました。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

とりあえずお手軽の方法で。 前提: 利用日,開始日は「2011/1/1」のように年月日のデータで記入してあり,書式で年月を表示させている 最低限,担当者の対応表は開始日の昇順で並べ替えてある C3: =INDEX(H:H,MAX(IF(($E$3:$E$9=B3)*($F$3:$F$9<=A3),ROW($H$3:$H$9))))&"" と記入し,コントロールキーとシフトキーを押しながらEnterして入力する

hiposi
質問者

お礼

keithin様からの回答もイメージしていた計算が出来ました! (私的にはですが)驚くほど短い計算式で出来るので感動しております・・・ メンテナンスもしやすそうで、大変勉強になりました。 ご回答いただき 有難うございました。

その他の回答 (1)

回答No.1

エラー処理なしのコア部分のみ(担当なしの場合や未記入時のエラー処理をしていない) =INDEX($H$3:$H$9,MATCH(1,($E$3:$E$9=B3)*($F$3:$F$9<=A3)*IF($G$3:$G$9="",1,(A3<=$G$3:$G$9)),0)) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる 担当が一致、かつ、開始月以上、かつ、終了月があれば終了月以下無ければ1 の配列を返し、 配列からMATCHで1を検索して何番目にあるかを返し、INDEXで担当を返す。 ただし、年月はすべてシリアル値。

hiposi
質問者

お礼

ご回答ありがとうございます。 イメージしていた計算が出来ました! 回答いただいた後に 配列数式の初歩ページを少しだけ見てみたのですが とても便利な計算式なのですね。 (今まで なんとなく難しそうで避けておりました・・・) 凄く勉強になりました。

関連するQ&A

  • 表引きの関数で困っています

    よろしくお願いします VLOOKUP関数ですが うまく表引きできません  2列の表でA列B列にデーターをいれた表があります D1には 式 =vlookup(D1,A1:B10,2,false))です D1にA1からB101での表を参照して 数値を引っ張っています いつもはうまくいきますが A1が 通し番号の場合はOKで ランダムな数値になりますと 引っ張れません 同じ数値が複数あると 最初のものだけ ひろいます 通し番号でなくて ランダムな数値でも 引っ張るにはどんな関数なんでしょうか サルにもわかるように やさしく 教えてください  

  • vlookup関数の使い方

    vlookup関数を使って検索する場合、指定された範囲の1列目に特定の値がないとき、#N/Aが返ってきますが、私は1列目に特定の値がない時には数字の0(ゼロ)が返ってくるように四苦八苦しています。なんとかならないでしょうか。

  • 表引き

    表引き関数  再質問です 仮に A    B  C   D   E  A1    2  1   1   A2    4  2   1 A3    5  3   2  A4    6  4   4 A5    1  5   6 A6    2  6   2 BとCに2列の表があります E1には =vlookup(D1,B1:C6,2,false)の関数の式を入れました B列はランダムな数値 C列は通し番号です いつもは B列に通し番号 C列はランダム数値なのでD列の数値に対してのE列の表引きは問題ないのですが 上のように B列がランダムな数値 C列が通し番号の場合 B列に同じ数値が複数個あるとき E列に返してくるのは その数値の最初のひとつだけ  上の仮の表 では D列の数値に対して E1は 以下     E列  5  5  1と6  2  4  1と6 ですが この1と6の6が表引き出来なんです この6も表引きしたいのです どうすればいいのでしょうか 他の関数と組み合わせるんでしょうか よろしくお願いします

  • VLOOKUP関数について教えてください。

    航空運賃の料金計算という問題をしています。 (1)行先番号と時期番号を入力すると、自動的に運賃が計算できる計算表を完成しなさい。 (2)さらに事前割引表を元に、割引ができる表に改めなさいという問題になります。 (1)はMATCH関数とVLOOKUP関数で、なんとかできたのですが(2)がさっぱりわかりません。 (1)の時点ではこんな感じで数式を入れています。 H       I        J 出発地   東京(固定です。) 行先番号            =MATCH(I5,C6:F,0) 時期 料金              =VLOOKUP(I4,C6:F33,J,FALSE) (B2:E4の形で横に表にしたかったのですが、上手くMATCH関数を入れられず横に新たに作って考えています。) *行先・金額の表はこのような形で入力しています。 B    C    D      E    F 行先  番号  通常期   多客期  閑散期 札幌  1   24050    25250   21500 沖縄  27   34400    40660   37660  時期分類表  番号 1 通常期 7/1~7/31、8/21~11/30、2/1~3/31    2 多客期 8/1~8/20、12/27~1/6    3 閑散期 12/1~12/26、1/7~1/31  事前割引表 4週間前 運賃50%引き       3週間前 運賃30%引き       2週間前 運賃22%引き (2)の問題をとくには、まずI5にいつの時期かを判定?する数式を入れないとダメなのでは?、と思うのですがわかりません。 ちょうど7つだしIFのネストは7つまでできたから、と思ったのですが7/1~7/31どう入力すればいいのかわからず挫折。 次にこの日付を全部入力横の列に番号を入力、日付を検索値にして1~3をVLOOKUPで引っ張り出せばと思ったのですが上手くいきません。 (検索地が日付で数値でないからでしょうか?) 4週間前というのは1月前と考えて、3週間前は3×7日と考えて21日と考えるのかな?と思ったのですが、そこまでしか思いつきませんでした。 すみませんがこの問題の解き方、教えてください。 どうぞよろしくお願いします。

  • エクセルの表引き関数

    こんにちは いつもお世話になっています。 エクセルで右列のデータを検索値にして表引きする方法を教えてください。 sheet1に以下のデータ A     B 1     秋田 2     愛知 3     石川 4     愛媛 sheet2に以下のデータ A     B       愛媛       石川       秋田       愛知 sheet2のA列にsheet1のA列のデータを表引きする方法を教えてください。 (sheet1のA列は連番とは限りません。) 作業列を作らない方法を探しています。 よろしくお願いします。

  • エクセルの表引き?

    こんにちは いつもお世話になっています エクセルの表引きについて教えてください。 実は表引きといえるかどうかわからないので、できるか、できないかだけでも知りたいです。 sheet1に次のデータがあります。 A     B     C 1     秋田    a 2     愛知    a 3     石川    a 4     愛媛    b 5     大分    b 6     鹿児島   b 7     香川    c 8     熊本    c A列は連番とは限りません、重複データはありません。 C列でグループ分けしてあり、第一条件でソートしてあります。 sheet2ではA列に10行ごとに黒枠罫線がひいてあるだけで、ほかにデータはありません。 この枠線の中にsheet1のC列のグループごとにA列のデータを振り分けたいのです。 sheet1のC列は昇順でソートしてありますのでsheet2へも、その順番で各枠線内の上から入力させたいです。 sheet2のA列へはC列のa,b,cの各データの個数より余分に枠罫線がひかれてあるので、入りきらないことはありません。 つまり、 sheet2に A 1 2 3 7行分空白(ここまで枠罫線) 4 5 6 7行分空白(ここまで枠罫線) 7 8 8行分空白(ここまで枠罫線) と入力させたいのです。 関数とか表引きではできないとすると、他の方法はあるでしょうか。 条件付書式でもできるでしょうか。 わかりづらい表現で申し訳ないですが、よろしくお願いします。

  • データを表にする関数を教えてください。

    1果物A1,ナシ 2果物B4,リンゴ 3果物C2,モモ 4果物A1,モモ 5果物C2,リンゴ というデータがあって、それを  ABCDE 1 2 3 4 の表に関数で挿入したいのですが、できますでしょうか?データは200行ぐらいあります。 vlookupでA1で引っ張ると一種類しか引っ張れないので… 表は、ひとつのセルに2つ入らなくてもいいです。とりあえず表的な形になればよいです。 お願いします。

  • IFとVLOOKUP関数

    VLOOKUP関数を使って検索結果を出そうと思いましたが、 データ量が93000行X8列になりますので、 共通分けして複数のシート(A、B、C、D)に分けました。 あるセルに『A』と入れると『シートA』の表から検索を行う、 あるセルに『B』と入れると『シートB』の表から検索するといった感じにするには、 IFとVLOOKUPを使用するなら、どのような式を入れたらいいのでしょうか? また、他の関数を使う式があるのでしょうか? マクロやVBAも考えましたが、 あまり知識がありません。 データ量から考えると マクロやVBAで行った方がいいのでしょうか?

  • エクセル VLOOKUP関数について

    エクセルについて初心者なのですが、質問させて下さい。 【表1】   あ  1   ☆ い  2   ★ う  3   ★ え  1 お  2   ☆ か  3   ☆ き  1   ★ く  1 け  2 こ  3 【表2】   ☆  ★ 1  あ  き  2   お  い 3  か  う 【表1】のデータを基に【表2】のように常に表示するにはどんな関数が必要でしょうか?同じシート内で構いません。 色々検索してみましたが、VLOOKUPが目的に合っているように思うのですが、分かりませんでした。 詳しい方なら簡単なのかもしれませんが教えて頂けませんでしょうか? 申し訳ありませんが宜しくお願い致します。

  • エクセル2000で2列にわたるVLOOKUPをしたいとき

    名前■■電話番号■■■■顧客コード 田中■00-0000-0000■■■00-3256 山本■03-3225-5898■■■00-3698 こんな感じの表があります。約13000行(表1) で一方で電話番号と顧客コードが同一の列にはいっている表があります。 03-9858-5656■東京 03-6598-8574■大阪 02-6985■■■■名古屋 02-3698■■■■仙台 (表2) これは約2000行あります。 で表1において、最初に電話番号を表2からVLOOKUPで表引き、 もしその値がなければ顧客コードで再度表2からVLOOKUPで表引 きしたいと思っています。 この際にはどんな関数をかけばよいのでしょうか?

専門家に質問してみよう