人に聞けない痔の悩み、これでスッキリ >>

エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてください。

               A列   B列    C列
Aファイルには 行 【注文月日】、【氏名】、【商品金額】が記入されています。
Bファイルには 行 【注文月日】、【氏名】、【税金額】が記入されています。

AファイルのD列に、Aファイルの【注文月日】かつ【氏名】がBファイルの【注文月日】かつ【氏名】と一致する場合のBファイルC列の【税金額】を表示したいのです。

VLOOKUP関数では条件が1つだけなので使用できませんが、似たような関数で複数条件ができる関数があるなら教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは!


一例です。
↓の画像で右側(Bファイル)の方に作業用の列を設けています。
作業列D2セルを
=A2&B2
としてオートフィルで下へずぃ~~~!っとコピーします。

そして、AファイルのD2セルに
=IF(OR(A2="",COUNTIF([Bファイル.xls]Sheet1!D$2:D$1000,A2&B2)=0),"",INDEX([Bファイル.xls]Sheet1!C$2:C$1000,MATCH(A2&B2,[Bファイル.xls]Sheet1!D$2:D$1000,0)))
という数式を入れ、オートフィルで下へコピーすると
画像のような感じになります。
尚、数式はBファイルの1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m
「エクセルの複数条件に一致したセルを抽出し」の回答画像2
    • good
    • 9
この回答へのお礼

回答ありがとうございます。
図までのせていただき、すごくわかりやすかったです。
参考にさせていただきます。

お礼日時:2010/03/27 14:09

VLOOKUP関数を使うなら、A列とB列を結合した文字列をA列の左に挿入し、てこのキーを検索値に指定するのが簡単です。



1つの数式で対応するなら以下のような関数を使うことになります。

=INDEX(ブック名シート名!C:C,MAX(INDEX((ブック名シート名!$A$2:$A$100=A2)*(ブック名シート名!$A$2:$B$100=B2)*ROW($A$2:$B$100),)))
    • good
    • 6
この回答へのお礼

回答アリガトウございます。
せっかく関数の式を教えていただいたのですが、いまいち理解ができません。
1つ1つの関数のやり方を調べて試行錯誤したのですが、うまくできませんでした。
最初のブック名シート名はファイルBのC列で、2回目と3回目ののブック名シート名はファイルAでよろしかったでしょうか?

お礼日時:2010/03/27 12:48

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセル 複数条件での検索を関数を使って解決したいです。

エクセル関数を使って複数の条件を満たしたときの
特定のセルの文字列を返す方法を考えています。

例を挙げると

   A    B    C     D    E    F
1  金額  日付  名称   金額  日付 名称
2  100  1月5日  a    100  2月1日 =???
3  200  1月5日  b
4  300  1月6日  c
5  400  2月1日  d
6  100  2月1日  XYZ
7  100  2月3日  e
8  200  2月3日  f

上のような表のときに
金額=「100」 かつ 日付=「2月1日」 という2つの条件を
満たしたときのC列の文字列「XYZ」を返すということをやりたいのです。

金額だけですとVLOOKUP関数を使って
=VLOOKUP(D2,A2:C8,3,false)
とやって「a」という文字列はかえってくるのですが
どうやっても「XYZ」という文字列が返せません。
(日付の条件を入れていないので当たり前ですが...)

なにかいい方法がありましたらお願いします。

エクセル関数を使って複数の条件を満たしたときの
特定のセルの文字列を返す方法を考えています。

例を挙げると

   A    B    C     D    E    F
1  金額  日付  名称   金額  日付 名称
2  100  1月5日  a    100  2月1日 =???
3  200  1月5日  b
4  300  1月6日  c
5  400  2月1日  d
6  100  2月1日  XYZ
7  100  2月3日  e
8  200  2月3日  f

上のような表のときに
金額=「100」 かつ 日付=「2月...続きを読む

Aベストアンサー

◆こんな方法もありますよ
=INDEX(C2:C8,MATCH(D2&E2,INDEX(A2:A8&B2:B8,),0))

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qエクセルで2つの条件からデータ抽出方法

エクセルで、2つの列の合致する部分のデータを簡単に取り出したいのですが、よい方法はありませんか?今は表を追って必要部分のデータを書きだしているのですが・・・。

       4月5月6月7月8月9月10月11月12月1月2月3月
1グループ 8 5 6 1 2 3 3 2 8 2 3 1
2グループ 1 5 2 3 4 4 5 2 1 8 9 2
3グループ 3 4 5 2 2 1 1 7 9 3 6 5
 
上記の表の中から、1グループの12月のデータ8を取り出す場合、それぞれの列を追っていき、交差部分を見ますが、それを、別のセルに○グループ○月と入れれば、上記表の該当数値がぱっと出る方法はないでしょうか??   上記表のグループと月のそれぞれの数字をうまく対応させた表を作れず、見にくくてすみません・・・。

よろしくお願いいたします!!

Aベストアンサー

こんばんは!
参考になるかどうか分かりませんが・・・
↓の画像のように表を作ってみました。

B7セルには
=IF(OR(A7="",B6=""),"",INDEX(B2:M4,MATCH(A7,A2:A4,0),MATCH(B6,B1:M1,0)))
という数式が入っています。

尚、この場合月の部分は○月と入力しなければならないので
データの月の部分が数値だけであれば、B6セルも数値だけの入力で済みます。

これで希望に近い形になるでしょうか?

以上、参考になれば幸いです。m(__)m

QexcelのVLOOKUPで検索値を2つにできますか?

excelのVLOOKUPで検索値を2つにしたいです
私の知っているVLOOKだと下記のことは対応できます
例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合
「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます

そこで質問です
「会社名と住所が検索値と同一なら電話番号を表示しなさい」
というような、複数の検索値を持つ事はできないのでしょうか?

参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

Aベストアンサー

元の表をA列に会社名、B列に住所、C列に「=A2&B2」、D列に電話番号のようにして
=VLOOKUP(会社名&住所,$D$2:$C$100,2,FALSE)
のようにすれば可能です。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcelですが、同一データが複数あるとき、検索して、その全部を抽出する方法

Excelですが、検索キーに、同一データ(レコード)が複数あるとき、検索して、その全部を抽出表示する方法を教えてください。

Vlookupは、同一データが複数あるとき、最初の行(レコード)を1つだけ抽出してきます。2つ目、3つ目の行は抽出できませんが、その全部を抽出する方法がありますでしょうか。

例えば、以下の例で、「A株式会社」をキーに検索した場合、<検索結果>シートのように、該当のレコード3つ(行2~4)を抽出して表示するようにしたいのですが、方法はありますでしょうか。よろしくお願いします。

<データシート>
 列A  列B    列C 列C
行1 No 会社名   所属 担当者
行2 1 A株式会社  ○事業部  坂下順人
行3 2 A株式会社  △事業部  滿山友人
行4 3 A株式会社  △事業部  目標達子
行5 4 B株式会社  設計部山下清人
行6 5 B株式会社  営業部横浜美人
行7 6 C株式会社  営業部川崎次郎
行8・・・・・・・・・・・・

<検索結果:別のシートにおいて>
行1 会社名 所属  担当者
行2 A株式会社 ○事業部 坂下順人
行3 A株式会社 △事業部 滿山友人
行4 A株式会社 △事業部 目標達子

Excelですが、検索キーに、同一データ(レコード)が複数あるとき、検索して、その全部を抽出表示する方法を教えてください。

Vlookupは、同一データが複数あるとき、最初の行(レコード)を1つだけ抽出してきます。2つ目、3つ目の行は抽出できませんが、その全部を抽出する方法がありますでしょうか。

例えば、以下の例で、「A株式会社」をキーに検索した場合、<検索結果>シートのように、該当のレコード3つ(行2~4)を抽出して表示するようにしたいのですが、方法はありますでしょうか。よろしくお...続きを読む

Aベストアンサー

#03です
>最後のROW(T1)で、T1を参照しておりますが

ROW(T1)は「1番目」を意味しています。T1セルに何もなくても関係ありません。コピーしたの行はROW(T2)になりますが、これは2番目のという意味です

#REF!エラーになりますか?
私が示した条件と何か変えていませんか?
別シートのA1に「抽出する会社名」を入力してあれば、回答したような結果になるはずですが‥ (テストしてありますので)

ただし2000行もあるならVBAの方が良いかもしれません
きっと「シートが重くなる」と思います

Q【エクセル】表から条件に合ったデータを別シートに順番に抽出したい

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
74 PC
75 ペン
76 モニタ



80 


【補足】
元の表(シート1)を編集することがあるので
自動的に反映されるよう、関数で作成できたらと思います。
シート2の構成上、抽出後のソートや、フィルタオプションは避けたいです。

わかりづらい文章で申し訳ございませんが
どなたかいいアドバイスがありましたら教えてください。
お礼は明日になってしまいますが、必ずご返答いたします。
よろしくお願いいたします。

 

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
...続きを読む

Aベストアンサー

>E74に関数を入力し、その後関数をE80までドラッグすればよいのでしょうか?
いいえ。
1.
=INDEX(シート1!C1:C11,SMALL(IF(シート1!B1:B10="渋谷区",ROW(A1:A10),11),ROW(A1:A10)))&""
の数式を掲示板上でコピーします(シート名は合わせてください)
2. E74:E80セル範囲を選択します
3. 数式バーで[Ctrl]+[V]貼り付け
4. [Ctrl]+[Shift] +[Enter] でセルへの入力を確定させます

>その際、絶対参照や相対参照は必要でしょうか?
セルのコピーはしませんので不要です。
参考まで

Qエクセル 複数条件一致したセルの抽出方法について

はじめまして。
エクセルの複数条件で一致するセルの抽出方法の質問が幾つかありましたので
参考に試してみましたが上手く計算することができなくて、投稿致しました。
問題が解決すると非常に助かりますので、教えて頂けますでしょうか。

質問内容
エクセル2007を使用しております。
同じ商品を複数社で購入する場合、単価が異なります。
購入先と商品名で一致した場合に単価が参照されるようにしたいです
2つのシート使用しており、1つは■データベースシート、1つは●入力シートとなってます。

■データベースシートの項目は
A列    B列   C列   D列   E列    F列
購入先  〔※〕  〔※〕  品名   〔※〕   単価
AA社             みかん       1,000
BB社            みかん       1,500
CC社            みかん        700
CC社             いちご        5,000
DD社              いちご        3,500

〔※〕B・C・E列にも項目がありますが、質問(単価参照)とは関連がありません。
この項目は他のデータと使うことがありますので、削除や他の列に移動をしない方法が希望です。

●入力シートの項目も同じです。
A列    B列   C列    D列    E列     F列
購入先  〔※〕  〔※〕   品名    〔※〕    単価
【 (1) 】           【 (2) 】          《 (3) 》
(3)に関数を入力されるように組みたいです。(1)と(2)を入力すると
■データベースシートの「F列」の単価が参照されるイメージです。

分かり難い質問で申し訳ありません。お知恵を頂けますと助かりますので
何卒宜しくお願い致します。

以上

はじめまして。
エクセルの複数条件で一致するセルの抽出方法の質問が幾つかありましたので
参考に試してみましたが上手く計算することができなくて、投稿致しました。
問題が解決すると非常に助かりますので、教えて頂けますでしょうか。

質問内容
エクセル2007を使用しております。
同じ商品を複数社で購入する場合、単価が異なります。
購入先と商品名で一致した場合に単価が参照されるようにしたいです
2つのシート使用しており、1つは■データベースシート、1つは●入力シートとなってます。

■データベースシ...続きを読む

Aベストアンサー

こんばんは!

「データベース」Sheetの購入先と品名が重複することがないという前提で!
重複がなければSUMIFS関数で対応できると思います。

「入力」SheetのF2セルに
=IF(OR(A2="",D2=""),"",SUMIFS(データベース!F:F,データベース!A:A,A2,データベース!D:D,D2))
という数式を入れオートフィルでずぃ~~~!っと下へコピー!

※ 該当データがない場合は「0」が表示されてしまいます。

こんなんではどうでしょうか?m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング