Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
ABC〜から最後の値
投稿日時: 17/02/17 11:14:07
投稿者: ラングドシャ

お願いいたします。
 
[アイテム一覧ブック]
 

   A       B
1 アイテム番号   種類   
2 001        A
3 001        B
4 002        A
5 003        A
6 003        B
7 003        C

 
[アイテム一覧ブック]に上記のようなデータがあります。
アイテム番号を入れ、最新の種類を抽出したいと思っています。
種類はAから始まりZへ行くほど最新です。
 
(例)
001 と入力すれば B が抽出
002 と入力すれば A が抽出
003 と入力すれば C が抽出
 
抽出のためのブックは、アイテム一覧ブックとは別に存在しており、
できれば[アイテム一覧ブック]を開いていなくても動作してほしいです。
ABCで最後の値を抽出することがむずかしく、どのような関数を使えばよいのか
わからず、検索してみてもいまいちよくわからずです。
よろしくお願いいたします。

投稿日時: 17/02/17 11:19:01
投稿者: ラングドシャ

アイテム番号と種類はかならず昇順で並んでいます

回答
投稿日時: 17/02/17 12:21:25
投稿者: WinArrow
投稿者のウェブサイトに移動

A列を文字列、
そして、アイテム番号を入力するセルも文字列
とします。
 
↓の数式をヒントに検討してみてください。
 
=INDIRECT("B"&MATCH(D2,A:A,0)+COUNTIF(A:A,D2)-1)
 
※セルD2は、アイテム番号の入力セルです。
※↑の数式では、[アイテム一覧ブック]を意識してありません。
※[アイテム一覧ブック]を開く必要があります。
 

回答
投稿日時: 17/02/17 13:11:12
投稿者: bi

作業列は使えます?
 
アイテム一覧.xlsxのSheet1

	A	B	C
1 アイテム番号	種類	
2	001	A	
3	001	B
4	002	A
5	003	A
6	003	B
7	003	C

 
アイテム一覧.xlsxのC2:=IF(COUNTIF(A:A,A2)<>COUNTIF(A$2:A2,A2),"",A2)
下にコピー
 
抽出ブックのB2:=IF(A2="","",INDEX([アイテム一覧.xlsx]Sheet1!$B:$B,MATCH(A2,[アイテム一覧.xlsx]Sheet1!$C:$C,0)))
下にコピー
 
アイテム一覧ブックが開いていない状態でもOK。
もし作業列も使えないなら関数のみでは無理かも。

回答
投稿日時: 17/02/17 13:16:55
投稿者: ブルー

>できれば[アイテム一覧ブック]を開いていなくても動作してほしいです。
 
同一ブック、別シートでの例です。
 
A1が検索値
 
=IF(ISNA(MATCH(A1,Sheet1!A:A,0)),"",INDEX(Sheet1!B:B,MATCH(A1,Sheet1!A:A,1)))
 
または
 
=IFERROR(LOOKUP(1,0/(Sheet1!$A$2:$A$100=A1),Sheet1!$B$2:$B$100),"")

回答
投稿日時: 17/02/17 13:31:25
投稿者: ブルー

>=IF(ISNA(MATCH(A1,Sheet1!A:A,0)),"",INDEX(Sheet1!B:B,MATCH(A1,Sheet1!A:A,1)))
 
これはA列昇順であることが条件。
MATCH関数の照合の型が、前半と後半で違いますので間違えないように。
 
LOOKUPの方は昇順になってなくてもできると思います。

回答
投稿日時: 17/02/17 13:31:36
投稿者: んなっと

こんなのも?
アイテム一覧ブックのSheet1に元のデータがあるとして、
 
       A   B
1 アイテム番号 種類
2      001   B
3      002   A
4      003   C
 
B2
=IF(COUNTIF([アイテム一覧ブック.xlsx]Sheet1!$A:$A,A2),LOOKUP(A2,[アイテム一覧ブック.xlsx]Sheet1!A:B),"")
下方向・↓

回答
投稿日時: 17/02/17 13:35:19
投稿者: bi

作業列なくてもできるのですね。失礼しました。

投稿日時: 17/02/17 14:40:58
投稿者: ラングドシャ

たくさんの解答をいただきありがとうございます。
こんなにたくさんの方法があることを知ってびっくりしております。
最初の質問に書いていなかったのですが、参照先の[アイテム一覧ブック]は
最新データにするため毎朝更新しております。のでこちらのブックに
作業列を加えるのは無理でした。
また、現在すでに使用している抽出ブックに今回の機能を追加したく
なるべく使用者に追加作業を行わずに済むよう検討しておりましたので
同一ブック内に参照先ファイルを追加することも難しいと考えました。
 
となりますと抽出ブックを開いたときに、参照先ファイルを同時に開くよう
VBAで追加し、COUNTIF関数で抽出するのが一番よい方法なのかなと思います。
今回はWinArrowさん、んなっとさんの方法でやってみようと思います。
 
ありがとうございました。