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

■複数の条件に合致した場合、特定セルの値を返す関数を
 教えて下さい。(Excel2007)

・製造番号から生産年月を導き出す方法で悩んでいます。

▼Sheet-1(販売履歴一覧表)
 A1~100 =製品番号
 B1~100 =製造番号
 C1~100 =生産年月


▼Sheet-2(生産履歴一覧表)
 A1~10 =製品番号
 B1~10 =開始製造番号
 C1~10 =終了製造番号
 D1~10 =生産年月


1)Sheet-1の「B:製造番号」に入力された数値が、Sheet-2
 「B:開始」と「C:終了」の範囲(開始~終了)に一致

2)Sheet-1の「C:生産年月」にSheet-2の「D:生産年月」
  に入力された数値を返す。

・「SUMIFS」か「VLOOKUP」と「MATCH」を組み合わせれば
  出来そうに思うのですが、知識不足で判りません。

お手数をお掛けしますが、宜しくお願いします。

質問者からの補足コメント

  • つらい・・・

    ●複数製品で調査すると複雑になるため、単一製品を調査する関数でお願いします。

    単一製品のみを調査するため、「A列」は製品番号なので全て同じとします。
    「列B」は製造番号なので、このイメージ通りですが連番ではありません。
    「C列」が求める対象なので、このイメージです。

    「E列」から「H列」が参照対象のデータベースとなります。
    「E列」は製品番号なので全て同じです。
    「F列」~「H列」は、このイメージ通りです。 

    ●「B列」の製造番号を「キー」として「F列」と「G列」の範囲に入っている場合、
     「H列」を「C列」に返します。

    説明が分かり辛いくて申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/05/11 16:39

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

A 回答 (2件)

イメージがわかない。


↓たたき台。どこが違うか指摘ヨロ
(別シートや範囲を除く/添付図参照)

C1セルに =INDEX(H:H,MATCH(A1,E:E,0))
フィルハンドルダブルクリック
「複数の条件に合致した場合、特定セルの値を」の回答画像1
この回答への補足あり
    • good
    • 0

G列は考えていません。

F列、昇順になっているとして

C1セルに
=INDEX(H:H,MATCH(B1,F:F))
フィルハンドルダブルクリック
「複数の条件に合致した場合、特定セルの値を」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます!
目的通りのデータを得られました!!!

お礼日時:2016/05/19 19:13

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

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

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

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

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エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてくだ

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

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

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

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

Aベストアンサー

こんばんは!
一例です。
↓の画像で右側(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


人気Q&Aランキング