• ベストアンサー

エクセル VLOOP関数

エクセル初心者です。 エクセル2003を練習中なのですが 今、下画像の上段のようなデータのシートを作成しました。 シートは左の日付を3行セル結合しています。 このシートのデータを、画像下段の表のように 関数で表引きしたいのです。 下段の表は、左の日付を2行セル結合しています。 関数(VLOOPUP関数とINDEX関数)の使い方が、今一つ分かりませんでした。 どんな数式を入力していけばいいのでしょうか。 お願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

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

○方法その1 INDEX関数とMATCH関数を使います。 このとき常にアタマに入れておくのは,「結合セルはその左上のセルにデータを持っている」ということです。 結果の式を教わってハッピーじゃなく,途中の経緯をよく理解して数式を組みましょう。 1/1の大阪の販売金額を参照してみます。 まずシート1の1/1は「A5セルにある」ことを確認します 同様に,シート2の1/1はA3セルにある事を確認します。 すると =MATCH(A5,Sheet2!A:A,0) とすることで, シート1A5の1/1は,シート2の3行目にあるよと判りましたね。 次にシート2の1/1の販売金額は「4行目」にあります。常に結合セルの左上のセルの,一つ下の行にあります 従って答えは =INDEX(Sheet2!D:D,MATCH(A5,Sheet2!$A:$A,0)+1) のように得られます。 ○方法その2(関数の勉強ではなく,応用テクニック) VLOOKUP関数は,必ず「同じ行のデータ」しか参照できません。 先にお話したようにシート2の販売日の実体データは結合セルの上のセルにありますから,VLOOUP関数は同じ行の返品金額だけしか参照してくる事が出来ません。 大阪の返品金額: =VLOOKUP(A5,Sheet2!A:G,4,FALSE) 繰り返しになりますがVLOOKUPで販売金額を取ってこれないのは,販売金額の行は結合セルの下の行で,そこには「何も入っていない」からです。 逆に言うと,そこにも実は販売日のデータ(結合セルの上側セルの値)が「入っていれば」,問題なくVLOOKUPが使えます。 手順: 準備として,シート2のセル範囲A3:A8をコピー,H3セルを選んで型式を選んで貼り付けの「リンク貼り付け」をしておきます 2000/1/1 1900/1/0 2000/1/2 1900/1/0 2000/1/3 1900/1/0 と結果が並びます。ゼロのセルは,日付の書式では1900/1/0と表示されます。 H1セルを空っぽにしておきます H2セルに =H1+0.5 と式を入れます H1:H2をコピーします A3:A8を選び,型式を選んで貼り付けの数式にマーク,更に空白セルを無視するにチェックを入れて,OKします。 先に準備したリンクの式が 2000/1/1 2000/1/1 2000/1/2 2000/1/2 2000/1/3 2000/1/3 と変わればとりあえず成功です。 更に,リンクの式のセルの書式設定を,日付と時刻に変更します。 2000/1/1 0:00 2000/1/1 12:00 2000/1/2 0:00 2000/1/2 12:00 2000/1/3 0:00 2000/1/3 12:00 のように計算できていれば,大成功です。 VLOOKUP関数で1/1の販売金額を参照してくるには,日付+0.5を今記入したので 大阪の販売金額 =VLOOKUP(A5+0.5,Sheet2!A:G,4,FALSE) のようになります。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

