ACCESSのデータで、数値型として扱いたいのに文字列になってしまっている、というケースはないでしょうか。
表示するだけならデータ型はどちらでも問題ないのですが、計算をしようとすると文字列型では対応できません。
今回は、文字列を数値型に変換する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
文字列を数値に変換するVal関数
文字列型のデータを数値に変換するには、Val関数を利用します。
Val関数は以下の構文で利用します。
Val ( 文字列 )
文字列には、数値に変換できる文字を指定してください。
Val関数の利用例
Val関数の利用例をいくつか記載します。
| 数式 | 説明 | 結果 |
|---|---|---|
| Val ( ”100” ) | 数値に見えるテキスト型データを変換 | 100 |
| Val ( ”100年後” ) | 数値を含むテキスト型データを変換 | 100 |
| Val ( ”” ) | 空白を変換 | 0 |
| Val ( “100” ) | 全角の数値を変換 | 0 |
上記のように、指定した文字列の中から数値として認識できるものを出力します。
空白を指定すると0が戻されることと、全角文字では数値変換されないことに注意しましょう。
クエリでの利用
クエリでVal関数を利用して文字列を数値に変換する方法をご紹介します。
クエリでは、デザインビューでVal関数を利用します。
クエリをデザインビューで新規作成しましょう。

クエリのデザインビューで上段部分(フィールドリスト)に対象のテーブルをドラッグアンドドロップします。
そして、フィールドリストにおいたテーブルのフィールドから変換する対象のフィールドを下段のデザイングリッドへドラッグアンドドロップします。
今回は、「test_Val」というテーブルを作成し、その中の「値」フィールドをクエリで変換するようにしました。

そして、クエリの新しいフィールドを追加します。
フィールド行に下記のように記述しましょう。
変換後: Val([値])
クエリでは、自分で計算式を書いて新しい列を追加することが可能です。
この際、「:」より左側の部分はフィールド名を表します。
今回は「変換後」としました。
そして、「:」より右の部分は計算式です。
Val関数を使って「値」を数値変換させています。
では、データシートビューで結果を見てみましょう。

このように、右側に列が追加されて変換後の値が表示されました。
左側の「値」フィールドでは入力値が左寄せになっていますよね。
これはテキストデータなので標準で左寄せ表示されているのです。
一方、今回追加した変換後フィールドでは右寄せになっています。
ここから数値データに変換されていることが分かります。
クエリではこのようにVal関数を使って文字列を数値に変換できます。
しかし、値に空白が入った場合はどうでしょうか。

このように、3レコード目は変換後の値がエラーになってしまいます。
これは、元の「値」に入っているのが空白ではなくNullだからです。Nullに対してVal関数を利用するとエラーになってしまいます。
こうした事態を避けるために、Valを利用する前にNz関数を使ってNullを0に変換しましょう。
Nz関数はNullを0に置換してくれる関数です。
クエリを以下のように修正します。

変換後: Val(Nz([値]))
Nz関数が間に入っていることがわかります。
では、結果を見てみましょう。

今回は3レコード目もエラーではなく0になりましたね。
Valを利用する場合は、このように想定外のNullが入っても対処できるようにケアしておきましょう。
VBAでの利用
次に、VBAでの利用方法をご紹介します。
今回は、テキストボックスに入力した値を、文字列から数値に変換してメッセージ表示する機能を作成しました。

テキストに文字を入力して変換ボタンを押すと、メッセージボックスに数値が表示されます。
こちらの作成方法を見ていきましょう。
まずは、フォームを作成します。
フォームをデザインビューで作成していきましょう。

今回作成したフォームはデザインビューでは下記のようになっています。

中央に置いてあるのは非連結のテキストボックスです。
非連結とは、特定のテーブルと連携しておらず入力した値がフォームに表示されるのみで、フォームを閉じれば値がクリアされるという状態です。
そして、その下に変換ボタンを配置しています。
変換ボタンのプロパティシートでは、クリック時イベントとしてイベントプロシージャを設定してあります。

このイベントプロシージャの中身を見ていきましょう。
プロパティシートのクリック時イベントの一番右の「…」ボタンを押すと、VBEが起動します。
VBEでは以下のプロシージャを設定します。
Private Sub 変換_ボタン_Click()
MsgBox Val(Nz(Me!テキスト))
End Sub
Val関数を使って、Me!テキストという非連結のテキストボックスの名称を指定しています。
こうすることで、テキストボックスに入力された値を、Val関数で数値に変換してメッセージボックスで表示することが可能です。
また、こちらもNz関数でNullによるエラーを回避しています。
以上、文字列を数値型に変換する方法をご紹介しました。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
