参考例:αチームとβチームのリストがあって、○×表とか作りたい
- 左の表から右の表の○を表示させたい!というのがゴール
- 今回の図は見やすいように、空白を作っていますが、実際のデータだと空白がないのが普通
- 今回はαチーム、βチームの2種類しかないけど、これがだんだん増えてくると億劫
といったようなことが考えられるので、なんとか自動で右の図のように○を埋められないかなと画策する。
結果
セル色の説明
- 青色:変数。
- 薄緑色:関数で出しているセル
関数と説明
今回は2種類の関数を使って出しています。
3行目のB3
=SUBSTITUTE(ADDRESS(1,MATCH(B4,INDIRECT(B$1&"!"&B$2&":"&B$2),0),4),1,"")
- Sheet1の「αチーム」がどの列なのかを割り出してます
- 使ってる変数
- B4 特定したいカラムの文字列
- B1 対象となるシート名
- B2 対象となる行
- Sheet1の1行目で「αチーム」が何番目かを調べます
- MATCH関数で、上で指定した行の中でどの列にあたるかを割り出します
- SUBSTITUTE/ADDRESS関数で、数字からアルファベットに変換してます
- Ctr+RしてもOK
5行目のB5
=IFERROR(IF(MATCH($A5,INDIRECT(B$1&"!"&B$3&":"&B$3),0)>0,"○",""),"")
- 上で割り出した列の中に同じ名前が存在するかを割り出してます
- 変数
- A5 検索したい文字列
- B1 検索の対象となるシート名
- B3 検索の対象となる列
- MATCH関数で名前(ここだとA列)と完全一致する行を割り出します
- 数字があるなら存在するということで、IF関数で0より大きかったら"○"とします
- 存在しない場合は#N/Aなので、IFERRORで空白表示処理をします
- Ctr+RしてもOK
- Ctr+DしてもOK
- 応用
- シートが同じなので省略したい
- INDIRECT関数内「B$1&"!"&」を削除
- 列番号を直接指定したい
- 3行目の英数字に直接入力する
- シートが同じなので省略したい