Accessの文字列操作関数をお探しですね。

広告

Accessの文字列操作関数完全ガイド|切り出し・結合・置換・文字数カウント

Accessでデータベースを使っていると、「取り込んだデータがバラバラで困る…」なんてこと、よくありますよね。

たとえば「山田太郎」という氏名を「山田」と「太郎」に分けたいとか、住所から都道府県だけ取り出したいとか、電話番号の「-(ハイフン)」を消したいとか。

こういった作業、実はAccessの標準機能だけで簡単に解決できるんです。

この記事では、クエリやVBAでよく使う文字列操作の関数を、実際の使い方と一緒にわかりやすく紹介していきます。

文字列を思い通りに切り出す基本関数(Left, Right, Mid)

データを加工するときに一番よく使うのが、文字列の一部だけを取り出す「切り出し」という操作です。

Accessには、どこから取り出すかによって使い分ける3つの便利な関数が用意されています。

まず覚えておきたいのが、**Left関数**と**Right関数**です。

Left関数は文字列の左側(先頭)から、Right関数は右側(末尾)から、指定した文字数だけを取り出してくれます。

たとえば、郵便番号が「123-4567」となっているとき、最初の3桁だけを取り出したいなら `Left([郵便番号], 3)` と書けばOK。

逆に、後ろの4桁が欲しいときは `Right([郵便番号], 4)` です。

商品コードや郵便番号みたいに桁数が決まっているデータなら、この2つだけでほとんど対応できます。

次は**Mid関数**です。

これは文字列の途中から取り出したいときに使います。

たとえば「ABC-99-XYZ」というデータから真ん中の「99」だけを取り出したい場合、`Mid([商品ID], 5, 2)` と書きます。

5文字目から2文字分という意味ですね(位置は1から数えます)。

ちなみに、最後の「文字数」を書かないと、指定した位置から最後までぜんぶ取り出してくれます。

「最初の3文字はいらないから、4文字目以降全部ほしい」なんてときに便利です。

データの結合と不要な空白の除去テクニック(&, Trim)

複数の項目をくっつけたり、余計なスペースを消したりする作業も、データベースをきれいに保つためには欠かせません。

Accessで文字列をつなげるときは、**&(アンパサンド)**という記号を使います。

「姓」と「名」をくっつけて「氏名」を作りたいなら、`[姓] & [名]` と書くだけです。

ここで注意したいのが、**+(プラス)との違い**です。

実は `+` でも文字列をつなげられるんですが、データが「Null(何も入っていない状態)」のときの動きが違います。

`&` を使えば、片方がNullでももう片方はちゃんと表示されますが、`+` だと結果全体がNullになってしまうんです。

住所の「ビル名」みたいに、空欄になることがある項目を扱うときは、必ず `&` を使うようにしましょう。

もう一つ、外部から取り込んだデータによくあるのが、**見えないスペースが混ざっている**問題です。

これがあると検索がうまくいかなかったり、つなげたときに変な隙間ができたりします。

そんなときに使うのが**Trim関数**です。

`Trim([フィールド名])` と書くだけで、文字列の前後にある余計なスペース(半角も全角も)をきれいに削除してくれます。

先頭だけ消したいなら「LTrim」、末尾だけなら「RTrim」もありますが、基本的にはTrimを使っておけば安心です。

特に、ユーザーが手入力するフォームのデータは、保存する前にTrimをかけておくとデータの品質がグッと上がります。

特定文字の検索と文字数カウントでデータを分析する(InStr, Len)

さて、ここからが少し応用編です。

「山田 太郎」みたいに、スペースの位置が人によって違う氏名データから「姓」だけを取り出したい…そんなときはどうすればいいでしょう?

そこで登場するのが**InStr関数**です。

これは「指定した文字が何文字目にあるか」を教えてくれる関数です。

たとえば `InStr([氏名], ” “)` と書くと、スペースが何文字目にあるかを数字で返してくれます。

「山田 太郎」なら、スペースは3文字目なので答えは `3` です。

この関数の本当の力は、さっき紹介したLeft関数やMid関数と組み合わせたときに発揮されます。

「スペースの位置より左側を全部取り出す」というロジックを組めば、どんな長さの氏名でも姓だけを正確に抽出できるんです。

もう一つ覚えておきたいのが**Len関数**です。

これは文字列が何文字あるかを数えてくれます。

`Len([住所])` とすれば、その住所の文字数がわかります。

「10文字以上の住所だけを抽出したい」とか、「明らかに短すぎる入力ミスを見つけたい」といったときに使えます。

InStr関数とLen関数、そしてRight関数などを組み合わせると、「メールアドレスの@より後ろだけを取り出す」みたいな複雑な操作もできるようになります。

パズルのピースを組み合わせるような感覚ですね。

文字列の置換・変換と表記ゆれの統一(Replace, StrConv)

最後に、データの中の余計な文字を消したり、全角・半角の表記ゆれを統一したりする関数を紹介します。

これらは見た目を整えるだけじゃなく、集計や検索の精度を上げるためにもとても大事です。

特定の文字を別の文字に変えるには**Replace関数**を使います。

よくある使い方は、電話番号のハイフンを消すこと。

`Replace([電話番号], “-“, “”)` と書けば、ハイフンが消えて数字だけになります。

「-」を「空っぽ」に置き換えているわけですね。

間違って入力された記号を消したり、特定の言葉を一括で変更したりするのにも便利です。

そしてデータ管理で一番厄介なのが、**全角・半角の混在**問題です。

「ABC」と「ABC」が別物として扱われて、集計がおかしくなる…なんて経験、ありませんか?

これを解決してくれるのが**StrConv関数**です。

この関数を使えば、指定した種類の文字変換を一気にやってくれます。

* **vbUpperCase (1)**: アルファベットを大文字に
* **vbLowerCase (2)**: アルファベットを小文字に
* **vbWide (4)**: 半角を全角に
* **vbNarrow (8)**: 全角を半角に
* **vbHiragana (32)**: カタカナをひらがなに
* **vbKatakana (64)**: ひらがなをカタカナに

使い方は `StrConv([フィールド名], 4)` みたいに、変換したい種類の番号を指定するだけです。

データをあらかじめ統一しておけば、「同じはずなのに検索でヒットしない」とか「集計が合わない」といったトラブルを防げます。

Accessでデータを管理するなら、きれいなデータを保つことがとっても大切。

これらの関数を積極的に使って、快適なデータベース環境を作っていきましょう!

広告