[[20030918111912]] 『常に一番下の数値を利用する』(よっしー) >>BOT

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

 

『常に一番下の数値を利用する』(よっしー)

例えば下のような表があるとき、
B1からB4の範囲内で
常に一番下の数値(この場合B3)をB5に表示したいのですが
どなたか教えていただければ非常に助かります。
宜しくお願いします。

   A   B   C                                            
 1     2                                  
 2      6                                  
 3       4                                  
 4
 -------------      
 5       4


vba マクロになってしまいますが。下記コードを対象シートモジュールに
コピー(記載)すればできます。(なお)

Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(4, 2) <> "" Then Cells(5, 2) = Cells(4, 2): Exit Sub

If Cells(3, 2) <> "" Then Cells(5, 2) = Cells(3, 2): Exit Sub

If Cells(2, 2) <> "" Then Cells(5, 2) = Cells(2, 2): Exit Sub

If Cells(1, 2) <> "" Then Cells(5, 2) = Cells(1, 2): Exit Sub

End Sub


[[20030806101456]]の(kkk)さんの回答を応用してみたんですが、

 B5 =INDIRECT(ADDRESS(MATCH(10^17,B1:B4),2))

 で答えが出るようです。

 で、、、逆質問なんですが(苦笑) 
 MATCH関数に使われている検索値「10^17」は最終データを表すようですが
 この正しい使い方といいますか、意味を教えていただけないでしょうか(汗)(kuro)

 すみません。ちゃんと上記の場所に回答がありました(滝汗)
 それからもっと簡単な式も・・・    (kuro)

 =INDEX(B1:B4,MATCH(10^17,B1:B4))


「なお」さん、「kuro」さん有り難う御座いました。
「kuro」さんの簡単な式でやってみたら上手くいきました。
本当に助かりました!!(よっしー)


 MATCH で10^17 が最後のデータを表すとは、知りませんでした。
 (kazu)

  あ〜、、すみません。そうじゃありませんでした。<最後のデータを表す

Match関数が検索する範囲のなかにありえないであろう数値(範囲内の最大値よりも大きい数値)である必要があるだけでした。

 MATCH関数の引数に照合の型が指定されていない(1を指定と同じことになり、最大の値を検索する)ため、
 検査範囲内にはその値がないので、範囲内にある最後のデータの位置を返してくるというものです。
 上記の場合でしたら、検索値は10でもかまわないわけです。いやぁ勉強になりました。(kuro)


 そうでしたか、ヘルプみても出てこないのでなぜかなぁと思っていました。
 しかし、色々勉強になりますね。
(納得した・kazu)

コメント返信:

[ 一覧(最新更新順) ]


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