ここから本文です

エクセルで、関数を使わずに数値の切り捨てはできますか。 計算の結果を小数点以...

このエントリーをはてなブックマークに追加

質問者

santa164さん

2012/3/718:46:22

エクセルで、関数を使わずに数値の切り捨てはできますか。
計算の結果を小数点以下第二位を切り捨てて小数点以下第一位で表示したいのですが、rounddownなどの関数を使わないでできないでしょうか。

現在、マクロを使って、あるセルに計算式を入力すると、そのセルには計算結果を表示し、となりのセルに計算式を表示させています。rounddownを使うと、計算式にも関数が表示されてしまうのを防ぎたいのです。
どなたか、お分かりの方がいらっしゃいましたら、よろしくお願いします。

補足説明ヘタですいません。マクロではなく、他の人が作ってくれた「表示」という関数でした。

A B
1 =表示(B1) =15.2*3.8

を、
A B
1 =15.2*3.8 57.76

と表示します。
rounddownでは、(A1)にもrounddownが表示されてしまいます。関数を使わないで切り捨てができれば、(A1)には「=15.2*3.8」、(B1)には「57.7」と表示できて、非常にすっきりするんですが・・・。無理でしょうか?Excelは2010ですが、他の人に渡すので、xlsで作成しています。

閲覧数:
2,945
回答数:
5
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

グレード

カテゴリマスター

allsun3sanさん

編集あり2012/3/808:04:18

>rounddownを使うと、計算式にも関数が表示されてしまうのを防ぎたいのです。
このことがよく判りません
マクロはよく判りませんが マクロ判るのならどうしてマクロでこのことを処理されないの??
参考に
http://okwave.jp/qa/q2879466.html

Application.WorksheetFunction.RoundDown(Range("A1"), 1)

補足の回答
他の方に渡すファイルなのに 他の方の作成された事を理解していないと・・・
理解されていなにのなら
C1 15.2
D1 3.8
入力して
A1
="="&C1&"*"&D1
B1
=ROUNDDOWN(C1*D1,1)

また
ここを理解して
http://officetanaka.net/excel/function/tips/tips57.htm
ただこの場合 × ÷ は * / で
=ROUNDDOWN(計算,1)

質問した人からのコメント

2012/3/9 16:44:37

「文字列」で式を記入して計算させる、という逆転の発想で解決しました。もっと勉強したいと思います。ありがとうございました。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル
  • このエントリーをはてなブックマークに追加

このQ&Aで解決しましたか?質問する

閉じる

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

編集あり2012/3/800:29:15

> 他の人が作ってくれた「表示」という関数でした。
ユーザー定義関数ですが VBAを使っているので 作り方はマクロと大差
ありません。そのユーザー定義関数を見直すのが最も近道かと思います。

とはいえ

> 他の人に渡すので、xlsで作成しています。
他の人に渡すものに 自分が理解できていないものを使うべきではないと
思います。

ちょっと勉強した方がいいと思います。 「表示」という関数も単に Evaluate
を使っているだけでしょうし 特に難しい処理を必要としません。

あと繰り返しますが 表示形式だけで表現するなら ユーザー定義で改行
記号を入れれば表示上切り捨てているように見せることはできます。

「表示形式 改行 Ctrl J」とかで検索すればすぐ見つかるでしょう。

***

事情がよく分かりませんが「数式を見せたくない」だけなら 数式の表
示を切ってシートに保護かければいいようには思います。

「表示形式だけで切り捨て表示にしたい」という話なら表示形式のユー
ザー定義で 改行記号を入れて 小数点第三位以下を見えなくする
という手もなくはないです。

ただ何の意味があるのかが不明です。 OSも Excelのバージョンも
それぞれのセル番地も。

> 現在、マクロを使って、あるセルに計算式を入力すると、そのセル
> には計算結果を表示し、となりのセルに計算式を表示させています。
なんでマクロを使ってまで数式で表示させているのでしょう……

もうちょっと事情がはっきりしないと分かりませんが「値」を入れればいい
のではないですか?

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

kei_jun_kuuさん

編集あり2012/3/807:52:28

santa164さん
【再度追記】

「表示」というユーザー定義関数なら、
B列に通常の数式を作っておいて、A列にそのユーザー定義関数を入力して、その形ができたと思います。
ユーザ定義関数では他のセルに細工することはできないので、そのマクロを変更しても無理です。。
やるなら、
1.B列に数式がある。
マクロで、
2.A列にB列の数式を文字列の形で表示させる。
3.B列の数式を小数点以下第一位の「値」に修正する。
上記の2~3を作れば良いのですが、
その数式のシート配列が分かんないので、ここまでです。

【補足に対する追記】??????
こんなのかしら?
数式を入力する範囲を指定しておきます。→必要なら上から3行目の範囲を変更!
A1:A20の範囲に「=15.2*3.8」のような数式を入力すると、右隣に「57.7」のように表示します。
下記のコードを、指定された要領で張り付ければできます。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myVal As Double
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Target.NumberFormatLocal = "@"
myVal = Application.Evaluate(Target.Value)
myVal = Int(myVal * 10) / 10
Target.Offset(, 1).Value = myVal
Target = Target.Formula
Application.EnableEvents = True
End Sub

************<<シートモジュール>>*****************
<マクロの張り付け方>
上記のコードをコピーして、、
入力シートの「シートタブ内」で右クリックして、「コードの表示」を選択すると、
VBE画面になりますので、右の大きな窓のカーソルのところにコードを貼り付けます。
もう、この画面はいらないので右上の「×」をクリックすると、元のシートに戻ります。

【最初の回答】
rounddownを使わずに、
=INT(A1*10)/10
でも求められますが、、

>マクロを使って、あるセルに計算式を入力すると、そのセルには計算結果を表示し、となりのセルに計算式を表示させています。rounddownを使うと、計算式にも関数が表示されてしまうのを防ぎたいのです。
この意味が分かんない。。
たとえばA1に「12.345」があるとして、マクロで、
A1→「12.3」
B1→「INT(A1*10)/10」
という風に記述するの?

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

wassamu197さん

編集あり2012/3/720:36:18

表示形式で、四捨五入はできますが切り捨ては・・・?
マクロで端数処理までやるべきでしょう。


そのセルに数式が無いということは、定数ですね。
別範囲にROUNDDOWN関数で、小数点以下第一位で返し、コピーして値のみ張りつける。

p.s. ユーザー関数ですか。

コードを直して、切捨てまで入れます。
表示(B1) = Application.WorksheetFunction.RoundDown(AAA,1)

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

otsukakogyoさん

2012/3/718:49:51

セルの書式設定で数値タブを選択すると、小数点以下の桁数を設定できます。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する