• ベストアンサー

Excelで 表示形式を適用後の数値を参照したい

a1 に 0.12345 と入力 → 0.12345 と表示される a2 に =a1 とした後、表示形式を数値にし、小数点以下を2桁にする → 0.12 と表示される a3 に =a2 とすると → 0.12345 と表示されてしまう (T-T a3 にどう言うワークシート関数を使えば、0.12 と表示されますか? よろしくお願いします。 ( =ROUND(a2,2) とやれば希望通りになる事は分かっていますので、 a2 に表示されたままの数値を a3 に表示する方法を知りたいです。)

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

どんな書式にも対応させるなら、通常のワークシート関数では無理です。 ユーザー定義関数をつくったらどうでしょうか? 以下の手順をおためしください。 1.Altキー+F11キーで Visual Basic Editor画面を呼び出します。 2.画面上部のメニューバーから「挿入」、「標準モジュール」で、出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 '*****ここから下をコピペ***** Function GetTxt(ByRef C As Range)   GetTxt = C.text End Function '*****ここより上までをコピペ***** 3.Alt+F11キーでワークシートへもどります。 4.参照するのがたとえばA1セルなら、お好きなセルに、 =GetTxt(A1)

maguro_daisuki
質問者

お礼

ユーザー定義関数と言う方法があるんですね。 この GetTxt 関数が一番理想通りに使えそうなので こちらを使う事にしました。本当に助かりました。 ありがとうございました。

その他の回答 (4)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>a3 にどう言うワークシート関数を使えば、0.12 と表示されますか? 表示形式はセルの値を変える機能ではありませんので、基本的に数式で表示するなら、A3セルはA2セルの表示形式を使ったTEXT関数で文字列として表示させることになります(あるいはA2セルの書式をコピーする)。 このような数式を入力しないで、A2セルに表示されたままの数値をA3セルに表示させるようにしたいなら、Alt+T、Oのショートカット操作から計算方法タブで(2007なら「詳細設定」から)「表示桁数で計算する」にチェックを入れます。 しかし、この方法でも日付に設定したセルをそのままの表示形式で参照することはできませんので、このようなことがしたい目的にもよりますが、基本はA2セルをCtrlドラッグして書式もコピーをされるのが確実でお勧めの操作です。 #Officeソフトはバージョンによって機能や操作方法が異なりますので、質問の際には必ずバージョンを明記するようにしましょう。

maguro_daisuki
質問者

お礼

回答の方、ありがとうございます。 「表示桁数で計算する」と言うオプションが有るんですね。 参考になりました。 Excel のバージョンは自宅と会社で異なるのであえて書きません でした。メインで使っているのは 2003 です。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 関数での方法を色々検索してみましたが 当方の判る範囲ではちょっと難しいように思えます。 (できる方法があればごめんなさい。) ということで、ご希望でないVBAの方法なので、参考にならなかったら読み流してください。 ↓のコードを操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので コピー&ペーストしてみてください。 尚、A3セルの数式は単純に =A2 としておきます。 データは列方向に増えていく前提にしています。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Long For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Cells(3, i).NumberFormat = Cells(2, i).NumberFormat Next i End Sub 単純に質問通りのA1~A3だけで良いのなら Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("A3").NumberFormat = Range("A2").NumberFormat End Sub でOKだと思います。 的外れならごめんなさい。m(__)m

maguro_daisuki
質問者

お礼

VBA での回答、ありがとうございます。 VBA はあまり使わないので、回答内容も全ては理解 できませんが、参考にさせて頂きます。 回答番号:No.5 の方のユーザー定義関数の方法が 一番使えそうなので、こちらを使う事にしました。

  • noyuo
  • ベストアンサー率39% (33/84)
回答No.2

うーん。 =FIXED(H3,RIGHT(CELL("format",H3))) でいいのかな~? 試してみて下さい。

maguro_daisuki
質問者

補足

ありがとうございます。 小数に関しては、上記の方法でバッチリでした。 小数や日付などの形式に関係無く、a2 に表示されたままの状態を a3 に表示するのって、無理なんですかね…

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

VBAなら、Range("A2").textを参照すれば良いけど、ワークシート関数が良いんですよね。 セルA2に式[=Text(A1,"0.00")]を設定して、文字列にしてしまうのはいかがでしょう? 数値にしたいなら、式[=Text(A1,"0.00")*1]とか。 ただし四捨五入が「おまかせ」になるので、Round関数と組み合わせる。 式[=Text(Round(A1,2),"0.00")]か式[=Text(Round(A1,2),"0.00")*1]で。

maguro_daisuki
質問者

補足

素早い回答、ありがとうございます。 教えて頂いた方法だと「小数点以下が2桁」の時、限定ですよね? 桁数が違う場合でも、対応できるとうれしいのですが… 更に言うと小数だけではなく、日付とかも。例えば a2 が表示形式:日付 で 2010/11/22 とした場合 a3 は 40504 となってしまうのですが、 a3 に "2010/11/22" と、文字列としてでも良いので a2 で表示されたママの状態をコピーできないでしょうか?

関連するQ&A

  • エクセルでの数値入力で

    こんにちは。 エクセルで数値を入力する場合に,その入力したセルの表示を条件によって小数点以下の桁数を変えたいのです。 例えば,入力セルがB4だとし,B4に 12.8 を入力したとき, A1が1のときはB4の表示は 12.80 (小数点以下2桁まで表示) A1が2のときはB4の表示は 12.8  (小数点以下1桁まで表示) としたいのです。直接入力するセルの表示なので,関数は使えず,条件付書式では,表示形式が使えません。 また,マクロは使わずにやりたいのです。ワークシートは,エクセルにも不慣れな初心者が入力することを想定して作っています。 よろしくお願いします。

  • 計算に使うエクセルの数値の表し方について

    初歩的な質問かもしれませんが… エクセルのセル間で、計算式や関数を使って計算を行うと、答えが6.10479547238…などと割り切れない小数になることが多いです。 これを、例えば小数点以下3桁で表示させるには、書式の表示形式を数値にして桁数を3で指定する方法と、ROUND関数を用いて引数を3にするやり方が考えられます。 この計算結果の数値を用いて、さらに別の計算を行う場合(例えば各計算結果の平均値を出すなど)、どちらのやり方で丸めたものを用いた方が正確でしょうか?

  • エクセルの表示形式で、10の桁で四捨五入した値を表示させるには?

    エクセルの表で、数字を四捨五入する方法にはROUND関数がありますが、関数で変換すると値そのものが変わってしまいます。 値はそのままで四捨五入した数字で表す方法を教えてください。 小数や一桁の整数までの四捨五入であれば、セルの書式設定・表示形式を「数値」にして小数点以下の桁数を指定してやれば簡単ですが、10の桁以上で丸めて表示させる方法を探しています。 例えば、9876→9880と表示させる書式設定の方法です。 値は計算に使うので、ROUND関数で実際に丸めたくないのです。 ユーザ定義を組み合わせるなどで、うまくできませんか?

  • Excelの表示形式で切り捨て

    ROUND関数ではなく、書式の表示形式で、小数点1位以下を切り捨てるよう指定することはでしますか?

  • エクセルの参照(コピー)でのゼロ表示について(その2)

    例1:同一シート上の表内のセル(例えばA5)に入力された数値データを5倍した数値をC10に表示させる。 ・「やってみたこと」 =IF(A5="","",A5)*5・・・・結果は一部失敗   失敗の状況は、A5に3.00を入力すると、ちゃんとC10に15.00が表示されます。   しかし、A5がブランクのままだと、C10のセルに「######」が表示されてしまいます。セルC10の表示形式は数値(小数点以下2桁)になっています。 ・セルの書式設定で「ユーザー定義」をえらんで右側の種類の欄に#(半角)を加えた。・・・結果は成功 例2:これがちょっと複雑でどのように応用したら良いのか判りません。    使用するセルを「B1」「C1」「F1」で説明します。全て数値です。    B1のデータに38をかけた数値とC1のデータに0.64をかけた数値を合算したものをF1に表示する方法です。    現在はF1に =+(38*B1)+(0.64*C1) と入力してます。    結果、答えは正確にF1に表示されますが、B1とC1がブランクだとF1にゼロが表示されてしまいます。この表内にもあえて0という値を入力するセルが別にあるので、ゼロ値のチェックをはずせません。 この例2の場合、上記で成功した半角#を指定すると、答えが四捨五入されたように表示されてしまうので、表示形式で数値、小数点以下1位までを指定すると、また、ゼロが表示されてしまいます。(ユーザー定義が無視されてしまう) 具体的には、B1に0.05を入力、C1に0.00を入力。答えとして1.9を表示させたいのですが、2が表示されます。 長い説明になってしまいましたが、あまりエクセルを使い込んでいないので判らないことだらけです。よろしくお願いします。

  • エクセルの合計値が一致しません

    A、B、C、D各シートの「J45」セル合計値を求めるべく、 合計 start A B C D end とシートを7つ並べて 合計のシートの「J45」セルに、 『=SUM(start:end!J45』と関数を入れています。 AのJ45セル値が14.53、Bは139.58、CとDはそれぞれ0なので合計が154.11となり、 合計シートのJ45セル値も145.11と表示されていますが、 ステータスバーには153.18と表示されているのです。 表示形式は「数値」の小数点以下2ケタを指定しています。 A~Dのシートには小数点2ケタの数字を直接数字を入力しており、 小数点以下3ケタより下が隠れている、なんてことはありません。 なぜセル内に表示されている数値と、ステータスバーに 表示されている数値にアンマッチが発生するのか、私には理解できません。 理由の分かる方、どなたか教えていただきますよう宜しくお願い致します。

  • エクセルで四捨五入した数値に小数点以下第1位の0を表示させ、文字と合わせて表示させる方法

    エクセルで、 四捨五入した数値に、*をつけて小数点以下第1位まで表示させるのに、数式の中で、"*"&(ROUND(A1,1))を使いました。例えば、1.01の時、小数点1位の0が表示されず、*1となってしまいます。*1.0と表示させるにはどのようにしたらよいのでしょうか? 表の中で*をつけない数値(小数点以下第1位まで表示)がありますので、表示形式を、ユーザ定義、0.0にしています。

  • エクセルの表示形式について

    エクセルで普通に数字を入力すると、セルの書式設定の表示形式は標準で、数字はセルの右側に寄ります。 次に、平均を出して小数点以下がいらないので、表示形式を数値にして小数点以下を0にします。 すると入力した数字と平均の数字では、字の位置が少しずれて、平均の数字が少し左に寄っています。 なぜこのような設定なのでしょう。 また、表示形式を数値にしても右端に寄るようにできないのでしょうか。 通貨で表示すると揃うんですけどね 暇なときでよいのでお願いします

  • エクセルで数値をそのまま表示する方法

    エクセルで数値をコピーして表示しております。 (例:A1に入力された数値をB1に返す。B1セルに「=A1」と入力。) 小数点の桁を指定せず、A1に入力された通りに表示する方法はありますか? 例: A1のセルが630の場合は、そのまま「630」と表示。 A1のセルが0.055の場合は、そのまま「0.055」と表示。(0.056となってしまう) A1のセルが17.0の場合は、そのまま「17.0」と表示。(17となってしまう) セルの書式設定で可能でしょうか? よろしくお願いします。

  • エクセル小数点以下のみにする表示形式について

    excelの数値表示形式についての質問です。 いろいろ調べたのですが、どうしてもわからなかったので…。 0.002、とか0.0234とか0.223・・・など、小数点以下の小さい数値を 扱うことが多いのですが、このとき、エクセルで 小数点以上の「0」を表示させないようにするにはどうすれば いいのでしょうか。 例で言えば、.002 、.0234 、.223 とかの表示形式にしたいのです。 すでに、入力した数値について、このような表示形式にできるような やり方はあるのでしょうか。 よろしくお願いします。

専門家に質問してみよう