- ベストアンサー
エクセル 頭からの桁数を揃える
下のような数値(左側)が同一列にあります。 それぞれ右側のように頭から4桁を表示したいのですがどのようにしたらよいでしょうか。 465.51326 → 465.5 343122.38 → 343100 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
◆他にこんな方法もありますよ(有効数字4桁) =IF(COUNT(A1),ROUND(A1,3-INT(LOG(ABS(A1)))),"") または、 =ROUND(A1,5-FIND(".",A1&"."))
その他の回答 (4)
- maron--5
- ベストアンサー率36% (321/877)
◆ham_kamoさんの回答にあるように、「5桁目を四捨五入でなく切り捨てるのであれば、ROUNDをROUNDDOWNにする必要があるかと思います。」であれば、 =ROUNDDOWN(A1,5-FIND(".",A1&".")) とか、またこんな式でもいいかも =TRUNC(A1,5-FIND(".",A1&"."))
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1です。 「頭から4桁」というのは、5桁目以降は0として切り捨てるのか、5桁目で四捨五入するのかどちらなのでしょうか。 私はてっきり切り捨てるものだと思い、No.2の回答のようにTEXTを使って表示形式で何とかしようと私もやってみましたが、いろいろな数値で試したところ、 1.2345 → 1.235 1234.5 → 1235 とどうしても5桁目で四捨五入されてしまうので、No.1のような力わざの回答になってしまいました。 maron--5さんのNo.3の回答のようなスマートな式は私は思いつきませんでした(おかげで勉強になりました)が、5桁目を四捨五入でなく切り捨てるのであれば、ROUNDをROUNDDOWNにする必要があるかと思います。 四捨五入でよかったのであれば、この回答は蛇足なので無視してください。
お礼
ありがとうございました。 4桁目の数字は重要度が低いので四捨五入するかどうか決めかねていましたが、できれば四捨五入したいと思います。あやふやな質問ですみません。 ROUNDとROUNDDOWNの違いがわかり参考になりました。
- maron--5
- ベストアンサー率36% (321/877)
◆関数で別セルにならで、有効数字が4桁なら =IF(A1="","",TEXT(A1,"0.000E+0")*1) ★参考までに、有効数字が3桁なら =IF(A1="","",TEXT(A1,"0.00E+0")*1)
- ham_kamo
- ベストアンサー率55% (659/1197)
セルの表示形式などでトライしてみましたが、うまくいきませんでした。けっこう難しいですね。 もっとスマートなやり方がありそうですが、とりあえず関数で別セルに表示する方法です。 A1に数値が入っているとして、 =IF(LEN(INT(A1))>=4,LEFT(A1,4)&REPT("0",LEN(INT(A1))-4),LEFT(A1,4+IF(ISERROR(FIND(".",A1)),0,1))) ただし、文字列になってしまいます。数値として入力するなら、 =(IF(LEN(INT(A1))>=4,LEFT(A1,4)&REPT("0",LEN(INT(A1))-4),LEFT(A1,4+IF(ISERROR(FIND(".",A1)),0,1))))*1 とか。ただしA1が空欄だったら#VALUE!になってしまいますが。
お礼
いろいろな方法があるのですね、おどろきました。 エクセルの達人になりたいです。