Excel関数で数字の加工をする方法

このQ&Aのポイント
  • Excelの関数を使用して、数値の加工を行いたい場合について質問です。
  • 現在、A列には1000未満の様々な数字が入っており、2段階で加工しています。
  • しかし、それを1つの関数でまとめたいと思い試行錯誤していますがうまくいきません。どなたかご教授いただけないでしょうか?
回答を見る
  • ベストアンサー

excel関数についての質問です。

A列に1000未満の様々な数字がはいっており、 現在関数を使って2段階で下記のように加工しているのですが それを1つにまとめたいと思い試行錯誤しておりますが、うまくいきません。 【例】281.25→282 、 28.125→28.2 、 2.8125→2.82  、 0.28125→0.29    15→15.0  、 1.5→1.50  、      ※3桁表示にしたい(○○○、○○.○、○.○○)     ※上記いずれも四捨五入でなく繰上げたい。    現在のところ B列には【繰上げの関数】 =IF(LEN(TRUNC(A1))>2,ROUNDUP(A1,0),IF(LEN(TRUNC(A1))>1,ROUNDUP(A1,1),ROUNDUP(A1,2))) C列には【桁数をそろえる為の関数(たとえば0.5を0.50とするため)】 =IF(LEN(TRUNC(B1))>2,TEXT(B1,"#0"),IF(LEN(TRUNC(B1))>1,TEXT(B1,"0.0"),TEXT(B1,"0.00"))) B列とC列の関数を合体して1つにまとめたいのですが、うまくいきません。 どなたかご教授いただけないでしょうか? ちなみにそれぞれの関数は私が作ったものではありませんが、 それぞれの関数自体は何とか理解できます。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>現状は万一1000以上が出てきても問題はないので、この条件式がないパターンも教えていただけますでしょうか?>※1010.258だと1011としたいです。  それでしたら、次の様な数式となります。 =IF(ISNUMBER(A1),IF(ABS(A1)<1000,LEFT(TEXT(ROUNDUP(A1,2-INT(LOG10(ABS(A1)+(ABS(A1)<1)))),"0.00"),3+(ABS(A1)<100)+(A1<0)),ROUNDUP(A1,0)),"")

excel110
質問者

お礼

本当にありがとうございました。思い通りの結果がでて助かりました。自分でも作れるように勉強していきたいと思います。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

