Access。フィールド内の「カンマ」で区切られた文字列を数えたい
<Access:Len関数+Replace関数>
フィールド内に「,(カンマ)」で区切られた複数のデータが入力されています。
フィールド内に何件のデータが入力されているのか把握したいのですが、どのようにしたらいいのでしょうか。
次のテーブルを例に確認していきます。
出張先フィールドには、「,(カンマ)」で区切られた文字列が入力されています。
2022/10/1は、「新宿,品川,秋葉原」と入力されているので、「3」と数えたいわけですね。
フィールドごとに、「,(カンマ)」の数が同じなれば、いいのですが、そういうわけにはいきません。
目視で、「,(カンマ)」を数えるというわけにも当然いきません。
「,(カンマ)」の数を数えることができればいいのですが、そのような関数はありませんし、「,(カンマ)」を残すということもできません。
次のようなアイディアで対応していくことにします。
すべてのフィールドをつかったクエリをつくります。
そして、演算フィールドを追加します。
出張先数: Len([出張先])-Len(Replace([出張先],",",""))+1
演算フィールドは長くなりますので、ズームとかをつかって設定するといいですね。
では、実行して、データシートビューに切り替えて確認してみます。
「,(カンマ)」で区切られた文字列数を算出することができていますね。
では、演算フィールドを説明していきます。
出張先数: Len([出張先])-Len(Replace([出張先],",",""))+1
Len([出張先])は、Len関数をつかって、フィールド内の文字数を数えています。
Len(Replace([出張先],",",""))のReplace([出張先],",","")で、「,(カンマ)」を空白に置換します。
その置換した文字数を数えて、全体の文字数から減算すれば、「,(カンマ)」の数を算出することができます。
「,(カンマ)」の数を算出できたわけですが、例えば「2」と算出された場合は、「文字,文字,文字」というパターンになっているわけですね。
文字数を数えるには「+1」しなければならないことがわかります。
そのため、演算フィールドの最後に「+1」を加えています。
今回は、フィールドが空欄の場合は考慮していませんが、IIF関数を追加するなどで、対応することができます。