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でデータを管理するなら、きれいなデータを保つことがとっても大切。
これらの関数を積極的に使って、快適なデータベース環境を作っていきましょう!
広告
