ここから本文です

エクセルVLOOKUP関数で条件に合う複数のデータの取り出しについて 以下のサイト...

アバター

ID非公開さん

2015/11/2717:14:16

エクセルVLOOKUP関数で条件に合う複数のデータの取り出しについて

以下のサイトのように、エクセルで作った表にあるデータを取り出したいと考えています。

http://www.yskzt.com/transfer-doubled-data-with-VLOOKUP-function201...

こちらのサイトではVLOOKUP関数にCOUNTIF関数を組み合わせ、通し番号を付けることにより必要なデータを抽出していますが、この番号をつけることなく必要なデータを取り出すことは可能でしょうか?

オートフィルタ―は使用したくないのと、わたし自身が簡単な関数しか理解できないのでマクロ等は使うことができません。また、VLOOKUP関数にこだわっている訳ではありません。

どうかお力添えをお願いします。

閲覧数:
836
回答数:
3
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ask********さん

2015/11/2919:08:21

質問文のリンクURLを参考に、抽出してみました。

[鑑定科目][No][Code][日付][相手勘定科目][借方金額][貸方][概要]

B列の[No]とC列の[Code]に関数が入っています。

2行目はラベル行
3行目からデータが始まっているとします。

B3セル
=COUNTIF($A$3:A3,A3)

始点を絶対参照にします。$A$3

この数式を下までペーストします。

C3セル
=A3&B3

[A列の値]と[B列の値]を連結します。


[消耗品費1]
[新聞図書費1]
[通信費1]
[新聞図書費2]
[新聞図書費3]

このように、勘定科目に通し番号が付きます。


同じシートのJ列からデータを取り出します。

1行目:J1セルに、勘定科目を入力します。

2行目:[日付][相手勘定科目][借方金額][貸方][概要]

J3

=IFERROR(VLOOKUP($J$1&ROW()-2,$C$3:$H$100,COLUMN()-8,FALSE),"")

この数式を抽出エリアにコピペすればデータを取り出せます。


関数の解説

$J$1&ROW()-2

これがVLOOKUP関数の検索値になります。VLOOKUP関数では一つの値しか取り出せないので、一意の値にしました。

$J$1
勘定科目を入力したセルです。

ROW()-2

3行目の場合、ROW()-2の戻り値は1です。

J1セルの値が「新聞図書費」の場合、検索値は"新聞図書費1"になります。


「新聞図書費」の該当データが8件あるとします。

その場合、抽出データの最終行は、10行目になります。

検索値は「新聞図書費8」です。


11行目は「新聞図書費9」を検索値にして抽出をしますが、該当データが存在しないので、エラーになります。

IFERROR関数で、エラーになった場合は空白を返すようにしました。

J1セルの勘定科目を変更すれば、抽出データも自動的に変わります。

質問文のリンクURLを参考に、抽出してみました。...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2015/12/3 11:19:27

大変わかりやすいご説明ありがとうございますm(_ _)m

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

mit********さん

2015/11/2717:35:02

例えばシート2の表からシート1の表のA列にある品名に一致する品名を探しそれの単価をシート1のB列に表示する場合にはシート2の表がA列に品名、C列に単価があるとしたらシート1のB2セルには次のような式を入力しますね。

=VLOOKUP(A2,Sheet2!A:C,3,FALSE)

しかしシート2のA列に品名が複数ある場合には上の式では最初にシート2のA列で検出されたデータだけが表示されることになりますね。
お示しのURLサイトでは通し番号を付けて行っていますが、いずれにしろシート2には作業列を使って対応するのがパソコンにも負担の少ない方法としてお勧めです。
例えばシート2のE2セルには次の式を入力して下方にドラッグコピーします。

=IF(A2="","",A2&COUNTIF(A$2:A2,A2))

その後にシート1のB2セルから複数の品名がある場合にはその横の列にもデータを表示させることにする場合にはB2セルには次の式を入力して横方向にドラッグコピーしたのちに下方にもドラッグコピーすればよいでしょう。

=IF($A2="","",IFERROR(INDEX(Sheet2!$C:$C,MATCH($A2&(ROW(A1)+COLUMN(A1)-1),Sheet2!$E:$E,0)),""))

なお、シート2の作業列が目障りでしたらその列を選んで右クリックし「非表示」を選択すればよいでしょう。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

all********さん

2015/11/2717:22:30

>わたし自身が簡単な関数しか理解出来ない

作業列使うことが簡単な関数でする方法です。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる