[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUP、OFFSET?表からのデータ抽出』(MOU)
わかりにくいタイトルですみません。
EXCEL表から最大値のものをピックアップしたいのです。ご教授願います。
A(価格) B(値引率) C(設定値) 1 100 0.3 2 200 0.4 3 300 0.5
こういうリストがあった場合、以下のようにしたい。
@ Aの価格で一番高いものを選択した後(=MAX(A1:A3))に、
A 上記で抽出された(A3)に対応する値引率(B3:0.5)を乗じた値(150)を
B 常にセルC1に表示する。
A,B列の値は、100件まで 入力予定です。
C1=MAX(A1:A100)*OFFSET(B1,MATCH(MAX(A1:A100),A1:A100)-1,0) でどうでしょうか。 (sato)
@ MATCH(MAX(A1:A100),A1:A100)・・・最大値がA1:A100の何番目にあるか調べる。 A OFFSET(B1,@-1,0)・・・B1を起点にして下に@行、右にゼロ列目の値を参照する。 ということでしょうか。 (sato)
返事遅くなりました。
この計算式だと、
A(価格) B(値引率) C(設定値) 1 100 0.5 2 200 0.4 3 300 0.3
Cには、Aの最大値300がまず選択されそれは正しいのですが、値引率もBの中の
最大値0.5が選択されてしまうようです。Aの最大値に対応した0.3を選択した
いのですが。。
VLOOKUPも考えましたが、A列の値が昇順ではないので使えません。
以下の式ではどうでしょうか。 =MAX(A1:A100)*OFFSET(B1,MATCH(MAX(A1:A100),A1:A100,0)-1,0) ~~~~ ちなみに、A列が昇順ではなくても VLOOKUP関数も使えます。 =MAX(A1:A100)*VLOOKUP(MAX(A1:A100),A1:B100,2,FALSE) ~~~~~~~ こちらの式も試してみてください。 同じ結果をえるものでもいろいろなやり方があるものです。 (sato)
最高値が複数ある場合を想定して、番号欄を設けています。9件以下の表で試作しています。
D2に=IF(COUNT(D2),ROUND(PRODUCT(INDEX(B$2:C$10,D2,)),),"")、 E2に=IF(COUNT(D$1:D2)<COUNTIF(B$2:B$10,MAX(B$2:B$10)), SUM(MATCH(MAX(B$2:B$10),INDEX(B$2:B$10,SUM(D2,1)):B$10,),D2),"")として、 これらをD10:E10までフィルドラッグするというものです。 (LOOKUP)
A B C D E 1 番号 価格 率 設番 設定値 2 1 100 0.1 3 60 3 2 200 0.5 5 150 4 3 300 0.2 ↑ 5 4 200 0.6 =IF(COUNT(D2),ROUND(PRODUCT(INDEX(B$2:C$10,D2,)),),"") 6 5 300 0.5 ↑ 7 6 100 0.2 =IF(COUNT(D$1:D2)<COUNTIF(B$2:B$10,MAX(B$2:B$10)), 8 7 SUM(MATCH(MAX(B$2:B$10),INDEX(B$2:B$10,SUM(D2,1)):B$10,),D2),"") 9 8 10 9
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.