見出し画像

Access InStr関数の活用 1フィールドに、複数の値が入っていて値を集計した場合

1フィールドに複数の値が入っているテーブルの値の集計をしたい場合、選択クエリで Instr関数を使用して分けた後に集計選択クエリで集計をすることができます。

関数式はSwitch関数も組み合わせて以下のように記述します。

Switch(InStr([テーブル名]![フィールド名],値)>0,任意の値)

例えば、テーブルAのフィールド「値」に abcdeの5文字が様々な組み合わせで入っている表があるとします。

テーブルAにabcdeが何個ずつあるか知りたい時、値にaがあるならフィールドaに、値にbがあるならフィールドb に、値にcがあるならフィールドcに、値にdがあるならフィールドdに、値にeがあるならフィールドeに「1」を入れたクエリBを新たに作成し、クエリBから集計クエリCを作成します。

テーブルA

この時、InStr関数を以下のように記述したa,b,c,d,eのフィールドがある選択クエリを作成します。
a: Switch(InStr([テーブルA]![値],"a")>0,1)
b: Switch(InStr([テーブルA]![値],"b")>0,1)
c: Switch(InStr([テーブルA]![値],"c")>0,1) 
d: Switch(InStr([テーブルA]![値],"d")>0,1) 
e: Switch(InStr([テーブルA]![値],"e")>0,1)

クエリB(デザインビュー)
クエリB(データシートビュー)

クエリBを実行したら、上のようにデータシートビューで表せました。

テーブルAからabcdeの値の個数を振り分けた上のクエリBを使用し、集計クエリCを以下のように作成します。

集計クエリC(デザインビュー)
集計クエリC(データシートビュー)

上のようにデータシートビューで表すと、abcdeがテーブルAでそれぞれ何個書かれているか集計することができました。

SWITCH 関数は、(と呼ばれる) 1 つの値に対して値の一覧を評価し、最初に一致する値に対応する結果を返します。 いずれにも一致しない場合は、任意指定の既定値が返されます。

Microsoft サポート

InStr関数 文字列の中から指定した文字列が最初に見つかった位置をバリアント型 (内部処理型 Long の Variant) で返します。

Microsoft サポート

いいなと思ったら応援しよう!