0

複数のワークブックをプレビュー ファイルに集約するこのコードがあり、すべてのデータがテーブルとグラフに明確に配置されています。次に、それらの表とグラフが PowerPoint プレゼンテーションに貼り付けられます。

表の値が PowerPoint スライドにコピーされるときに、適切な書式設定が機能しないという問題があります。ソース ワークシートの 1 つが 847389.240398230423 のような値を出力し、それを PowerPoint に入力しようとすると、2.240398230423E-02 のように多くの行を占める値が得られます。そのような形式は、どの会議でも見栄えがよくありません。

値がプレビュー ワークブックにある間にコードを編集するコードをいくつか書きました。

Sheets("Output").Select

'Select1
Range("C10:H15").Select
    Selection.NumberFormat = "0.000"

'Select2
Range("C17:H17").Select
    Selection.NumberFormat = "0.000"

'Select3
Range("C18:H19").Select
    Selection.NumberFormat = "0.00"

'Select4
Range("C20:H21").Select
    Selection.NumberFormat = "0.00"

このコードは、必要なデータに対して完全に機能し、0.487 のように表示されますが、セル内の実際の値は 0.487682742490 のようなものであり、PowerPoint プレゼンテーションを更新するときにコードが認識しているものだと思います。

小数点以下の最初の 2 桁または 3 桁のみを使用し、その他の重要でない数字を無視するコードを作成する方法はありますか?

4

1 に答える 1

1

これを実現するにはいくつかの方法があります。1 つの方法は、書式設定された/表示可能なデータを実際の値として強制することです。

たとえば、セルA1に値が含まれているとします1.234。このコードの使用:

ActiveSheet.Range("A1").NumberFormat = "0.0"
ActiveSheet.Range("A2").Value = ActiveSheet.Range("A1").Value
ActiveSheet.Range("A3").Value = ActiveSheet.Range("A1").Text

結果は次のようになります。

  • セルA1には値1.234が含まれていますが、次のように表示されます1.2
  • セルA2には値が含まれ、次の1.234ように表示されます1.234
  • セルA3には値が含まれ、次の1.2ように表示されます1.2

セルの.Textプロパティは、基本的にセル内に表示されるものです。この方法で値を変換すると、PP への転送は意図したとおりに機能するはずです。


別の方法として (ただし、値に固執するのではなく、使用するのがやや面倒で文字列が必要なため、好ましくありません)、次のようなものを使用できます。

Dim s As String
Dim dec As Integer

dec = 2
s = CStr(ActiveSheet.Range("A1").Value)
ActiveSheet.Range("A3").Value = CDbl(Left(s, InStr(s, ".")) & Left(Right(s, Len(s) - InStr(s, ".")), dec))

上記では、 の値を増やすことで小数点以下の桁数を増やすことができますdec。ただし、さらに変更を加えないと、 (重要な 0 を削除する可能性があります)1.000として出力されます。1

このメソッドを使用する場合、数値を保持する ( を使用CDbl()) か、演算を実行する必要がない場合 (つまり、PP に入れるだけ) は文字列として保持することができます。

于 2012-07-31T15:33:43.883 に答える