- ベストアンサー
エクセルの関数でできますか?
1000以上の数字だった場合、その数字-(マイナス)300、1000以下の数字だった場合、その数字-(マイナス)100というのは関数でできますか? <例> 1500の場合⇒1200 800の場合⇒700 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
基本の算数ですが,「以上」と「以下」はどっちも「その数字を含む」の意味です。あなたのご質問は,ジャスト1000の時はいったいどっちにしたいのか,不明瞭です。 計算例: A1に1500や800をいれる時 =IF(A1="","",A1-IF(A1>=1000,300,100))
その他の回答 (5)
- PXU10652
- ベストアンサー率38% (777/1993)
「=IF(A1="","",A1-IF(A1>=1000,300,100)) もしよろしければ、この式の解説をお願いできませんでしょうか?」 IF(A1="","",→セルA1に値が入力されていなければ、そのままにする。 A1に値が入力されていれば、「A1-IF(A1>=1000,300,100)」が実行される。 A1が1000以上ならA1-300を計算し、そうでなければA1-100を計算する。 これはIF文の入れ子です。単純に書くと、「=IF(A1>=1000,A1-300,A1-100)」これは、A1が1000以上ならA1-300を計算し、そうでなければA1-100を計算する。式が長い(A1が重複して出てくる)ので、効率よく記述し直すと、「=A1-IF(A1>=1000,300,100)」(A1が1000以上か未満かでA1から引く値を300と100に切り替える)となる。 ただし、A1に値が入っていないとその値は「0」とみなされ、0は1000以下なので、計算式を入れたセルには「-100」が表示されてしまう。これを避けるために、A1に値が入っていない時には計算しないようにすると、「=IF(A1="","",A1-IF(A1>=1000,300,100))」となる。
お礼
とても分かりやすい説明ありがとうございました。
補足
この解説もとても役立ったのですが、今回のBAは一番最初にこの式を 回答してくださった方にしたいと思います。 みなさまありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の表現にあいまいなところはあるにせよ、その点は別にして、 エクセル関数で、極く基本的なIF関数に付いて、質問が出るなんて、あまりにも不勉強で、何でも直ぐ質問コーナーに聞くという態度に見えてしまう。 まず本やWEBを読んで、その上で疑問点がもしあれば、その点に絞って質問してください。 いくら親切で答えるコーナーであるにしても、レベルが低すぎる。 ーー そういう以上一応説明すると 2つで区切られる場合は ーーーX---|ーーーーY----|ーーーZ--- の3つに分かれるが、大のほうから判定していく(どちらからでも良いが個人で決めておくと良い) 1つで区切られる場合は ーーーX---|ーーーーY---- の2つに分かれるが 本件は|は1000の1つであるから後者である。 まづXの部分を考えて、100以上の場合はの式を下のようにイメージする =IF(A1>=1000,(チェックボックス 空欄),○) (チェックボックス 空欄)の部分は>その数字-(マイナス)300といっているからA1-300 それを書き込んで =IF(A1>=1000,A1-300,○) ○の部分が残りの範囲のことになる。 (3つ以上の場合は左から2番目の範囲について書く。) 本件は2範囲しかないから次のYの範囲について考える(其れで終わり) 3つの場合ならまた○の部分にIF(△,(チェックボックス 空欄),○)を入れるが、Yは残りの場合なので、大小比較は(必要なく)書かず そのまま計算したい数式A1-100を入れる。すなわち ○の部分に、素の式を入れて =IF(A1>=1000,A1-300,A1-100) 3つ以上の区間(範囲)になる場合は、最後の右カッコの数を、今まで現れた左カッコの数と同じになるように重ねて補う要注意する。
お礼
ありがとうございます。 WEBで一応検索してみたものの、わかりませんでした。 すみません。 失礼しました。
=IF(A1="","",A1-300+200*(A1<1000))
- keithin
- ベストアンサー率66% (5278/7941)
怒られたと思って慌てて補足したのでしょうか。 >1000以上と1000未満でお願いします。 回答No1でご紹介した数式は,既にそのようになっています。 今からでも構いませんから,実際に試してみたり,ホントにあなたのやりたかったことにキチンと応用できるか,やってみてください。 返答を書くのは最低限,寄せられた回答をまず実際に試してみて,できれば理解する努力もしてみてから,それで出来れば良し判らない所があったら「ここが判りません・こうやってみたけどこんな結果になってしまってうまく行きません」のように書いて頂くのでも全然遅くありませんよ。 試してもみないうちに(ましてや回答の半分目を通しただけで,読みもしないで)返事だけしてもらっても,それこそ何の役にも立ってないってモノです。
お礼
怒られたとは思っていませんが、本当だなと思ってすぐに補足を入れただけです。 次に回答をいただける方のためにもと思ったのですが、失礼しました。
- Cupper-2
- ベストアンサー率29% (1342/4565)
可能です。 しかし、以上と以下の定義では "1000" の時はどうするのかが決まりません。 1000以上は1000から上 1000以下は1000から下 ですので、1000はどちらにも含まれるんですよ。 1000はマイナス100にするなら、「1000を超える場合マイナス300」 1000はマイナス300にするなら、「1000未満はマイナス100」 と言った表現をしましょう。 1000を超える場合はマイナス300、それ以外はマイナス100 =IF(A1>1000,A1-300,A1-100) 1000以上はマイナス300、それ以外はマイナス100 =IF(A1=>1000,A1-300,A1-100) などと IF関数で条件を付けて計算させることができます。 ところで、計算結果が 800 になったとき、元の値が 900 なのか、1100 なのか不明になりますけど良いんですか?
補足
ありがとうございます。 すみません。 1000以上と1000未満でした。 800になった場合のことですが、これは実際の数字とは違うので大丈夫だと思いますが、注意してみます。 こちらの式を入れてみたところ、うまくできませんでした(泣
お礼
ありがとうございます。 この式でできました。 もしよろしければ、この式の解説をお願いできませんでしょうか?
補足
回答ありがとうございます。 すみません。 1000以上と1000未満でお願いします。