- ベストアンサー
Excel 関数について
一番右の1文字だけを削除する関数を調べたら下記の数式がありました。 しかし、1.75は1.7と表示されますが、1.70だと1.となります。0が無視されてしまいます。 原因は何でしょうか?また、良い方法はないでしょうか? LEFT(A 1.LEN(A1 )-1)
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> 原因は何でしょうか? LEFT関数に「1.70」という数値が渡される際に、Excelの中では「1.7」という数値に直されているからだと思います。 > また、良い方法はないでしょうか? 小数点の第2位以下を切り捨てるなら、ROWNDDOWN関数を使うのが真っ当だと思います。 今のままでやるなら、 ・「1.70」の入ってるA1セルを文字列にする。 ・A1をTEXT(A1,"0.00")とかの関数で文字列にする。 LEFT(TEXT(A1,"0.00"), LEN(TEXT(A1,"0.00"))-1) だとか。
その他の回答 (5)
- kagakusuki
- ベストアンサー率51% (2610/5101)
セルの書式設定の表示形式が、[標準]、[数値]、[文字列]の内の何れかだけである場合で、セルごとに表示される桁数が異なる場合には、次の様な関数にされると良いと思います。 =IF(A1="","",IF(AND(ISNUMBER(A1),LEFT(CELL("format",A1),1)="F"),LEFT(TEXT(A1,SUBSTITUTE(LEFT(1/3,MID(CELL("format",A1),2,2)+2)+0,3,0)),LEN(TEXT(A1,SUBSTITUTE(LEFT(1/3,MID(CELL("format",A1),2,2)+2)+0,3,0)))-1),LEFT(A1,LEN(A1)-1)))
お礼
ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの関数の解説書を見ると、LEFT関数の第2引数の注意書きに、「文字数に実数を指定すると、小数部分は切り捨てられます。」と載っているよ。何かの解説書の孫引きで、この表現が入っている解説書は多いのではと思う。見ましたか? 実数とはここでは小数点のついてない数=整数のこと。 関数の種類によって、その引数の内容タイプは、取り決めなので「原因は何でしょうか」というのがおかしい。 このLEFT関数の文字数に、小数点付きの数を、指定すると、どういう風に意味的に解釈しろというの?そこがわからない。 エクセルでは、修正してくれる機能も諸所にあって、標準が見えにくくなっている点は感じる。
お礼
ありがとうございました。
- Prome_Lin
- ベストアンサー率42% (201/470)
エクセルでは、数値の「1.70」などは、最後の「0」は意味が無い、とエクセルが勝手に判断します。 従って、私は、仕事では「文字」しか扱わないので、「Ctrl+1」(コントロールキーを押しながら、キーボード左上の「1」(決してテンキーの「1」を使ってはいけない)を押す)「セルの書式設定」を出して、「文字列」を設定しておきます。 そうしないと、郵便番号で「0」から始まるようなものも、頭の「0」が欠落してしまうからです。 で、「1.70」の「0」を表示させるには、「Ctrl+1」で、「文字列」にするか、「数値」を選んで、「小数点以下の桁数」を「2」に設定します。 「数値」として計算などに使いたい場合は、「数値」を、数値として利用しないのなら「文字列」を設定すればいいと思います。 なお、「A列」全体を設定してしまいたければ、セルの上の「A」の文字をクリックすると、「A列」全体が選択できるので、その状態で「Ctrl+1」をして設定すると、便利です。
お礼
ありがとうございました。
- bunjii
- ベストアンサー率43% (3589/8249)
>原因は何でしょうか?また、良い方法はないでしょうか? 原因は数値の1.70の0は文字列に置き換えた時に省略されえて"1.7"になるためです。(貼付画像参照) Excelではセルの表示書式で無用な小数点以下の0や先頭の0を表示することができます。 しかし、数値を文字列に置き換えるときは書式の指定をしないと目的のようになりません。 次のような数式にすれば小数点2桁までの数値から小数点以下1桁の文字列へ変換できます。 =LEFT(TEXT(A1,"0.00"),LEN(TEXT(A1,"0.00"))-1) → LEN("1.70",4-1) → "1.7"
お礼
ありがとうございました。
- 178-tall
- ベストアンサー率43% (762/1732)
left( ) の適用対象は「文字列」。 数値の 1.70 なら =fix(A1,2) で「文字列」にしたものに =LEFT(A1,LEN(A1)-1) とする … など、迂回を要します。
お礼
ありがとうございました。
お礼
ありがとうございました。