- ベストアンサー
Excel関数で数字の加工をする方法
- Excelの関数を使用して、数値の加工を行いたい場合について質問です。
- 現在、A列には1000未満の様々な数字が入っており、2段階で加工しています。
- しかし、それを1つの関数でまとめたいと思い試行錯誤していますがうまくいきません。どなたかご教授いただけないでしょうか?
- みんなの回答 (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)),"")
その他の回答 (4)
- mshr1962
- ベストアンサー率39% (7417/18945)
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)),"")
お礼
皆様本当にありがとうございました。今回は一番最初に答えを頂いた方をベストアンサーとさせていただきました。皆様に感謝感謝です!
- imogasi
- ベストアンサー率27% (4737/17069)
例データ 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の例が質問者の言っている結果と違う。(この方が首尾一貫すると思うが) マイナスは考慮してない ので、質問者に合わない場合は、無視してください。
お礼
ありがとうございます。 ただ、2.9だと2.90に1010.258は1011にしたいのですが 違った形での答えの導きで大変参考になりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
確認ですが 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)),"")
お礼
ありがとうございます!完璧です! できればのお願いですが、1000以上だったら注意書きが出るようにしていただきましたが、現状は万一1000以上が出てきても問題はないので、この条件式がないパターンも教えていただけますでしょうか?
補足
すみません。さきほどお礼を間違えて入力しました。 ご質問の件ですが、1000以上が出てくる可能性もあります。 現状は万一1000以上が出てきても問題はないので、1010.258だと1011としたいです。 >281.25→282ですが、281.02や281.002の場合は281でしょうか? 281.002でも282としたいです。 よろしくお願いします。
- kagakusuki
- ベストアンサー率51% (2610/5101)
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))),"")
お礼
ありがとうございます!完璧です! できればのお願いですが、1000以上だったら注意書きが出るようにしていただきましたが、現状は万一1000以上が出てきても問題はないので、この条件式がないパターンも教えていただけますでしょうか?※1010.258だと1011としたいです。 よろしくお願いいたします。
お礼
本当にありがとうございました。思い通りの結果がでて助かりました。自分でも作れるように勉強していきたいと思います。