• ベストアンサー

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