031

この記事では、テーブルから一致するすべての値を取得し、それらを異なるセルで取得する方法について説明します。これは、複数の値を検索するのと似ています。

一般式

{=INDEX(names,SMALL(IF(groups=group_name,ROW(names)-MIN(ROW(names))+1),COLUMNS(expanding ranges))), “--List Ends--”)}

関数と変数が多すぎます!!!。これらの変数が何であるかを見てみましょう。

名前:これは名前のリストです。

グループ:これらの名前も属するグループのリスト。

Group_name:グループ名の参照。

link:/ excel-range-name-expanding-references-in-excel [Expanding ranges]:これは、右にコピーしたときに増加する数値を取得するために使用される拡張範囲です。

例:会社に応じて異なる列に従業員の名前を抽出します。

030

会社ごとにグループ化された従業員のテーブルがあるとします。最初の列には従業員の名前が含まれ、2番目の列には会社の名前が含まれます。

次に、会社に応じて各従業員の名前を異なる列に入力する必要があります。つまり、グループ化を解除する必要があります。

ここでは、式が読みやすいように、A2:A10を従業員、B2:B10を会社と名付けました。

この配列式をF2で記述します。 CTRL + SHIFT + ENTERを使用してこの数式を入力します。

{=INDEX(Employee,SMALL(IF(Company=$E2,ROW(Employee)-MIN(ROW(Employee))+1),COLUMNS($E$1:E1))), “--List Ends--”)}

この数式をすべてのセルにコピーします。グループに応じて、異なる列の個々の名前を抽出します。

031

上の画像でわかるように、各従業員は異なるセルに分離されています。

では、この式はどのように機能しますか?

式を理解するために、G2の式を見てみましょう。これは= IFERROR(INDEX(Employee、SMALL(IF(Company = $ E3、ROW(Employee)-MIN(ROW(Employee))+ 1)、COLUMNS($ E $ 1:F2)))、 “-リストの終わり-“)

仕組みは単純で、 `link:/ lookup-formulas-vlookup-multiple-values [multipleVLOOKUPformula]`とほぼ同じです。秘訣は、さまざまなグループから各従業員のインデックス番号を取得し、それをINDEX式に渡すことです。これは、式のこの部分によって行われます。

IF(Company = $ E3、 link:/ lookup-and-reference-excel-row-function [ROW](Employee)-MIN( `link:/ lookup-and-reference-excel-row-function [ROW] `(従業員*))+ 1):

この部分は、「Rankwatch」を含む$ E3の会社名に対してインデックスとfalseの配列を返します。

\ {FALSE; 2; FALSE; 4; FALSE; FALSE; 7; FALSE; 9}。

どうやって?内側から分解しましょう。

ここでは、$ E3の会社名を、Company範囲(Company = $ E3)の各値と照合します。

これにより、trueとfalseの配列が返されます。\ {FALSE; TRUE; FALSE; TRUE; FALSE; FALSE; TRUE; FALSE; TRUE}。

これで、IF関数はTRUEのTRUEステートメントを実行します。これは link:/ lookup-and-reference-excel-row-function [ROW](Employee)-MIN( `link:/ lookup-and-reference-excel- row-function [ROW] `(Employee))+ 1。

この部分は、1から従業員数\ {1; 2; 3; 4; 5; 6; 7; 8; 9}までのインデックスの配列を返します。 if関数はTRUEのみの値を取得し、\ {FALSE; 2; FALSE; 4; FALSE; FALSE; 7; FALSE; 9}を返します。

現在の式は、= IFERROR(INDEX(Employee、SMALL(\ {FALSE; 2; FALSE; 4; FALSE; FALSE; 7; FALSE; 9}、COLUMNS($ E $ 1:F2)))、 “-に簡略化されています。リストの終わり-“)。私たちが知っているように、小さな関数は配列からn番目に小さい値を返します。 COLUMNS($ E $ 1:F2)これは2を返します。SMALL関数は、上記の配列から2番目に小さい値である4を返します。

これで、式が簡略化されました= IFERROR(INDEX(Employee、4)、 “-List Ends–“)。これで、INDEX関数はemployee配列から4番目の名前を返すだけで、「Sam」が返されます。

そうですね、これは、 link:/ excel-range-name-expanding-references-in-excel [INDEX]link:/ statistics-formulas-excel-small-function [SMALL]を使用して、異なる列のグループから名前を抽出する方法です。 ] `、 link:/ lookup-and-reference-excel-row-function [ROW] `、COLUMNSおよびIF関数。この機能について疑問がある場合、または機能していない場合は、以下のコメントセクションにお知らせください。

ファイルのダウンロード: