• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのコマンドを教えて頂きたいです。)

エクセルデータ加工方法|センセーショナルなタイトル

このQ&Aのポイント
  • エクセルデータの加工方法を教えてください。エクセル2007でデータ整理を行っている際に、異なる行にあるデータを接合させる方法が知りたいです。
  • エクセル2007でデータ整理をしており、異なる行にあるデータを接合させる方法を教えてください。
  • エクセル2007でデータ整理をしており、idの異なる行にあるデータを接合させたいです。具体的な処理方法を教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! こんな感じで良いのですかね? ↓の画像でSheet2のA列(ID)はあらかじめ入力してあるとします。 Sheet2のB2セルに =IF(ISERROR(INDEX(Sheet1!$A$2:$F$10,MATCH($A2,INDEX(Sheet1!$A$2:$F$10,,MATCH(B$1,Sheet1!$A$1:$F$1,0)-1),0),MATCH(B$1,Sheet1!$A$1:$F$1,0))),"",INDEX(Sheet1!$A$2:$F$10,MATCH($A2,INDEX(Sheet1!$A$2:$F$10,,MATCH(B$1,Sheet1!$A$1:$F$1,0)-1),0),MATCH(B$1,Sheet1!$A$1:$F$1,0))) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 以上、参考になれば良いのですが・・・m(__)m

sakura-saka224
質問者

お礼

>tom04さん 分かりやすい解答ありがとうございました。 ベストアンサーにさせて頂きました。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 横から失礼致します。  私ならば、Sheet2のB2に入力する数式は、次の様にします。 =IF(AND($A2<>"",COUNTIF(OFFSET(Sheet1!$A:$A,,(COLUMNS($A:A)-1)*2),$A2)>0),VLOOKUP($A2,OFFSET(Sheet1!$A:$B,,(COLUMNS($A:A)-1)*2),2,0),"")

sakura-saka224
質問者

お礼

kagakusukiさん ありがとうございます! やってみます。 そういった関数はやりながら覚えるものなんですかねぇ~ 本当にみなさんスゴイです。 ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2・3です! 再びお邪魔します。 何とか希望に近い形になったようで良かったです! 他人様に解説できるような大した人間ではありませんが・・・ ちょっとだけ説明させていただきます。 基本的にはINDEX関数で範囲指定し、行・列にMATCHしたものを表示させているだけです。 同じ数式を2度使っていますが、前半のISERROR部分は単にエラーの場合は空白にするための数式です。 後半部分の NDEX(Sheet1!$A$2:$F$10,MATCH($A2,OFFSET(Sheet1!$A$2:$A$10,,(,,1),0),MATCH(B$1,Sheet1!$A$1:$F$1,0)) に関してですが、 まずINDEX関数でSheet1のA2~F10セルを範囲指定し、 行の検索は A2(相対参照)を検査値として、検査範囲の部分がちょっとややこしくなっています。 OFFSET関数でSheet1のA2~A10(A列)を基準とし、何列右側の列を検査範囲にしていするか? としています。 ここで COLUMN(A1)-1)*2 =0 となりますので、結局A列を基準に列方向に0列目を検査範囲! すなわち基準列(A2~A10セル)が検査範囲になります。 ここで検査値(A列のデータ)と一致する行を返す。 列に関しては単純にMATCH関数でB2セル(相対参照)を検査値として、 Sheet1のA1~F1セルで一致する列を返すということですので、 結局Sheet2のB2セルはINDEX関数で範囲指定した、1行目・2列目のデータが返っています。 これをオートフィルでコピーするわけですが、行方向に関しては単純にA列を参照するだけでOKです。 ここで列方向へのコピーは COLUMN(A1)-1)*2 =0 を列方向にコピーすると COLUMN(B1)-1)*2 =2 COLUMN(C1)-1)*2 =4 といった具合に変化しますので、 Sheet2のC列はSheet1の基準列(A列)から2列右側の列をINDEX関数の行の検査範囲 D列はSheet1の基準列(A列)から4列右側の列INDEX関数の行のを検査範囲とするようになり、 前回の画像のような表示ができます。 この程度ですがよろしいでしょうか?m(__)m

sakura-saka224
質問者

お礼

tom04さん お忙しい中、本当にありがとうございました。 大変勉強になりました。 本当にありがとうございます。 心からお礼申し上げます。 ぜひ、今後ともよろしくお願い申し上げます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 微々たるものですが・・・前回よりも少しだけ数式を短くしてみました。 Sheet2のB2セルに =IF(ISERROR(INDEX(Sheet1!$A$2:$F$10,MATCH($A2,OFFSET(Sheet1!$A$2:$A$10,,(COLUMN(A1)-1)*2,,1),0),MATCH(B$1,Sheet1!$A$1:$F$1,0))),"",INDEX(Sheet1!$A$2:$F$10,MATCH($A2,OFFSET(Sheet1!$A$2:$A$10,,(COLUMN(A1)-1)*2,,1),0),MATCH(B$1,Sheet1!$A$1:$F$1,0))) として列方向・行方向にオートフィルでコピー! ってあまり短くなっていないですね!m(__)m

sakura-saka224
質問者

お礼

tom04さん ご丁寧のありがとうございます。 感激してしまいました!!!!!! 私には到底思いつかない方法でした。 もしよろしければ、大変お手数なのですが、 解説頂けると、ありがたいです。 きっと、他の教えてgooをご覧になった方の参考になると思いますので。 本当にありがとうございます。 こんなに素晴らしい解答を頂けるとは、感動です!!!!

回答No.1

関数はいくつかあると思います。 シート2A列(A2から下)に都道府県名を並べて セルB2に=SUMIF(Sheet1!$A$2:$A$7,Sheet2!A2,Sheet1!B$2:B$7) といれます。他のセルも同じようになりますがかんがえて下さい。

sakura-saka224
質問者

お礼

GOCHISOUdaさん ありがとうございます。 参考に、考えさせて頂きます。