何処を所与のものとしてどうデータを引くのか質問に書いておくこと。 表引きと言うより、表の構成を少し変えるだけで、本来のVLOOKUP関数の使い方でない。 MATCH関数で日付を手がかりに、該当データを探すというのが、質問のニーズのようだ。 Sheet2の日付は入力済みとする。毎日ならオートフィルで入る。セル結合されていてもうまく行くようだ。 そしてセル結合されたセルの値は左上隅せる(この場合は1番上の行にあるせると理解すること。 Sheet2のC2セルの式はA2の日付によってSheet1のA列の同じ日を探してでーたを取る。 例データ  Sheet1 A4以下 販売日付 東京 大阪 2010/1/1 10 20 10000 20000 2010/1/2 60 70 60000 70000 2010/1/3 110 120 110000 120000 ・・・ 結果 Sheet2 A1から 販売日付 東京 大阪 2010/1/1 返品金額 10 20 販売金額 10000 20000 2010/1/2 返品金額 60 70 販売金額 60000 70000 2010/1/3 返品金額 110 120 販売金額 110000 120000 ・・・ C2の式 =INDEX(Sheet1!$A$1:$L$100,MATCH($A2,Sheet1!$A$1:$A$100,0),COLUMN()-1) C3の式 =INDEX(Sheet1!$A$1:$L$100,MATCH($A2,Sheet1!$A$1:$A$100,0)+2,COLUMN()-1) C2:C3のセルの式を+ハンドルを出して下に引っ張る。 C列の式を右方向に+ハンドルで引っ張る。 Sheet1!$A$1:$L$100のL列と100行は適当にやっているから、地祭礼にあわせて修正して。 ーー エクセルの関数の初心者なら セル結合はなるべく避ける(エクセルに慣れるまでは)。 本件も初心者にしては色々な経験が要り、難しい部類なので、丸投げで、コピーで出来ましたとなって、勉強にならないかと思う。 ーー 今後質問するなら、例データは、画像貼り付けでなく、質問文の中にテキストで作ってほしい。(私の回答例のように) 回答者が例データを作りテストするのに、打ち直しになって、随分時間がかかるので、お願い。

関連するQ&A

  • エクセルで下段だけの削除

    教えて下さい エクセルで作成した表があります 行1 上段 行2 下段 行3 上段 行4 下段 この上段、下段の繰り返しで1000件はあります 下段の行のみを一気に削除をしたいのですが簡単に削除をする方法はありませんか? 全部単なる数字が入っているだけでどこにもセルの結合はありませんしマクロもありません 宜しくお願い致します

  • エクセル2007 結合セル

    エクセル2007 結合セル 下の画像のようなエクセルシートを 練習用に2枚作成しました。 上段が月の入力フォームで、 下段が各個人の営業成績表です。 ここで、下段の成績表の1行目が B列からI列まで、セル結合されており その中に表題の( 月分)が表示されています。 ここの月の前の空白部分に上段の入力フォームの黄色で 入力した月の数字をを自動的に表示させることはできるのでしょうか。 結合させなければ、簡単にできたと思いますが、 結合している前提で、教えていただけるとありがたいです。 よろしくお願いします。

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

    エクセル OFFSET関数について 以下のようなシートを2枚作成し、照合したいと考えています。 上段がシート1で、下段がシート2です。 2枚のシートの内容は同じようなものですが、セルの位置が 2枚ともバラバラで、できればROWS COLUMS関数を使って 照合したいと思いますが、二つの関数の使い方がよくわかりません。 照合の仕方は、シート1のデータをシート2をコピーした3枚目のシート(セルはすべて空欄) を作成して、そこにコピーしていきたいです。 一番左端の喫茶店の行番号、列番号を関数の中でどう設定すれば、3枚目のシートができて、 簡単に下までオートフィルできるのでしょうか。 1月31日までデータが入っているので、一つ一つ数式を入れていくのは大変です。 お願いします。

  • エクセル関数

    エクセル初心者です。 今、下の画像(上段)のような データベースを作りました。 ここにある日付を古いもの順に 下段の画像のような形に したいのですが、IF関数がうまく使えず 困ってしまいました。 どうすれば、日付順番に並ぶのでしょうか。 教えてください。

  • GETPIVOTDATA関数

    エクセル初心者です。 今、練習用に以下の画像(上段)のようなピボットテーブル(シート3)を 作成しました。 ここから、関数で画像下のような転記表(シート2)にそれぞれ 値をピボットテーブルから転記したいのです。 テーブルの左の日付がデータの更新とともに変わっていきますが、 その日付データを転記表にコピペして、さらに、コピペした 日付を基準に、テーブルから転記表に 値を入れていきたいのですが。 ピボットテーブルそのものでも数字は正しいのですが できれば転記表にまとめたいです。 GETPIVOTDATA関数やVLOOKUP関数を うまく使えないので、教えてください。 お願いします。

  • エクセルとデータの照合について

    エクセルとデータの照合について シート1に以下のような表を作成しました(上段) また、シート2にも以下のような表を作成しています(下段) 見にくいですが、要は同じデータが入っているのですが、入っているセルが 違うので、どんな関数や条件付き書式(色つき)を使って照合すればいいのかが わかりませんでした。 両者を見比べて照合をしたいのです。おもに上段の数字があっています。 初心者で申し訳ありませんが、教えてください。

  • エクセル関数について教えてください

    エクセル関数についてご教授ください。 添付図のようなデータ入力シートがあり入力者は山田、太田、斉藤の3名が入力します。 今、山田さんが7/29日の数学の列の10:40-12:10行のセルに「伊藤」と入力し、太田さんが同日のEnglishの列の13:00-14:30行のセル に「伊藤」と入力し、さらに斉藤さんが同日の国語の列の14:40-16:10行のセルに「伊藤」と入力した場合にsheet2(シート名:伊藤)の表に図で示すようなデータを自動で入力させたいと考えています。 sheet1の日付は横に1週間分あります。同様にSheet2(伊藤)にも同じ日付で1週間分あります。 このようなことは可能でしょうか? エクセル関数初心者で非常に困っています。 どうかご指導いただきたいです。

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

    エクセルの関数についての質問です。 作業員が日々現場に行く月報のデータシートがあって、各氏名の行を日ごとに上下に分け上段に現場名、下段に日勤、半勤、夜勤と表示されています。 別シートに各現場ごとにその日に行った人数を、上段は日勤を1人半勤を0.5人として合計人数を表示、下段に夜勤の合計人数を表示、当てはまらない場合は空白と表示させたいのですが。 どなたかお分かりになる方、教えてください。 よろしくお願いします。

  • エクセル関数

    エクセル初心者です。 今練習用に、以下の画像、上段(シート1です)のような データベースを作成しました。 データベースは販売データで、右に基準月の セルを作っています。 ここで、このデータベースを基準月以前と以降で 関数を使ってシート2に分離させたいのです。 シート2のA2セルとE2のセルにどんな関数を いれればいいのでしょうか。 if関数だと、E2セルにうまく表示されませんでした。 お願いします。

  • エクセル関数について教えてください

    添付の画像のように、表1(シート)の社員別に日付と定時の労働時間と、残業時間の書いてあるデータを表2(シート)の該当する社員の該当する日に関数により反映されるようにしたいのですが、関数で可能でしょうか? 表1は下にずらっとデータとして打ち込んでいきます。 表2はB2の黄色い部分がリストになっていて、月が変わるようになっていて、そこを変えると日付情報が変わるようにしてあります。 ※表2の4行目の日付は表示形式により“日”だけ表示しています。 説明不足かもしれませんが、どうぞよろしくお願いします。

専門家に質問してみよう