• ベストアンサー

Excelの関数(表の並べ替え?)

Excelの関数について質問します。 name address flower 01 aa bb cc 02 dd ee ff 03 aa ff bb 04 cc kk aa というような表から、似たような     flower   address   name 01 03 04 02 という表に落とし込みたいのです。 要するに並び替えだと思うのですが。 LOOKUPかINDEXあたりが使えるのかな? と思ったのですが、よく分かりません。 また、並び替えとはいえ同じタイトルが使われているので、出来れば間違い防止のためにタイトルを利用できたらと思います。 何か有効な方法はありませんでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.6

Sheet1   D  E    F    G 4   name address flower 5 01 aa  bb    cc 6 02 dd  ee    ff 7 03 aa  ff    bb 8 04 cc  kk    aa 元の表が上のように配置されていると仮定します。範囲 Sheet1!D4:G8 に名前 table を付けておけば、… Sheet2   I   J    K   L 10   flower address name 11 01 cc   bb    aa 12 03 bb   ff    aa 13 04 aa   kk    cc 14 02 ff   ee    d Sheet2 のセル J11 に次式を入力して、此れを右方および下方に複写すればOKかと。 =VLOOKUP($I11,table,MATCH(J$10,OFFSET(INDIRECT(CELL("address",table)),,,,4),0),FALSE) なお、元の表は Sheet1 の何処にあっても構いません。 また、“並べ替えた”表は Sheet2 の何処にあっても構わないけど、$I11 と J$10 は適宜変更してください。“並べ替えた”表は Sheet1 にあっても構いません。

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 いろいろ検証した結果、mike_gさんのが一番希望の結果が得られました。 詳しく詳細な説明ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

元の表からA列のデータを元に、列変更後にVLOOKUP関数で取ってくればすむ。両表で出現順序や有無が行番号が違う場合ですので。 第2表     第1表(元の表)において 第2列(B列)  第4列(flower) 4 第3列(C列)  第3列(address) 3 第4列(D列)  第2列(name) 2 の対応表メモを注意深く作成し、VLOOKUP関数の第3引数(何番目の劣か指定)に数字を書き込めばよい。 >出来れば間違い防止のために が上記がイヤというなら MATCH関数を使って第何列目に見出しfloorがあるか割り出せばよい。 何番目かの列数字で求まります。 =MATCH(B$1,Sheet1!$A$1:$D$1,0) 見出しが第1行目($A$1:$D1) にあるとして. =MATCH(B$1,Sheet1!$A$1:$D$1,0)

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 できれば、列数を入れたくなかったので… でも、これでMATCH関数が少し分かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

=A1で済むところを あえてお伺いになりたいと言うことは 向学を広げたいと望んでられるようお見受けました maron--5さん 12SAさん表をお借りします Sheet5!にmaron--5さんの表があり 12SAさんの表をSheet6!に置くものとします =OFFSET(Sheet5!$A$1,LOOKUP(1,{1},MATCH(Sheet6!$A2,Sheet5!$A$1:$A$5,0))-1,LOOKUP(1,{1},MATCH(Sheet6!B$1,Sheet5!$A$1:$D$1,0))-1,1,1) これ等如何でしょうか? 表題の名と項目No.を検索して読み出すべき値を判別し表示させています なのでこれらを如何様に並び替えてもちゃんとターゲットの値を表示してくれます もっとも今回はエラー処理まではしてませんので 項目No.や表題の名に揺らぎ(不一致)があった場合は読み出せなくなってしまいますが 因みに、検索はMATCH構文でやっているので OFFSET構文でなくとも 例えはINDIRECT構文やINDEX構文でも同様の機能が実現可能ですね また、上記式中でLOOKUP構文を使っていますが これはMATCT構文がなぜか配列数式で回答を返すので その配列数式の第1要素を取り出す と言うことをさせています

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 …これを、使いこなせれば、きっといいと思うのですが… すいません、私にはまだ少し荷が重いようです。 でも、これをきっかけにOFFSETを使いこなせるようになろうと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

頻度がそれほど多くなければ列単位のコピー&ペーストが一番簡単だとは思いますが… それはしたくないからのご質問と思います。 以下は元表と並べ替える表が別シートにあると仮定して回答します。 簡単なのは並べ替るシートのA2、B2、C2にそれぞれ  =Sheet1!C2  =Sheet1!B2  =Sheet1!A2 と入力して、下にコピーする方法です。エラー処理まで考慮すると  =IF(Sheet1!C2="","",Sheet1!C2) になるでしょう。 もし1行目のタイトルでマッチングしたいならA2に =INDIRECT("Sheet1!R"&ROW()&"C"&MATCH(A$1,Sheet1!$A$1:$IA$1,0),FALSE) と入力して、他のセルにコピーする手もあります。(これもエラー処理は省いています) でもこれらの式で表示したデータは「編集」→「形式を指定して貼り付け」→「値」で値に変換しないと並べ替えはできませんよ。その点はご承知おきください。

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 INDIRECT…がまだよく分からなく… 中に組み込まれている関数も少し私の手には負えないようで… でも、これらも分かるようにします! ありがとうございました。

すると、全ての回答が全文表示されます。
  • 12SA
  • ベストアンサー率19% (4/21)
回答No.2

VLOOKUPが使えます。     A      B      C      D (列番号)   1     flower   address   name   2  01   3  02   4  03 (行番号) とします。 B2=vlookup(A2,元の表の全範囲,4) C2=vlookup(A2,元の表の全範囲,3) D2=vlookup(A2,元の表の全範囲,2) 「元の表の全範囲」はF4を押して絶対番地($)を付けた状態にしてください。 で出来ると思います。 後は、そのセルを下までコピーしてください。 これで、どうでしょうか?

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 VLOOKUPでは確かにうまくできました。 しかし、行数が実際はもう少しあったもので、できれば列数を手入力でなしに間違えず入れたかったのでした。 でも、ありがとうございました。精進します。

すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

 A   B    C   D 1   flower address name 2 1  cc   bb   aa 3 3  bb   ff   aa 4 4  aa   kk   cc 5 2  ff   ee   dd B2=VLOOKUP($A2,Sheet1!$A$1:$D$5,MATCH(B$1,Sheet1!$A$1:$D$1,0)) ★右と下にコピー

D-X
質問者

お礼

お礼がとてつもなく遅くなり失礼しました。 早くにお返事くださったのに。 素晴らしくきれいな回答ありがとうございました。 感謝しています。

すると、全ての回答が全文表示されます。

関連するQ&A