- 締切済み
ExcelのVlookup関数の応用について
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- Chiquilin
- ベストアンサー率30% (94/306)
ピボットテーブルを作成して それぞれの品目の入出庫ごとの最大の 日付を集計すればいいと思います。
- Nouble
- ベストアンサー率18% (330/1783)
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)
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)ソートを使う。その後品目・出入りを探す など。しかしユーザー関数で関数化できるかな。
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 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)
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)
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)
範囲 B9:C9 に "最終"@ という書式設定を施しておき、それぞれのセルに「入庫」「出庫」と入力。 式 =MAX(IF($B2:$B6=B8,$C2:$C6,"")) を入力したセル B9 を右にオートフィル。 ただし、上式は必ず配列数式として入力すること。