[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定した列の範囲から最も近い値を探し、その隣の列の値を出したい。』(ポッキー)
指定した列の範囲から最も近い値を探し、その隣の列の値を出したいと考えています。
下記のようなファイルがあるとします。
例えば、no.1はセル「I2」にデータ「x」があります。「x」に最も近い値を「B2:10」の検索範囲から探し、隣接する「A2:10」からその対応番号を「J2」にだします。
同様にno.2やno.3も、それぞれの検索範囲で探し対応番号をだしていきたいと考えています。
A B C D E F G H I J 1no.1の対応番号 no.1の検索範囲 no.2の対応番号 no.2の検索範囲 no.3の対応番号 no.3の検索範囲 データ 対応番号 2 no.1 x 3 no.2 y 4 no.3 z 5 6 7 8 9 10
当方マクロの知識はありませんが、基本的な関数は使えます。
ご教示いただければ幸いです。
Excel: 2016、OS: Macです。
< 使用 Excel:unknown、使用 OS:unknown >
近い値が複数あった場合はどうするのか? (ねむねむ) 2015/11/28(土) 10:15
では検索値が10で、表の中に8と12があった場合はどちらとするのか? どちらも10との差は2になるが。 (ねむねむ) 2015/11/28(土) 19:02
(ポッキー) 2015/11/28(土) 19:11
各検索範囲は昇順に並んでいるものとする。
J2セルに =INDEX(INDEX(A$2:E$100,,(ROW(A1)-1)*2+1),MATCH(1,(ABS(I2-INDEX(B$2:F$100,,(ROW(A1)-1)*2+1))=MIN(ABS(I2-INDEX(B$2:F$100,,(ROW(A1)-1)*2+1))))*1,0)) と入力してShiftキーとCtrlキーを押しながらEnterキーで式を確定してくれ。 (確定後、式が{}で囲まれればOK) その後、下へフィルコピーしてくれ。
なお、下記でもよい。
J2セル:=INDEX(A$2:A$100,MATCH(1,(ABS(I2-B$2:B$100)=MIN(ABS(I2-B$2:B$100)))*1,0)) J3セル:=INDEX(C$2:C$100,MATCH(1,(ABS(I3-D$2:D$100)=MIN(ABS(I3-D$2:D$100)))*1,0)) J4セル:=INDEX(E$2:E$100,MATCH(1,(ABS(I4-F$2:F$100)=MIN(ABS(I4-F$2:F$100)))*1,0)) こちらもShift+Ctrl+Enterで式を確定。
追記 もし近い値が必ず一つになる場合であれば検索範囲が昇順である必要はない。 上記の式では同じ差になる場合、上の方にあるものを持ってくるようになっているため。 (ねむねむ) 2015/11/29(日) 10:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.