0

次のような Excel データがあります。

      CHEVY_12       FORD_12        FORD_13        CHEVY_13
t1    462.0646058    5.507611655    887.4193417    197.1054415
t2    427.4865042    646.2186952                   685.0746363
t3    175.4137935                                  73.77079157

列はすべて混同されており、列ヘッダーは意味のある順序になっていません。

私の目標は、このテーブルのデータをテーブルに入れ、次のようにすることです。

<cell A1>  Chevy          Ford
2012       175.4137935     646.2186952
2013        73.77079157     887.4193417

ただし、データ テーブルでは、すべての列にt1t2、およびt3のデータがあるわけではないため、直線HLOOKUPは機能しません。基本的に、私が使用しようとしている手順には 4 つの部分があります (すべての式は、Chevy 2012 セルについて話していることを前提としていますが、詳細については添付のスクリーンショットを参照してください)。

  • データ テーブルで参照される列ヘッダーを作成します。結果テーブルの左端がセル A1 にあると仮定すると (図のように)、=CONCATENATE(UPPER(B$1), "_", MID($A2, 3, 2))最初のセル (Chevy、2012 年) などでこれを行いました。

  • 手順 1 で作成したヘッダーと一致するヘッダーを持つデータ テーブルの列を見つけます=MATCH(B3, $F$6:$I$6, 0)

  • 列ヘッダーに基づいて、各列にデータがある最後の行を見つけます。これに使い=MATCH(9E+307, OFFSET($E$6, 1, B9, MATCH(REPT("z", 255), $E$7:$E$9), 1))ました。行の最大数がわからないため (つまり、t1t2t3、などの数がわかりません)、行ラベルにもテキストが含まれる最後の行を見つける必要がありました。このリンクの数式を使用して、範囲内の最後の数字 ( MATCH(9E+307,range)) またはテキスト ( MATCH(REPT("z",255),range)) を見つけました。

  • 上記で作成したピースを使用してHLOOKUP、データ テーブルでファイナルを実行します。

最終的なスプレッドシートは次のとおりです。

スプレッドシート

データ テーブルはセルに配置され$E$6:$I$9、次のようになります。

データ表

このようなルックアップを実行する簡単な方法はありますか? これらすべての要素を次のように 1 つの式にまとめました (例の式は 2012 年の Chevy のデータを検索します)。

=HLOOKUP(CONCATENATE(UPPER(B$2), "_", MID($A3, 3, 2)), $F$6:$I$9, MATCH(9E+307, OFFSET($E$6, 1, MATCH(CONCATENATE(UPPER(B$2), "_", MID($A3, 3, 2)), $F$6:$I$6, 0), MATCH(REPT("z", 255), $E$7:$E$9), 1)) + 1)

しかし、明らかにそれは本当に厄介です。もっと簡単な方法があるかどうか疑問に思っています。(最後の例のように) 1 つの数式でこれを実行したいのですが、最後の数式は、連結を 2 回実行するなど、私が気に入らないことを行います)。エクセル2013を使用しています。

4

1 に答える 1