ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの範囲指定でビンゴの答えを出したい(意味不明)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になります。

言ってること自分でもよくわかりませんが、図で説明すると、

検査値0≦2000で480という答え
検査値2001≦5000で680という答え
検査値5001≦10000で880という答え
検査値100001≦150000で1080という答え



が欲しいのです。
VLOOKUPで範囲指定が出来たらいいのですが。

アホなわたしはIF関数で延々と入れ子にするしか思いつかないのですが他にいい方法ありますか?

よろしくお願いします。

コメント(12)

>VLOOKUPで範囲指定が出来たらいいのですが。

出来ますよ〜
頑張ってみてください!
VLOOKUP関数でできますが、2点、使い方に誤りがあります。
まず1つめは、A列に入力する区切り値ですが、これを上から0、2001、……と区切りの開始値に変更してください。
そして、VLOOKUP関数の第3引数は、この場合、省略するか「TRUE」を指定します。

この2点を変更すればできると思います。
お試しください。
VLOOKUP関数で出来ますね
IF関数でネストしても、おそらくレベル5くらいでしょうから
なんとかなりますが、やはりVLOOKUP関数でやる方が良いと思います
皆さんありがとうございます。
まじんさんの具体的なアドバイスでできました!
感謝!m(__)m
分からなくなったら一先ず
ヘルプを読むとかネット検索をするとか
してみると良いと思いますよ

VLOOKUP関数のヘルプにも検索の型に関する記述はありますし
使用例の中にも検索の型にTRUEを指定したものがあったと思います
また、VLOOKUP関数に関してGoogleで軽く検索したところ
http://kokoro.kir.jp/excel/vlookup-true.html
http://officetanaka.net/excel/function/function/vlookup.htm
http://t_shun.at.infoseek.co.jp/My_Page/KansuuManual/kansuu_page_7.htm#?−5
などのサイトがありました

ヘルプやネット検索で結構分かることがあるので
分からなくなったら一度見てみると良いと思います
ワンセラーとしては…
=(A8>2000)*INT((A8-1)/5000+1)*200+480
3まじんさん
横から質問をさせてください。

>第3引数は、この場合、省略するか「TRUE」を指定します。
この意味がわたしにはよく分かりませんが、何をさせようとしているのでしょうか?

第3引数とは、列番号のことだと思います。「TRUE」とは恐らく「1」と解釈されるだろうから、1番目の列のことでしょうか?

でも、それは少しヘンだし…。あ、もしかして、検索の方のことをおっしゃっておられるのかも…。
> 7

ああ、第4引数のことでした。失礼しました。
トピ主より、メッセにて
=(A8>2000)*INT((A8-1)/5000+1)*200+480
をどうやって作成したのかを依頼されましたので、
ここに書いてみます。

まず、一言で言うと、「適当に考えながら、微調整しながら作った」ので、
文章で解説することは難しいですが、それでは不親切ですので、
作成経緯を簡単に解説します。

最初に、法則を探します。
いわゆる、一般的には、等差数列であれば、式にすることは簡単です。
等差数列とは、簡単に言えば、グラフで表示すれば直線となるものです。
この場合、2000以下は別として、
A列が5000増加すれば、B列が200増加しています。
なので、
y=ax+b
で表せ、
a=200/5000
b=680
と分かります。
ただし、この場合、厳密に言うと、グラフ表示で直線ではなく、
階段状になるので、
B8=INT(A8/5000)*200+680 (2001以上の場合)
となります。
ここで微調整が必要で、ちょうど5000,10000,15000の時は、
200増加させないため、A8から1を引いて、
B8=INT((A8-1)/5000)*200+680 (2001以上の場合)
となります。

そして、2000以下の場合は、480なので、単に、
B8=IF(A8<=2000,480,INT((A8-1)/5000)*200+680)
としても良いですが、
さらに、まとめられないかを考えます。

480と680の差も200なので、
2001以上になったら200足すことにして、
b=680をb=480にして、
B8=(A8>2000)*INT((A8-1)/5000+1)*200+480
とします。

最初の「(A8>2000)」とは、
A8>2000ならば、(A8>2000)=1
A8>2000でないならば、(A8>2000)=0
となります。

以上ですが、この文章のように、こんなに簡単に考えた訳ではなく、
漠然と考え、その後、いろいろ微調整しながら、この数式を導きだしました。
しかし、考え方としては、上に書いた文章の通りとなります。

ポイントとしては、頭なり、紙になり、グラフを書いてみること
でしょう。直線のグラフが書ければ、
y=ax+b
で表せ、a(傾き),b(y切片:x=0)がすぐに導けますので。
直線グラフが複数あっても、IFで繋げばできると思います。
>検査値100001≦150000で1080という答え

「検査値10001≦15000で1080」に見えつつも実は1桁増えている
トラップには誰も突っ込まないの??皆さん大人ですねぇぴかぴか(新しい)
4/1投稿だからネタを盛り込んだものと思い、わくわくしながら
眺めていたお子ちゃまな私でした…あせあせ


>>6,9 たつや.com さん
昔のプログラミング言語のBASICでIF文を使うと記述が長くなり動作が遅くなるので、
論理演算や算術演算の組み合わせで高速化を図った時のような懐かしさを感じます。
数週間後に式を改めて読んだ時のためにも、補足説明は有難いですねぇわーい(嬉しい顔)

補足説明は後付けですが、こう考えれば数式にするのが
簡単であるのだと、自分が一番勉強になっていますw
2と8

やっぱり「検索の型(第4引数)」のことをおっしゃっておられたのですね。

実はわたし、vlookup(hlookup)関数の検索の型で「true」の選択肢があることは知っていたのですが、いざどんな場面で使ったらよいのか、イマイチよくイメージできていませんでした。

ここでの事例とまじんさんのご説明で、実際の場面でも使えそうな気がしてきました。

例えば、販売数量によってディスカウントがある場合で、数量に応じた適切な単価を求めて金額計算する時に使えますね。

大変参考になりました!!!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。