Access VBAを介して文字列にアルファベット(非数値)文字が含まれているかどうかを確認する方法

今すぐ共有:

データベースにインポートする前に情報を「クリーンアップ」するのはごく一般的なことです。そもそもデータベースを使い始めた理由の一つは、設定した条件に基づいてデータベースを予測可能にクエリできるようにするためですよね?では、例えば、ある人が「$」と入力したのに、別の人がそれが金額だと認識しているファイルから情報をインポートしなければならない場合、あるいはもっと悪いことに、ある人が「am」や「pm」と入力したのに、別の人が24時間制を使用している場合など、外部の状況にどう対処すればよいでしょうか?いつものように、この問題に対処する方法はたくさんありますが、一つの方法は、文字列が単なる数字の羅列なのか、それとも「数字以外の文字」が含まれているのかを確認することです。VBAを使えば、このようなチェックは簡単です。この記事では、その簡単さを具体的にご紹介します。

なぜこれを行う必要があるのですか?

データ文字入力方法や抽出方法を制御できない情報をインポートする場合、この問題に何度も(何度も!)遭遇したことがあるでしょう。人々は統一された方法ではなく、自分にとって最も快適な方法で詳細を入力します。つまり、時間の問題で、 make インポートする前に均一にします。

この典型的な例は、データを数値フィールドにインポートする必要がある場合ですが、データを見ると、数千をコンマで区切っているもの、通貨記号を追加しているものがあり、他に何を知っているかがわかります。

注意の簡単な言葉!

データベースにクリーンアップされていないデータをインポートすると、かなり悲惨な結果になる可能性があります。せいぜいレポートが歪曲される可能性があり、最悪の場合、あらゆる種類のデータが破損する可能性があります。「ダーティ」なデータのインポートが理由にならないようにしてください。しようとしている アクセスの問題を修正 週末中!

アルファベット文字を「取り除く」方法

もちろん、手動で検索して置換することもできますが、時間がかかる可能性があり、何かを見逃す可能性があります(たとえば、ドル記号だけを検索している場合は、ユーロ記号やカンマ、スペースなどを見逃す可能性があります) 。 したがって、これを行う最も簡単で信頼性の高い方法は、以下のコードを使用してAccessにハードワークを実行させることです。

コードに…

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

コードの機能

VBAコードこの関数は非常にシンプルです。渡された文字列を1文字ずつループ処理するだけです。文字が数字であれば、それを一時的な文字列に追加し、処理が終わったらそれを「long」型に変換します。

あなたに合うようにコードを適応させる

ご覧のとおり、関数は「long」のデータ型を返します。整数や浮動小数点などを使用している場合は、それに応じて関数を変更して、データベースに適切な種類の値を返すようにします。

著者紹介:

Mitchell Pondは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 修理 SQL Server データベース と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。