次のようなシートがあります -
A | B | C
----------------------
2 | Okay | 0
3 | Not okay | 0
セルC3
には緑色のエラー ポインターがあり、「このセル内の数値はテキストとして書式設定されているか、先頭にアポストロフィが付いています」と表示され、もちろん左揃えになっています。
C2
セルとの両方に書式を表示するとC3
、両方とも「標準」として表示されます。
VBA を使用して「NumberFormat」を調べると、両方とも「General」として表示されます。
ちなみに私はOffice 2010を使用しています。
VBA コードを使用して書式をテキストから一般に変更することでこれを整理したいのですが (これは多数のワークシートの数十のセルに発生します)、問題のセルが既に一般として書式設定されていると判断された場合、これをどのように実行できますか?
答え1
これは、相手側で数値が不適切にエンコードされたために、Excel が数値がテキストとして保存されていると判断した場合 (数値形式を数値に変更しても、実際にはテキストとして保存されていないと判断された場合) に発生することがあります。
テキストとして保存された数値に対する非常に単純な修正方法は、数値を数値に変換する数式を含む列を追加することです。
=$C2*1
これを下にドラッグして参照します。ライブ接続されたテーブルで作業している場合、この列をテーブルの末尾に配置すると、数式の範囲がデータ範囲に合わせて拡張されます。
もちろん、VBA を使用すると、列内の各値をこの数式の結果に置き換えながらデータを処理するループを実行できます。
答え2
ここに、目的を達成するための VBA スニペットを示します。
Sub FixTextFormattedNumbers()
Dim s As Worksheet, r As Range
'Set target sheet and range
Set s = Sheets("Sheet1")
Set r = s.Range("A1:A10")
For Each c In r
On Error Resume Next
c.Value = CDbl(c.Value)
Next c
End Sub
エラー処理は、指定された範囲内に実際のテキストがある場合にだけ行われます。
答え3
これは、データをコピーして貼り付けたり、インポートしたりするときによく発生します。列全体が対象である場合、修正する最善の方法は、基本的に、Excel の想定するデータの種類をより細かく制御しながら、列を再インポートすることです。
これを行う方法は次のとおりです。
この問題のある列を強調表示する
選択
Data
->Text To Columns
クリック
Finish
(この場合、デフォルトは区切り文字->タブ->一般(フォーマット)です)。逆の操作(数値を再インポートしてテキストとして扱う)が必要な場合は、3番目のオプションをテキストに変更します。