No.2です。内容を整理して見直しました。 99.9を超えた場合、小数点1位で切り上げて、整数のみ表示(100~) 9.99を超えた場合、小数点2位で切り上げ、小数点1位まで表示(10.0~99.9) 0以上、小数点3位で切り上げ、小数点2位まで表示(0.00~9.99) =IF(ISNUMBER(A1),IF(A1=0,"0.00",IF(A1<0,"-","")&IF(ABS(A1)>99.9,ROUNDUP(A1,0),LEFT(TEXT(ROUNDUP(ABS(A1),MIN(2,2-INT(LOG10(A1)))),"0.00"),4)),"")

excel110
質問者

お礼

皆様本当にありがとうございました。今回は一番最初に答えを頂いた方をベストアンサーとさせていただきました。皆様に感謝感謝です!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

例データ A列   B列     C列 234.567 3 235 12.545 2 12.6 453.4 3 454 23567 5 23600 2.9 1 2.9 3.4 1 3.4 23.456 2 23.5 281.02 3 282 1010.258 4 1020 281.002 3 282 ーー B列B1は =INT(LOG10(A1)+1)  で整数点以上の桁数です。 C1の式は =ROUNDUP(A1,3-B1) 1つの式にまとめるのは =ROUNDUP(A1,3-INT(LOG10(A1)+1)) ーー 2.9の例が質問者の意向に合うか 282の例が質問者の言っている結果と違う。(この方が首尾一貫すると思うが) マイナスは考慮してない ので、質問者に合わない場合は、無視してください。

excel110
質問者

お礼

ありがとうございます。 ただ、2.9だと2.90に1010.258は1011にしたいのですが 違った形での答えの導きで大変参考になりました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

確認ですが 999.1の場合、繰上げると1000になります。 それともA列の数値は999以下と解釈していいでしょうか? また 281.25→282ですが、281.02や281.002の場合は281でしょうか?282ですか? それによっても数式を調整する必要があります。 一例ですが =IF(AND(ABS(A1)<1000,ISNUMBER(A1)),IF(A1<0,"-","")&LEFT(TEXT(ABS(A1)+999*10^INT(LOG(A1)-5),"0.00"),IF(ABS(A1)<100,4,3)),"")

excel110
質問者

お礼

ありがとうございます!完璧です! できればのお願いですが、1000以上だったら注意書きが出るようにしていただきましたが、現状は万一1000以上が出てきても問題はないので、この条件式がないパターンも教えていただけますでしょうか?

excel110
質問者

補足

すみません。さきほどお礼を間違えて入力しました。 ご質問の件ですが、1000以上が出てくる可能性もあります。 現状は万一1000以上が出てきても問題はないので、1010.258だと1011としたいです。 >281.25→282ですが、281.02や281.002の場合は281でしょうか? 281.002でも282としたいです。 よろしくお願いします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 A列の値がマイナスになる場合、例えば-0.28125の場合には、-0.28と表示するものとすれば、以下の様な数式は如何でしょうか。 =IF(ISNUMBER(A1),IF(ABS(A1)>1000,"値が誤っています",LEFT(TEXT(ROUNDUP(A1,2-INT(LOG10(ABS(A1)+(ABS(A1)<1)))),"0.00"),3+(ABS(A1)<100)+(A1<0))),"")

excel110
質問者

お礼

ありがとうございます!完璧です! できればのお願いですが、1000以上だったら注意書きが出るようにしていただきましたが、現状は万一1000以上が出てきても問題はないので、この条件式がないパターンも教えていただけますでしょうか?※1010.258だと1011としたいです。 よろしくお願いいたします。

関連するQ&A

  • IF関数を短くする方法(階層が深すぎる)

    A列に任意の数値が入っています。 そのときB列に、 「A1<999」なら「A1×5.0」して四捨五入 「1000<A1<2000」なら「A1×4.0」して四捨五入 「2000<A1<3000」なら「A1×3.0」して四捨五入 「3000<A1<4000」なら「A1×2.0」して四捨五入 「4000<A1<5000」なら「A1×1.5」して四捨五入 「5000<A1<6000」なら「A1×1.0」して四捨五入 とした計算式を入れたいとおもってます。 IF関数にするとものすごく長くなってしまいます。 短くしたり、他に適応する関数はあるでしょうか? よろしくお願いいたします。

  • Excelの関数で

    Excel2007を使用しています。 次のような場合のC列にはどのような関数を入れればよいのでしょうか? A    B    C 1 v3   100 100×1.08(四捨五入) 2 v8 100   100  3 空白 100 100 ・A列がv3の場合はC列はB列×1.08(四捨五入) ・A列がv8or空白の場合はC列=B列 以上、よろしくお願いいたします。

  • 小数点4桁での四捨五入がうまくいきません

    エクセルで次のような計算をさせます。 A2 に1.8、B2に0.075、C2に0.075、 D2に= A2*B2*C2 、E2に=roundup(D2,4) D2の計算結果は 0.010125 です。小数点第5桁目の値を参照して第4桁目で四捨五入したいのですが、roundupでは0.0102、rounddownでは0.0101です。 表示させたいのは0.0101です。この場合、rounddownを使えば問題ないのですが、逆にrounddownだと小数点以下4桁目の四捨五入がうまくいかない場合もあります。 例えば A3に2.7 B3に0.08、C3に0.08 があり、E3にすべての値を掛けた結果を表示させると0.01728となります。 =roundup(E3,4)では0.0173となり、rounddownでは0.0172となります。この場合はroundup関数の結果である0.0173が求める数値です。 A列、B列,C列に任意の数字が入り、E列に4桁目で四捨五入した正確な値を求めたいのですが、なにか良い方法はないでしょうか。 VBAを使っても構いません。ちなみにこれは木材の材積計算に使用する目的です。 よろしくお願いします。

  • Excel2000での初歩的な質問です。

    Excel2000での初歩的な質問です。 四捨五入というのはRound関数を使うわけですね? 例えば、28473という数値を四捨五入して28470にしたい場合ですが、 ROUND関数の入力画面には、数値と桁数があります。 数値は28473があるセルをクリックして入力するのはいいとして、 桁数というのが解りません。説明の意味も解りません。この場合、何と言う数字を入れたらいいのでしょうか? 次に、28473.49という数値を四捨五入して28473.5と表示させたい場合、 ROUND関数の入力画面で、桁数は何という数字を入力したらいいのでしょうか? 宜しくお願い致します。

  • エクセルの関数。お願いします!

    任意の桁数で四捨五入するROUND関数についてお願いします。 A1「5678.492」の数値。 (ア)小数点以下を四捨五入しなさい。 (イ)1の位を四捨五入しなさい。 =ROUND(A1,○)の○には何が入るんでしょうか?

  • エクセルで有効桁を指定して丸める

    以前、↓↓にて http://oshiete1.goo.ne.jp/qa1345491.html 「excelで普通に四捨五入をするとなると  『ROUND』などで小数点以下の桁数を指定しますよね。  そうではなく、有効桁数3桁で四捨五入…例えば、  0.1234ならば0.123  1.234ならば1.23  12.34ならば12.3  123.4ならば123…のように  数字を四捨五入させる関数(?)はあるのでしょうか。」 と質問し、 =ROUND(A1,-INT(LOG(A1))-1 + 3) とか =VALUE(TEXT(A1,"0.00E+00")) といった方法を教えていただいたのですが、 0.1234 なら 0.123 ・・・ 123.4 なら 123 までは同じなのですが、 1234.5 なら 1230ではなく1235 12345.6 なら 12300ではなく12346 つまり、1000未満の場合は以前と同じく有効数字3桁で 1000以上の場合は小数点以下四捨五入としたい場合は、 IF関数で =IF(1000>A1 ・・・のように条件指定してやるしかないのでしょうか。 (A1の部分にも長々した数式が入るもので) 数式がかなり長くなってしまい、見づらいので なにか良い方法があればと思ったのですが…

  • ROUND関数と小数点以下桁上げ(桁下げ)ボタンについて

    いつもお世話になっています。素朴な疑問ですが教えてください。 任意の桁数で切り上げや切り捨て、あるいは四捨五入を行なう関数としてROUNDUP関数やROUNDDOWN関数、そしてROUND関数というものが存在しますが、このうち四捨五入を行なうROUNDUP関数は、整数表示にしたい場合やそれ以下の小数第○位の表示にしたい場合に使う限りにおいては書式設定ツールバーの「小数点以下桁上げ(桁下げ)」ボタンを使えば事足りるのではないでしょうか? あるいは使い分けをしなければならないケースも存在するのでしょうか? ご存知の方いらっしゃいましたらぜひ教えてください。宜しくお願いいたします <(__)>

  • Excel関数

    エクセルでA1のセルに計算式を入れB1のセルに計算結果を少数第二位で 四捨五入されたものを表示する関数を教えて下さい。 それに、後で計算式の変更も結果に反映されるようにしてたいです。 よろしくおねがいします。

  • エクセル2003の関数について教えて下さい

    A、Bには数値が入力してあり、Cへ下記の数値を一度で求めるエクセル関数を教えて下さい。 Cは、A列>5であれば各行のB列/A列をA列の倍数で切り上げ、A列<=5であればその各行のB列の総和を1で割り切り上げたいです。    A   B   C 1 20 59.1  3 2 25 40.2  2 3  1 0.5   2 4  3  1       *A列は固定値、B列は変動値です。  *C3にてA列<=5の条件を満たす部分を指定可能なので、C4では計算せず、まとめてC3で計算処理します。 何度も試行錯誤して試してみても答えが出ませんでした。 よろしくお願い致します。 ※CEILING、IF、SUM、ROUNDUP関数を組み合せてみましたが・・・。

  • エクセルの関数

    セルAとセルBに小数点の値があります。 セルAとセルBどちらか、 (1)0.2以下の値がある場合には、セルAかセルBの値の大きい方を別の列のセルCに入力。 (2)両方とも0.2以上の時には、上記とはまた別の列のセルDに【セルA×セルB】の値を入力。(小数点2桁まで表示、以下四捨五入) (1)と(2)で表示されたものを、またまた別の列のセルEにまとめて、 (1)は 値×5(小数点切り上げ) (2)は 値×25(小数点切り上げ) というものを作りたいのです。 IFとANDとROUNDUPなど使ってやってみましたが、わけがわからなくなってしまったので、 どなたか教えていただけたらありがたいです。

専門家に質問してみよう