1

ここからのトリックを使用して別のシートからピボットされていない、小数点以下20桁までの数値である値の範囲を持つExcelスプレッドシートがあります。

問題は、セルに10桁しか表示されていないため、たとえば、値が5.46827166811115であっても、5.468271668と表示されていることです。

フォーマットをテキストに設定しようとしましたが、それでも数値として扱いたいので、小数点以下の桁数が異なるため、固定の#。###フォーマットを使用できません。表示する唯一の方法は、セルをテキストとしてフォーマットし、セルを選択して、すべてのセルの入力ボックスをクリックすることです。

次に、セル内の数値がテキストとしてフォーマットされているか、アポストロフィが前に付いているという警告が表示されますが、少なくとも完全な値が表示されています。

私は、cell.Value = cell.Valueのようなばかげた単純なことを実行するVBAスクリプトを見つけましたが、それは機能しているように見えましたが、もう見つけることができず、今はそれを再現できません。

確かにこれを行うためのより簡単な方法はありますか?それほど重要ではありませんが、SSISを介してこのデータをVARCHAR(MAX)にインポートすると、切り捨てられた値が取得されます。

4

4 に答える 4

1

データに単一のアポストロフィ'を追加します。多くの場合、これはセル形式をテキストに設定するよりも効果的です。

于 2012-10-02T19:05:59.677 に答える
0

次のように、セルをテキストとしてフォーマットし、.AutoFitセルを展開してすべてのセルコンテンツを表示することができます。

Columns("A:A").EntireColumn.AutoFit

これにより、A:Aセルが展開され、そのすべてのコンテンツが表示されます。

于 2012-10-02T17:22:25.840 に答える
0

#.000の代わりにを使用してフォーマットしてみ#.###てください。ただし、Excelの精度が低下している場合は、値に10 ^ 20を掛けてから、SQL側で10^20で割ってみてください。

詳細情報が見つかりました: ここ

Excelは15桁の精度に制限されているようですが、10 ^ 20を掛けても精度は上がりません。そのため、テキストのように扱うか、残りの桁を別の列に分割して、SSISまたはSQLと組み合わせることができます。

于 2012-10-02T18:14:37.017 に答える
0

接続文字列にIMEX=1を追加しましたか?これにより、SSISが最初の数行からデータを把握しようとするのを防ぎます。

また、varchar(max)の代わりに10進データ型を使用するのはどうですか?

于 2012-10-02T18:51:48.370 に答える