• 締切済み

ExcelのVlookup関数の応用について

ExcelのVlookup関数においての質問です。 画像のような場合において、 どのようにしたら”最終入庫”と”最終出庫”の値を 『導き出したい値』のように引っ張ってこれますでしょうか? (画像では手入力しています) 品目が複数のセルに存在し、入出庫ステータスがバラバラであり、 各入出庫の最新の日付を検索したい場合どのようにしたらよいか お知恵を拝借できますと幸いです。 宜しくお願い致します。

みんなの回答

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.7

ピボットテーブルを作成して それぞれの品目の入出庫ごとの最大の 日付を集計すればいいと思います。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

1式で、して しまいましょう B10に =MAX(INDEX($A$2:$A$6=$A$10)*($B$2:$B$6=SUBSTITUTE(B$9,"最終",""))*$C$2:$C$6,,)) とか =MAX(INDEX(($A$2:$A$6=$A$10)*NOT(ISERROR(FIND($B$2:$B$6,B$9)))*$C$2:$C$6,,)) とか =MAX(INDEX(($A$2:$A$6=$A$10)*(LEN(B$9)<>LEN(SUBSTITUTE(B$9,$B$2:$B$6,"")))*$C$2:$C$6,,)) とか 入力して 横に、フィル 頂ければ https://1drv.ms/x/s!AjviygfJDgV_1FjxHjQUuSrGxX6r

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

MAXIFSがぴったりだろう。 しかし、質問者はまさかエクセルバージョンが関係していると知らず、書いてない。 下記WEB記事にあるが、 現在(2016/4/11)この関数MAXIFSが使用できるのは以下の場合に限られています。このページではExcelOnlineの画像を使って説明しています ーー 例えば2016ならつかえるはず(2013以前はダメ) http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/maxifs.htm Excel(エクセル)基本講座:MAXIFS関数(条件付きで最大値を求める) で求まるのでは。 =MAXIFS(最小範囲,条件範囲1,条件1,[条件範囲2,条件2],・・・) ーー 質問者は、エクセルの日付は、日付シリアル値の仕組みによって、最新日は最大の整数値なのだが知っているか。 ーー 「ExcelのVlookup関数においての」といっているが、VLOOKUP関数は該当は一つの探索に限られるのを知っているか。条件2項目や3項目は、不自然な工夫が必要で、むつかしいのだ。 ーー 2013までで行うなら、 複雑な関数式を教えてもらうか、 VBAやSQLででも使うことになるのかな。 (1)フィルタを使う。 (2)ソートを使う。その後品目・出入りを探す など。しかしユーザー関数で関数化できるかな。

回答No.4

こんにちは。 VLOOKUP関数では難しいです。 「日付とは数値である→最終日付とは最大日付である」 という考え方で、MAX関数で最大値を求めましょう。 B10に =MAX(INDEX(($A$2:$A$6&$B$2:$B$6=$A10&RIGHT(B$9,2))*$C$2:$C$6,0)) という数式を普通の数式として普通に設定して、 C10までフィルコピー。 仮にA11が"B"みたいに下方向に連続するような作表でしたら、 B10:C10を下方向に必要なだけフィルコピーします。 結果、日付を数値として(42738とか42739とか)返しますから、 セルの書式、表示形式を日付形式に変更して 2017/1/3とか2017/1/4と表示されるようにしてください。 数式の意味としては、  A2:A6の値{"A","B",...} と B2:B6の値{"入庫","出庫"} を 横に連結した文字列  と  A10の値"A" と B9の値の右2文字"入庫" を 横に連結した文字列  とが、一致するかどうか{1,0}を  C2:C6の日付値に掛けて(一致しない日付を0値に見立てて)  INDEX関数で配列として収めた中の  最大値をMAX関数で求めます。 えっと、この場合は、並べ替えとかは必要ないです。 A10以下に設定する品名を参照しますし、 B9:B10に設定された分類を参照していますから、 品名、分類が増えてもそのまま対応可能です。 以上です。

  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.3

B列を昇順とC列を降順で並べ替え D2セル以下 =A2&B2 E2セル以下 =C2 B10セル =VLOOKUP(A10&"入庫",D:E,2,FALSE) C10セル =VLOOKUP(A10&"出庫",D:E,2,FALSE)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

VLOOKUP関数では目的の日付を抽出できません。 INDEX関数とMAX関数を組み合わせて数式を組み立ててください。 B10=MAX(INDEX((A2:A6=A10)*(B2:B6="入庫")*C2:C6,0)) C10=MAX(INDEX((A2:A6=A10)*(B2:B6="出庫")*C2:C6,0))

  • msMike
  • ベストアンサー率20% (368/1813)
回答No.1

範囲 B9:C9 に "最終"@ という書式設定を施しておき、それぞれのセルに「入庫」「出庫」と入力。 式 =MAX(IF($B2:$B6=B8,$C2:$C6,"")) を入力したセル B9 を右にオートフィル。 ただし、上式は必ず配列数式として入力すること。

関連するQ&A