2024年12月2日【ID:0】
【Excel】空白演算子でマトリックス表から値抽出
あまり知られていませんが、Excelには空白(半角スペース)の演算子が存在します。
この空白演算子を活用することで、以下のようなマトリックス表から指定した位置の値を簡単に抽出することができます。
今回は、空白演算子を活用して、マトリックス表から指定した位置の値を抽出する方法について解説していきます。
空白演算子とは
まずは、『空白演算子』について簡単に解説していきます。
空白演算子とは、複数の範囲を空白(半角スペース)で区切ることによって、それぞれの範囲で重なっているセルを参照するというものです。
例えば、以下のように活用します。
=B5:E5 D3:D7
この演算子を活用して、空白(半角スペース)の前後の範囲を自由に変更することが出来れば、交差する位置の値を自由に変更して抽出することができるようになります。
マトリックス表から値抽出
次に、空白演算子を活用して、マトリックス表から値を抽出する方法について解説していきます。
今回は、以下の担当とタスクのマトリックス表から、指定した担当とタスクが交差する位置の値を抽出していきます。
実現するためには、「指定した担当」、「指定したタスク」から、マトリックス表の範囲を判断する必要があります。
そのため、こちらでは、それぞれの範囲に名前を定義していきます。
名前の定義
まずは、縦向きの範囲に担当の名前を割り当てます。
その際は、担当の名前を含むデータの範囲を選択し、[数式]タブから[選択範囲から作成]を選択し、選択範囲の上の担当の名前を、それぞれの縦向きの範囲の名前として設定したいため、[上端行]を選択し、確定します。
これだけで、それぞれの範囲に担当の名前を設定することができます。
タスクに関しても同様に、タスクの名前を含むデータの範囲を選択し、[数式]タブから[選択範囲から作成]を選択し、選択範囲の左側のタスクの名前を、それぞれの横向きの範囲の名前として設定したいため、[左端行]を選択し、確定します。
設定した名前は、[名前の管理]から確認することができます。
稀に指定した名前に「_」などの文字が加えられる可能性もあるので、どのような名前で登録されたのかを確認します。
名前を活用して値抽出
では、名前を活用して値を抽出していきます。
試しに、設定した担当の名前とタスクの名前を活用して、交差する値を抽出してみると、以下のようになります。
=斎藤 タスク1
後は、数式内の名前が、セルC10とD10に指定した名前になれば、自由に抽出位置を変更することができるようになります。
ただ、以下のように直接参照しても、上手く抽出することができません。
=C10 D10
上記の例だと、単純にセルC10とD10の交差する位置を取得しようとし、1つも交差していないため、エラーになってしまっています。
今回実現したい内容は、セルC10とD10自体ではなく、それぞれのセルの中の名前を活用して抽出する必要があります。
そのような際は、それぞれを『INDIRECT関数』で囲むことで実現できます。
実際に、INDIRECT関数を活用した場合は、以下のような数式になります。
=INDIRECT(C10) INDIRECT(D10)
補足
今回解説した例のように、担当とタスクの名前をそのまま設定できた場合は、INDIRECT関数で囲むだけでよいのですが、万が一、「_」などが加えられた場合は、「_」などを加えた名前で参照する必要があります。
その際は、以下のように「&」などで文字を結合して実現します。
=INDIRECT(C10) INDIRECT(D10&"_")
// タスクの名前(No1など)に「No1_」などと「_」が加えられた場合の例です