人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELの条件式の質問です。

ある一つのリストがあり、
リスト1
4 5
5 9
8 23
10 34
30 43

他にデータがあるとします。
データ1
1
2
4
5
6

データの数字がリスト1の4以下であれば5を返す、5以下ならば
9を返す(対応した右のデータです)といった条件式をif文だけでつくるとすごく長くなってしまいました。
他に簡単な方法はありますでしょうか。



●質問者: shiotaQ
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Silvanus
●50ポイント


画像の黄色のセルを補って下さい。
A2には0を、B2にはB3と同じ値を入れて下さい。
緑色のセルE2に、数式バーに表示されている式
"=VLOOKUP(D2,$A$2:$B$7,2,TRUE)"を入力し
E3:E6へペイストして下さい。
?????ここまでの回答は間違い!?????
【改訂版】
無い頭絞って考えました!

E2の式"=SUMPRODUCT(($A$2:$A$14<D2)*($A$3:$A$15>=D2)*$B$3:$B$15)"
リストは、上に"0"を一つ付け加えるだけでOKです。
もしまた間違ってたらゴメンナサイ…orz。


shiotaQさんのコメント
ご回答ありがとうございます。 すみません。説明不足の部分がありましたので、補足で質問します。

Silvanusさんのコメント
orz…申し訳ございません。改善策を考えます。

shiotaQさんのコメント
すごいです。出来ていました。いろいろな方法があるので面白いですね。 ありがとうございます。

Silvanusさんのコメント
よかったです!…ほっとしましたw。

2 ● a-kuma3
●50ポイント ベストアンサー

VLOOKUP 関数を使うと、こんな感じになります。
f:id:a-kuma3:20121107143726p:image

関数を素直に使いたかったので、リスト1の方に細工をしています。
比較する数字を1大きくしたのと、返す値を一行ずらしてます。
31以上のときの100は、追加しました。



【追記】
補足を見ましたが、考え方は同じです。
f:id:a-kuma3:20121107145928p:image

補足にあった数字を使うのと、リスト1の細工を式でやるようにしてます。
「リスト1’」は、以下のように作ってます。


shiotaQさんのコメント
ご回答ありがとうございます。 すみません。説明不足の部分がありましたので、補足で追加質問しました。

a-kuma3さんのコメント
回答に追記しました。 最初の回答と、考え方は変えてません。

shiotaQさんのコメント
ご回答ありがとうございます。 すみません。もうひとつ前提として、返ってくる値は近似ではなくデータの値がリストの列1の行1の値以下ならば対応する列2の行の値を返し、そうではなければ列1の行2、行3と以下の行までいって列2の対応する行の値を返すやり方でした。何度も訂正してすみません。

a-kuma3さんのコメント
>> 返ってくる値は近似ではなくデータの値がリストの列1の行1の値以下ならば対応する列2の行の値を返し、そうではなければ列1の行2、行3と以下の行までいって列2の対応する行の値を返すやり方でした。 << 例えば、データ1で、605000 なら、リスト1では 600000 より大きくて、684000 以下だから、2052000 を返す、 で、良いんですよね? 因みに、No.1 の回答と、ぼくのは内容が違いますよ(使ってる関数は同じですけど)。 質問に合う動作をするように、リスト1に手を加えたリスト1’を作って、それを対象に VLOOKUP 関数を使ってます。

shiotaQさんのコメント
すみません。完璧でした。数字の対応のところで、作っていただいた新たなリストで対応をみていたため確認ミスしていました。ありがとうございました。助かりました。

a-kuma3さんのコメント
迂闊系回答者なものですから、ドキドキしてました (^^;

shiotaQさんのコメント
迂闊系質問者を卒業するようがんばります^^

質問者から

すみません。
リストの列1は徐々に大きい値になっている。
リストの中で使っている数字は例

という前提を説明するのが忘れていました。

具体的には、
リストが
432000 1296000
516000 1548000
600000 1800000
684000 2052000
768000 2304000
852000 2556000
936000 2808000
1020000 3060000
1104000 3312000
1188000 3564000
1272000 3816000
1356000 4068000
1440000 4320000

データが
3000
12000
15000
30000
115000
200000
400000
450000
500000
550000
600000
650000
455000
470000
485000
500000
515000
530000
545000
560000
575000
590000
605000
620000
635000
650000
665000
680000
695000
710000
725000
740000
755000
770000
785000
800000
815000
830000
845000
860000
875000
890000
905000
920000
935000
950000
965000
980000
995000
1010000
1025000
1040000
1055000
1070000
1085000
1100000
1115000
1130000
1145000
1160000
1175000
1190000
1205000
1220000
1235000
1250000
1265000
1280000
1295000
1310000
1325000
1340000
になります。

すみません。もうひとつ前提として、返ってくる値は近似ではなくデータの値がリストの列1以下ならば列2を返す
という式が欲しいです。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