次のような 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
ただし、データ テーブルでは、すべての列にt1
、t2
、および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))
ました。行の最大数がわからないため (つまり、t1
、t2
、t3
、などの数がわかりません)、行ラベルにもテキストが含まれる最後の行を見つける必要がありました。このリンクの数式を使用して、範囲内の最後の数字 (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を使用しています。