[[20051128015508]] 『範囲中の0の近似値を探しその隣のセルの値を表示』(mimi) ページの最後に飛ぶ

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

 

『範囲中の0の近似値を探しその隣のセルの値を表示する』(mimi)
はじめまして,エクセルの初心者なのですが、本を読んでもよくわからないことがあるのです。
A列,B列,C列に各100行ずつ計算結果にもとずいた数値がはいっているのですが、
C列100行の計算結果の範囲のなかで0の近似値をさがし,そのセルのとなりのB列の数値を表示させるにはどうしたらいいのでしょうか?(C列には正負の数字があります)
 どうかよろしくおねがいします。

 ユーザー定義関数です。
 1) エクセル画面より Alt + F11 でVBEを起動
 2) 「挿入」->「標準モジュール」で右空白部分に下記コードを貼り付け
 3) X をクリックしてエクセル画面に戻る

 セルに

 =minimum(B1:C100,-2)
 (,2)は表示したい列の右端(右端を含む)からの列数、隣であれば、2

 Function minimum(rng As Range, Optional ref As Long = -2)
 Dim x, y, adrs As String, r As Range
 adrs = rng.Columns(rng.Columns.Count).Address
 x = Evaluate("min(if(" & adrs & ">=0," & adrs & "))")
 y = Evaluate("max(if(" & adrs & "<=0," & adrs & "))")
 z = Application.Min(Abs(x), Abs(y))
 If z = Abs(y) Then z = y
 minimum = rng.Columns(rng.Columns.Count).Find(z, , , xlWhole).Offset(, ref + 1)
 End Function
 (seiya)

 関数で求める場合の例です。
 D列を作業列として使い、D1=ABS(C1) として、D100までコピーしておきます。

 =INDEX(B1:B100,MATCH(MIN(D1:D100),D1:D100,0))

 とすれば、ご希望の結果が得られませんでしょうか。
 作業列を使わない場合は、

 =INDEX(B1:B100,MATCH(MIN(ABS(C1:C100)),ABS(C1:C100),0))

 として、こちらは配列数式ですからCtrlとShiftを押しながらEnterで確定してください。
 どちらも、
 1.C列の途中に空白があるとゼロとみなして、そのセルが近似値となります。
 2.近似値が同じであるセルが二つ以上ある場合は、上にある行を選択します。
 (sato)   

Re:mimi
ありがとうございました。おかげさまでうまくいきました。いろんな方法があるんですね。
勉強になりました。   どうもです!


コメント返信:

[ 一覧(最新更新順) ]


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