http://q.hatena.ne.jp/1264659728
Book1にシート1、シート2があります。下記のようにシート1にデータが存在します。
A1=01,B1=02,C1=03,D1=04,E1=05
A5=ABC,B5=DEF,C5=GHI,D5=JKL,E5=MNO
これらは対になっています。つまり、A1=01とA5=ABCは対になっています。
A6=06,B6=07,C6=08,D6=09,E6=10
A11=あいう,B11=かきく,C11=たちつ,D11=なにぬ,E11=はひふ
とデータがあります。これもA6とA11は対です。こういったルールで、A100までデータがあります。
シート2のC列には、縦方向に、つまりC1=04,C2=01,C3=01,C4=05.....といった具合にデータがあります。
シート2のD列に式をいれてデータを引っ張ってきたいです。
例えばシート1のE1の値でシート2のC列を検索します。データがあれば、シート1のE5の値をシート2のD列に表示します。この例では、D5にMNOが表示されるという仕様にしたいです。このような事が
実現できる関数をお教えください。vlookup,hlookupではできないと思います。
ご質問のsheet1にあるデータ何ですが1単位のデータ長が一定でないのでしょうか?
A1~A5 の5列が1対
A6~A11 の6列が1対
のようになっていますが、もし
A1~A5 の5列が1対
A6~A10 の5列が1対
の様にデータ系列が一定のものであるならば以下のような方法で検索が可能だと思います。
データ系列が一定でないと言う前提のご質問であればポイントなしで結構です。
<sheet1のデータ系列が一定の場合>
①sheet1の横並びのデータ系列を立て並びの連続データに置き換えるために
新たにsheet3に並べ替え関数を書きます。
・sheet3のA1からB5に以下の関数を設定して、
・A1からB1までをマウスで選択状態にします。
・選択範囲の右下をマウスでつかみ100行目まで引っ張ってオートフィルします。
・sheet1のデータが立てならびに変換されます。
A B
1 =Sheet1!A1 =Sheet1!A5
2 =Sheet1!B1 =Sheet1!B5
3 =Sheet1!C1 =Sheet1!C5
4 =Sheet1!D1 =Sheet1!D5
5 =Sheet1!E1 =Sheet1!E5
②sheet2の D1 に下記の関数を設定します。
=VLOOKUP(C1,Sheet3!$A$1:$B$18,2)
③sheet2のC列のデータ列の下端の行まで②の式をオートフィルします。
これで、参照検索できますが、VLOOKUP関数ですのでsheet1の「01,02...」という
検索対象が昇順で並んでいる必要があります。
この対策としては、sheet3 の縦並びデータを「データ-並び替え」でA列に対して昇順に並び替えることで対処できます。
ご質問のsheet1にあるデータ何ですが1単位のデータ長が一定でないのでしょうか?
A1~A5 の5列が1対
A6~A11 の6列が1対
のようになっていますが、もし
A1~A5 の5列が1対
A6~A10 の5列が1対
の様にデータ系列が一定のものであるならば以下のような方法で検索が可能だと思います。
データ系列が一定でないと言う前提のご質問であればポイントなしで結構です。
<sheet1のデータ系列が一定の場合>
①sheet1の横並びのデータ系列を立て並びの連続データに置き換えるために
新たにsheet3に並べ替え関数を書きます。
・sheet3のA1からB5に以下の関数を設定して、
・A1からB1までをマウスで選択状態にします。
・選択範囲の右下をマウスでつかみ100行目まで引っ張ってオートフィルします。
・sheet1のデータが立てならびに変換されます。
A B
1 =Sheet1!A1 =Sheet1!A5
2 =Sheet1!B1 =Sheet1!B5
3 =Sheet1!C1 =Sheet1!C5
4 =Sheet1!D1 =Sheet1!D5
5 =Sheet1!E1 =Sheet1!E5
②sheet2の D1 に下記の関数を設定します。
=VLOOKUP(C1,Sheet3!$A$1:$B$18,2)
③sheet2のC列のデータ列の下端の行まで②の式をオートフィルします。
これで、参照検索できますが、VLOOKUP関数ですのでsheet1の「01,02...」という
検索対象が昇順で並んでいる必要があります。
この対策としては、sheet3 の縦並びデータを「データ-並び替え」でA列に対して昇順に並び替えることで対処できます。
ご回答ありがとうございます。大変参考になりました!
少々無駄があるかもしれません。
前提条件は、1行目から96行目までの数字が昇順でなければならないということです。
=HLOOKUP(C1,INDEX(Sheet1!A1:E100,VLOOKUP(C1,Sheet1!A1:C100,3,TRUE)-2,1):INDEX(Sheet1!A1:E100,VLOOKUP(C1,Sheet1!A1:C100,3,TRUE)-2+4,5),5)
ご回答ありがとうございます。大変参考になりました!
ご回答ありがとうございます。大変参考になりました!