Microsoft Excel VBA でテキストを数値に変換する
VBA は、さまざまな機能をユーザーに提供する Microsoft Excel アプリケーション用のプログラミング言語です。 この記事では、テキスト データを数値形式に変換するさまざまな方法について学習します。
VBA でテキストを数値に変換する
Excel データに算術式を適用したいが、適用できない場合があります。
これは、数値がテキスト形式で保存される可能性があるためです。 この記事には、この問題の解決策があります。
CStr()
関数を使用するだけで数値をテキストに変換する方法を知っています。 ただし、逆のこと、つまりテキストを数値形式に変換したい場合は、VBA を使用して複数の方法で行うことができます。
この記事では、さまざまな変換方法といくつかの例を見て、これらの方法がどのように機能するかを理解します。
方法 1: .NumberFormat
を General
に変更する
最初の方法では、範囲を指定してセルを選択し、データ形式を Text
から General
に変更してから、数値の値を設定します。
その一般的なコードは次のとおりです。
[X:Y].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With
ここで、X:Y
はセルの範囲を表します。 MS Excel では、General
、Currency
、Accounting
、Text
など、さまざまな数値形式を使用できます。
General
形式では、入力されたとおりの番号が保持されます。
たとえば、22
は 22
のまま、または 10.02
は 10.02
のままになります。 .Value = .Value
ステートメントは、セルの値を取得して設定します。これは数値形式になりました。
その結果、選択した範囲のデータは、テキストから変換された数値形式になります。 このメソッドの使用法をさらに明確にする例を見てみましょう。
最初に Excel シートに次のサンプル データがあるとします。
テキストのデータを数値形式に変換するコードは次のとおりです。
Sub method1()
[A1:A7].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With
End Sub
出力:
この例では、テキスト形式で 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
出力:
この例では、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
まとめ
数値をテキスト形式から数値形式に変換してデータに算術演算を適用できるように、あるデータ型から別のデータ型への変換は便利です。
この記事では、Text
を Number
に変換するさまざまな方法について説明しました。 また、概念を明確にし、メソッドがどのように機能するかを理解するために、さまざまな例についても説明しました。
この概念を理解していただければ幸いです。 学び続けます!
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