Excel。表から必要な列だけを抽出したい
<CHOOSECOLS+XMATCH関数>
オートフィルターなどをつかうことで、データ(レコード)を抽出することは、Excelでは簡単におこなうことができます。
では、列を抽出したい場合には、どのようにしたらいいのでしょうか。
次の表を用意しました。
A1:F5までの表があります。
その中から、時限・月曜日・水曜日・木曜日の列だけの表をつくりたい。
要するに、抽出したいわけです。
少なければ、コピペで対応してもいいですが、列数が多い。またデータ内容が変わることもあれば、コピペというわけにはいきません。
そこで、CHOOSECOLS関数とXMATCH関数を組み合わすことで対応することができます。
その結果が、A8:D13の表です。
A9:D9に抽出したい見出しを先に用意します。
そして、数式をA10に設定します。
先に、ネストのXMATCH関数から確認します。
XMATCH関数は、MATCH関数の進化系の関数です。
データがあれば、その位置を教えてくれる関数です。
XMATCH関数の最初の引数は「検索値」
A9:D9の見出し名が該当します。
2つ目の引数は、「検索範囲」。
先ほどの検索値のデータがどこにあるのかを調べさせるので、A1:F1を選択します。
どのようになっているのか、XMATCH関数の部分だけ確認してみましょう。
A8に
=XMATCH(A9:D9,A1:F1)
と数式を設定しました。時限は1列目に、水曜日は、4列目にあるということがわかりました。
XMATCH関数は、MATCH関数と異なり完全一致が初期設定になっています。
そのため、3つ目・4つ目の引数を設定しなくても大丈夫です。
ここまでで、XMATCH関数の動きは確認できましたのCHOOSECOLS関数の確認へとうつりましょう。
CHOOSECOLS関数は、配列から列を抽出する関数です。
配列は表なので、A2:F5が対象になります。見出しは用意してありますので、A2が始点です。
CHOOSECOLS関数の最初の引数は「配列」。A2:F5を範囲選択します。
2つ目以降の引数は、列番号を設定します。
XMATCH関数をつかうことで、列番号を求めることができますので、ここにXMATCH関数を設定します。
数式を設定して確認してみましょう。
スピル機能に対応した関数なので、ゴーストが発生して、数式をコピーしたような状態になるので、列単位での抽出ができました。
ところが、気になるところがあります。それは、D10の0。
なんで、0(ゼロ)が表示されているのかというと、元のセルは、E2なのですが、空白になっています。表引きすると空白ではなくて、0を表示してしまいます。
0ではなく空白にしたいので、「&””」を数式に追加することで、0を消すことができます。
改めてですが、A10に設定する数式は、
=CHOOSECOLS(A2:F5,XMATCH(A9:D9,A1:F1))&""
これで、列単位での抽出ができました。




















![都道府県: Left([住所],((Mid([住所],4,1)="県")*-1)+3) 都道府県: Left([住所],((Mid([住所],4,1)="県")*-1)+3)](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzyi3zSoqLPleRh_uV3XXAMWm7wXff3SdxqHRitZizgvH__9U7Y3R6riztZYJ2iZCXEjz3pS7hyphenhyphenWdgFx_G3SPyOOp-sjt4ma3qNDW3Vk53Kja5Mt0kvUEwK9Ml0g6jjeXNjCQ5PKmYr-Wm2_OpwNpux7cXJbg-HhVAIRSYcB_2UohI3fxxK82u-4LbAG4/w400-h226/008.jpg)
