[[20121107141654]] 『条件付きで下から検索』(大) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件付きで下から検索』(大)

 いつもお世話になっております。
 下記のように
 客先に提出した書類の記録をつけています。

   A   B     C     D
 1 書類名 書類番号  有効期限   提出日
 2 書類A  A-555  2012.10.25 2012.10.05
 3 書類B  B-772  2012.11.30 2012.10.05
 4 書類A  A-234  2012.11.15 2012.10.13
 5 書類C  C-487  2013.04.30 2012.10.15
 6 書類B  B-772   未提出  2012.11.04
 7 書類A  A-555  2013.04.25 2012.11.06

 書類は、
 有効期限が過ぎている場合に提出し、
 有効期限内であれば、提出しません。

 なので、毎回、書類番号を元に
 該当する書類の有効期限が切れているか確認する作業があります…。
 これを簡単にする方法を探しています…。

 Q 書類番号(B列)を入力した際に
   該当するC列の1番下の有効期限(「未提出」を除く)を
   E列に表示させる関数はありますか?
   または、マクロ以外に何か良さそうな確認方法はありますか?
   

 宜しくお願い致します。


 こんなこと

 =LOOKUP(10^10,C2:C7/(B2:B7=書類番号))

 By

 By 様

 ご回答、ありがとうございます!

 が、E7・E8に入力しても、
 エラー(#N/A)が表示されてしまいます。。。

                       (大) 

E2やE6はちゃんと結果が出た、という意味なのかな?

推測。
2012.10.25 が日付シリアル値ではなく、文字列扱いになっている。
日本語の標準設定では「.」が西暦日付の区切り記号として認識されず、
そのため、入力時にシリアル値(日付の数値)に変換されていない。
結果、C2:C7/(B2:B7=書類番号)の配列が#VALUE!エラーの配列になる。
エラー値はどんな数値よりも大きいので、LOOKUP関数で検索されず、#N/A!。

対策
C列を選択して区切り位置ウィザード。
列のデータ形式に日付を選択して実行しシリアル値に変換。
区切り記号でどうしても「.」が必要なら、セルの書式設定の表示形式
ユーザー定義でで区切り記号を編集。

(みやほりん)


 みやほりん 様

 ご回答、ありがとうございます!

 >E2やE6はちゃんと結果が出た、という意味なのかな?

 いいえ。。。
 By様の関数が、E7に入力するべき関数なのか
 E8に入力するべき関数なのかわからなかったので、
 どちらにも入力してみたのですが、
 どちらもエラーでした。。。

 どちらに入力するべき関数だったのでしょうか?

 ちなみに、文字で入力していたので
 日付入力にしてみましたが、変わらずエラーが返ってしまいます。。。

                               (大)


こういう事??
E2に「=INDEX(C$1:C2,MAX(INDEX((B$1:B2=B2)*(C$1:C2<>"未提出")*ROW(B$1:B2),)),)」
で下にフィル。

(i03t)


C列が日付シリアル値に変換済みとして、

E2へ下記の式
=LOOKUP(10^10,$C$2:$C$7/($B$2:$B$7=B2))

私の環境ではB2に「2013/4/25」が返ります。

また、E3にE2をコピー貼り付けした式では「2012/11/30」が返ります。

上記例ではこのような結果を期待していると推測しましたが。

(みやほりん)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.