- ベストアンサー
特定の数字を切り捨てにする計算式
- セルA1には「1100」と言う数字が記載されています。次にB1~B47は上から順番に「300」「325」「350」「375」「400」「425」「450」「475」「500」「525」「440」「468」「495」「523」「550」「578」「605」「633」「660」「688」「715」「743」「770」「798」「825」「853」「880」「908」「935」「963」「990」「1018」「1045」「1073」「1100」「1128」「1155」「1183」「1210」「1238」「1265」「1293」「1320」「1348」「1375」「1403」「1430」の数字が記入されています。
- セルC1に、上記数字のどれかを記入するとセルD1には((C1で選択した数字÷A1)×100)の計算式を表示させます。表示させる数字は四捨五入し小数第一位(例えば300だと27.3、350では31.8など)と言うルールです。
- 質問は、C1セルに「325」「523」「633」「688」「743」「798」「853」「908」「963」「1018」「1073」「1128」「1183」「1238」「1293」「1348」「1403」の数字を入力した場合に、D1に小数第2位を切り捨てて表示する計算式を組むことができるかどうかです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>今回のは難題なので私は良く分かりませんね。 はて?? ROUND関数やCOUNTIFと言った、ごく当たり前のモノしか使ってません。 難しいところはどこにも無いと思いますが、回答した数式の一体どこが判らなかったのですか? >計算式で無くエクセルVBAを使用すると出来るのでしょうかね? 回答したように、計算式で十分にできています。何が聞きたかったのでしょうねぇ? 少なくとも、これはマクロでないと出来ないようなご相談ではありません。 #感想もいいですけど、それよりあなたの問題を解決するための質問をしてください。
その他の回答 (3)
- shorun
- ベストアンサー率42% (133/310)
>今回のは難題なので私は良く分かりませんね。 No2回答者さんが指摘の通り、難問ではありませんよ、 エクセルの一番右上のバツ×印の直ぐ下にある?ボタンをクリックしてから 次の2個の関数を勉強しましょう。 (ア)if を入力してクリックして、該当するところを調べる。 (イ)切捨て切上げ を入力してクリックして、該当するところを調べる。 もし勉強する時間がなく急ぎなら次の方法で答を出すことはできます。 しかし、他の場合に応用できませんから、前記(ア)(イ)等の他参考書で初歩的な関数を勉強するように習慣づけてください。 とりあえず答だけが必要なら 特定の数字をセルE1からE17 (邪魔にならない列ならどの列でも良い) に入力しておいて セルD1に次の式をコピーして貼り付けるか、または次のとおりに入力する。 =IF(COUNTIF(E1:E17,C1)=1,ROUNDDOWN(C1/A1*100,1),ROUND(C1/A1*100,1)) ただし、特定の数字を他の列に入力(例えばG列)するなら 上式中のE1:E17はG1:G17に書き換えること。
お礼
難題ではありませんでした。自分で解決しようとせず人に頼りすぎた私がいけませんでした。これからは自分で考え本当に分からなければ相談します。この度は私の為に時間を割いていただきありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
まず、 >そしてセルC1に、上記数字のどれかを記入すると という件に関しては、C1セルに入力規則のドロップダウンリストを設定する事で、B1~B47に入力されている値の中から選択した値を入力する事が出来る様にして下さい。 その際、「元の値」欄には $B$1:$B$47 と入力する様にして下さい。 もし、ドロップダウンリストの設定方法が判らない場合には、下記の参考URLのページを参考にして下さい。 【参考URL】 よねさんのWordとExcelの小部屋 > Excel2007基本講座 > 入力規則の使い方【リスト編】 > 同一シートのリストを使う http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html#risuto 次に、 >上記数字のどれかを記入するとセルD1には((C1で選択した数字÷A1)×100)の計算式を表示させます。表示させる数字は四捨五入し小数第一位(例えば300だと27.3、350では31.8など)と言うルールです。 >C1セルに「325」「523」「633」「688」「743」「798」「853」「908」「963」「1018」「1073」「1128」「1183」「1238」「1293」「1348」「1403」の数字を入力した場合はD1は小数第2位の所で切り捨て(例えば325では29.5、523では47.5など)と言う計算式などをD1に組む事は出来るのでしょうか? という件に関しては、F1~F17の範囲に「325」「523」「633」「688」「743」「798」「853」「908」「963」「1018」「1073」「1128」「1183」「1238」「1293」「1348」「1403」の数字を入力しておいた上で、D1セルには次の様な関数を入力されると良いと思います。 =IF(COUNT($A1,$C1)=2,ROUND($C1/$A1*100,1+(COUNTIF($F:$F,$C1)>0)),"") 尚、もしも、F列等に「325」「523」「633」「688」「743」「798」「853」「908」「963」「1018」「1073」「1128」「1183」「1238」「1293」「1348」「1403」の数字を入力しておく事をせずに、関数だけで同じ事をする場合には、D1セルには次の様な関数を入力されると良いと思います。 =IF(COUNT($A1,$C1)=2,ROUND($C1/$A1*100,1+ISNUMBER(MATCH($C1,{325,523,633,688,743,798,853,908,963,1018,1073,1128,1183,1238,1293,1348,1403},0))),"")
お礼
凄いですね、この様な方法もあるのですね。今回は基礎的な内容で解決出来る範囲でした。今度はちゃんと調べ本を見て分からなければ相談します。この度はありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
数列にあんまり明確な規則性が無いので、簡易にF1からF17に「325」「523」「633」「688」「743」「798」「853」「908」「963」「1018」「1073」「1128」「1183」「1238」「1293」「1348」「1403」を列記(実際には上から詰めて並べなくても構わない) D1には =ROUND(C1/A1*100-0.05*COUNTIF(F:F,C1),1) とでもしておきます。 もちろん =IF(あったら,ROUNDDOWN(計算,1),ROUND(計算,1)) とかでもできます。
お礼
補足の件はすいませんでした。全然難しくなく最適な方法でした。そして基礎的な内容でしたね。今度は自分でちゃんと考え調べて分からなければ質問します。 この度はありがとうございました。
補足
なるほど、数字に規則性が無いため非常に難しいですね。 計算式で無くエクセルVBAを使用すると出来るのでしょうかね? 今回のは難題なので私は良く分かりませんね。
お礼
補足の件はすいませんでした。全然難しくなく最適な方法でした。そして基礎的な内容でしたね。今度は自分でちゃんと考え調べて分からなければ質問します。 この度はありがとうございました。