Microsoft Excel VBA でテキストを数値に変換する

Bilal Shahid 2024年2月15日
  1. VBA でテキストを数値に変換する
  2. 方法 1: .NumberFormatGeneral に変更する
  3. 方法 2: CSng() 関数を使用する
  4. 方法 3: セルの値に 1 を掛ける
  5. まとめ
Microsoft Excel VBA でテキストを数値に変換する

VBA は、さまざまな機能をユーザーに提供する Microsoft Excel アプリケーション用のプログラミング言語です。 この記事では、テキスト データを数値形式に変換するさまざまな方法について学習します。

VBA でテキストを数値に変換する

Excel データに算術式を適用したいが、適用できない場合があります。

これは、数値がテキスト形式で保存される可能性があるためです。 この記事には、この問題の解決策があります。

CStr() 関数を使用するだけで数値をテキストに変換する方法を知っています。 ただし、逆のこと、つまりテキストを数値形式に変換したい場合は、VBA を使用して複数の方法で行うことができます。

この記事では、さまざまな変換方法といくつかの例を見て、これらの方法がどのように機能するかを理解します。

方法 1: .NumberFormatGeneral に変更する

最初の方法では、範囲を指定してセルを選択し、データ形式を Text から General に変更してから、数値の値を設定します。

その一般的なコードは次のとおりです。

[X:Y].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With

ここで、X:Y はセルの範囲を表します。 MS Excel では、GeneralCurrencyAccountingText など、さまざまな数値形式を使用できます。

General 形式では、入力されたとおりの番号が保持されます。

たとえば、2222 のまま、または 10.0210.02 のままになります。 .Value = .Value ステートメントは、セルの値を取得して設定します。これは数値形式になりました。

その結果、選択した範囲のデータは、テキストから変換された数値形式になります。 このメソッドの使用法をさらに明確にする例を見てみましょう。

最初に Excel シートに次のサンプル データがあるとします。

サンプルデータ

テキストのデータを数値形式に変換するコードは次のとおりです。

Sub method1()
[A1:A7].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With
End Sub

出力:

NumberFormat を一般に変更

この例では、テキスト形式で 1-7 の数字がありました。 上記の VBA コードを実行した後、データはテキスト形式から数値形式に変更されました。

方法 2: CSng() 関数を使用する

2 番目の方法では、値がテキストとして書式設定されている場合でも、シート内のすべての数値を検索できます。 次に、CSng() 関数を使用して、このデータを単一の (共通の) データ型に変換します。

このメソッドの一般的なコードは次のとおりです。

For Each r In Sheets("SheetName").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next

ここで、Sheets("SheetName").UsedRange は、使用中のすべてのセルをシートから選択します。 SheetName は Excel シートの名前です。

関数 IsNumeric() は、数値として評価できるデータを識別します。 これはブール型の関数で、True または False を返します。

コードは各セルを 1つずつチェックし、数値として評価できるデータが検出された場合、そのデータ型は最初に単一 (共通) データ型に設定され、次に 0.00 形式に設定されます。 これは、データを含む (数値として評価できる) すべてのセルが、0.00 形式の共通のデータ型を持つことを意味します。

したがって、データは数値形式に変換されました。 例を使用してコードがどのように機能するかを見てみましょう。

前の例で使用したものと同じサンプル データを使用します。

サンプルデータ

CSng() 関数を使用してテキストを数値に変換するコードは次のとおりです。

Sub method2()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next
End Sub

出力:

CSng関数を使う

この例では、IsNumeric() 関数は、データを数値として評価できるすべてのセルを識別し、それらのセル (A1 から A7 までの範囲) に共通の型、つまり形式 0.00 を割り当てます。 または数値形式。

方法 3: セルの値に 1 を掛ける

このメソッドは単なる回避策であり、テキストを数値形式に変換するショートカット トリックを提供します。 このメソッドで行う必要があるタスクは単純です。セル内の各値に 1 を掛けます。

これにより、データの実際の値を変更せずにテキスト データが数値形式に変換されます。これは、1 を掛けても数値的に変化がなく、データ形式が数学演算により暗黙的に数値に変更されるためです。

次のサンプル データがあります。

サンプルデータ

1 を掛けてテキストを数値に変換するコードは次のとおりです。

Sub method4()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = r.Value * 1
End If
Next
End Sub

まとめ

数値をテキスト形式から数値形式に変換してデータに算術演算を適用できるように、あるデータ型から別のデータ型への変換は便利です。

この記事では、TextNumber に変換するさまざまな方法について説明しました。 また、概念を明確にし、メソッドがどのように機能するかを理解するために、さまざまな例についても説明しました。

この概念を理解していただければ幸いです。 学び続けます!

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub