web-dev-qa-db-ja.com

小数点なしで自動丸められていないExcel2007の数値?

関数を含める以外に解決策を見つけることはできませんが、Excelでかなり簡単な問題が発生しているようです。

基本的に、ドルとセントの2つのフィールドで価格を表示したいと思います。

私はこれで問題なく動作していますが、ドルのフィールドに "24990.55"と入力すると、 "24991"はドル、 "55"はセントフィールドです。

Excelを強制的に[〜#〜] not [〜#〜]自動丸めする方法はありますか?

7
adam2510

場合

_A1 = 24990.55_

その後

  • =INT(A1)は24990を返します
  • =MOD(A1,1)は0.55を返します

小数を切り捨てる関数が必要です。 Int()がそれを行います。 Mod()は小数点のみを表示します。

関数を使わずにどのような振る舞いを期待するのかわかりません。数値をフォーマットするだけでは、その基になる値は変更されません。これは、整数値のみを表示し、四捨五入せずに小数を無視するフォーマットがないことを意味します。 Excelはそのようには機能しません。小数点なしにフォーマットすると、常に丸めが含まれます。これを回避するには、小数を切り取る関数が必要です。

セントを整数で表示したい場合は、Mod()の結果に100を掛けるだけです。

enter image description here

編集:あなたは上記の関数について話しますが、他の応答を読んで、あなたが実際に意味しているのは vba ルーチン、UDFまたは他のマクロだと思います。質問をするときは、用語を正しく理解することをお勧めします。

あなたは本当にあなたが達成したいことを明確にする必要があります。はっきりしない

  • 出力が必要な場所(例:元の番号が入力されたのと同じセルに結果を表示しますか?では、セントはどこに行くべきですか?
  • セントを0.55または55として表示しますか?
  • 値(ドルとセント)を同じセルに表示する場合、どのように表示する必要がありますか?
  • 2つの別々のセルの値が必要な場合は、ドルのセルとセントのセルを指定してください

要件を明確に指定せずに質問に賞金をかけるだけでは、あまり役に立ちません。

次の仮定に基づく別のアプローチを次に示します。

  • 小数の値は列Aに入力されます
  • ドル(整数)のみを表示するには、列Aの値を変更する必要があります。
  • 値の小数は列Cに表示されます
  • 小数は列Bに整数として表示されます

これは、次の変更イベントマクロによって実現できます。

_Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    On Error Resume Next
    Application.EnableEvents = False
    Target.Offset(0, 2) = Target - Int(Target)
    Target.Offset(0, 1) = (Target - Int(Target)) * 100
    Target = Int(Target)
    Application.EnableEvents = True
End If
End Sub
_

シートタブを右クリックし、[コードの表示]をクリックして、上記のコードをコードウィンドウに貼り付けます。

もちろん、関数なし、マクロなし、VBAなしで、まったく同じことを実現するためのはるかに簡単な方法は、セルに数値を入力するのとまったく同じ数のキーストロークで実行できます。

これらの2セットのキーストロークを比較します

2499.55

2499Tab55

キーストロークの2番目のセットは、セントを独自のセルに入れ、整数として表示します。

このスレッドで受け取った多くの提案に対するフィードバックをお待ちしております。

16
teylyn

2番目のセルを使用して値を計算できます。値がセルA1にある場合、数式は次のようになります。

=A1-MOD(A1,1)

enter image description here

オプションの場合は、データ入力を1つのワークシート(タブ)に配置し、最終的な回答が必要な場所に丸められていない出力を出力します。

3
B-Rell

これを行うことはできません。ただし、oddソリューションが必要な場合:

  • 値がA1にあると仮定して、B1とC1に数式を入力します。スクリーンショットを参照してください。
  • TextBoxを挿入します。ドラッグしてセルA1の上に作成するときは、Altキーを押したままにして、セルに完全にフィットするようにします。
  • テキストボックスの端をクリックし、数式バーに=C1と入力します。
  • リボンの[右揃え]ボタンをクリックします。他のオプションについては、右クリックして[図形の書式設定]を選択できます。
  • テキストボックスを白い背景にフォーマットし、アウトライン(境界線)はありません。
  • 列Cを非表示にできます。

enter image description here

図形をコピーしてA2に貼り付けると、数式が=C2に変更されます。必要に応じて、Altキーを再度使用して図形のサイズを変更し、セルに収まるようにします。

ところで:私はこのアプローチはお勧めしませんですが、それはあなたの質問に対する(珍しい)答えです。

2
Andy G

笑いのためだけに、ここに別の解決策があります。

列に既存のデータがあり、ドルとセントを2つの別々の列に分割したい場合は、Text to Columns機能を使用できます。

Excel 2007の場合:

On the Data tab, select Text to Columns

[データ]タブが表示されていることに注意してください。列が強調表示された状態で、Text to Columnsを選択すると、以下のダイアログが表示されます。選択区切りそして次にヒット。

Excel 2007 text-to-columns wizard, step 1 of 3

この画面で、Otherを選択し、次のようにフィールドにピリオドを入力します。

Excel 2007 text-to-columns wizard, step 2 of 3

この時点で、[完了]をクリックすると、2つの列に分割されます。ウーフー!

フィールドの宛先とフォーマットを選択する場合は、[次へ]をクリックします。

eExcel 2007 text-to-columns wizard, step 2 of 3

ファンシー!

ああ、これが結果です:

Dollars and cents!

やあ、エクセル!

1
Charles Wood

セルを一般またはテキストとしてフォーマットできますか?これらの形式は丸められません。

または、ドルのセルをROUNDDOWNして、常に適切なドルの数値を表示することもできます。

次のような式を使用することもできます

=LEFT(A1,FIND(".",A1,1)-1)    

ドルとセントを別々のセルに分割します。これを行うにはいくつかの方法があります。少しクリエイティブになりたいのであれば、複雑にする必要はありません。

どのルートを使用する場合でも、2つではなく3つのセルを使用する必要があります。全額に1セル、ドルに1セル、セントに1セル。これを行うためにコードを使用しない場合は、入力セルと数式を含む2つのセルが必要です。

1
Eric J

TRUNC関数は数値を丸めません。 ... TRUNC関数(truncate関数の略)は、数値の小数部分をセットに削除するために使用されます

0

表示する小数点以下の桁数は、[ツール]メニューの[オプション]で設定できます。[小数点以下の桁数]は、[固定小数点オプション]で選択します。または、INT関数を使用して、小数を持つ値の整数部分のみを抽出することもできます。

0
rangan

これは間違いなく可能です!数値形式を使用し、セルの実際の値を変更せずに、小数をセント全体として表示するための巧妙な回避策があります。セルを右クリックして、「セルのフォーマット」を選択します。 [番号]タブで、[カスタム]に移動します。

カスタム番号形式の「タイプ」フィールドで、以下をコピーして貼り付けます。

# ¢

次に、次のキーボードの組み合わせを入力します。

CTRL + J

そして最後に:

%

[OK]をクリックして、カスタム番号形式を保存します。次に、セル形式を「テキストの折り返し」に設定します。

%記号は数値に100を掛けるので、0.37は37と表示されます。また、不要な形式にパーセント記号が追加されます。

Ctrl + Jは、パーセント記号をセルの2行目に移動するCHR(10)改行を挿入することにより、パーセント記号を非表示にします。 Excelはこのセルの行の高さを自動的に増加させないため、非表示のままになります。

最終結果は、0.37のセル値が37¢として表示されることです。私にとって、これは数式でセル値を変更するよりもはるかに優れています。

0
ChrisB

私が理解している限り、あなたはこのようなものを表示する必要があります... enter image description here

そしてそれを達成するためにあなたはそのセルをフォーマットする必要があり、フォーマットであなたはこれをする必要があります。 enter image description here

0
Nisarg Shah

残念ながら、これが関数なしでどのように可能であるかはわかりません。

必要な関数はTRUNCです。これは単にあなたの数の小数部分を落とすでしょう。

0
Charles Wood

実際には、左を使用して検索し、検索後に必要な小数点以下の桁数を追加する必要があります。例:=LEFT(H4,FIND(".",H4)+2)

0
Tim