8/24/2022

Access。フィールド内の「カンマ」で区切られた文字列を数えたい【comma】

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関数を追加するなどで、対応することができます。