• ベストアンサー

エクセルの関数

添付資料のようなデータが数百件あるのですが 上の縦並びのデータを下のように横並びのデータにする関数ってありますか?

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 元表Sheet1からSheet2に並び替えします。 (1)Shett2のA1を選択→フィルタオプションの設定→指定した範囲を選択→リスト欄にSheet1!A:A→抽出欄にA1→重複するレコードは無視するを選択→OK (2)Sheet2のB2に以下の数式を入力、入力完了時にshift+ctrl+enterキーを同時押下    =IF(COUNTIF(Sheet1!$A:$A,$A2)>=COLUMN(A1),INDEX(Sheet1!$B:$B,SMALL(IF(Sheet1!$A$1:$A$1000=$A2,ROW(Sheet1!$B$1:$B$1000),9999),COLUMN(A1))),"") (3)B2を縦横に必要分コピー

moppy_nana
質問者

お礼

シフト+コントロール+エンターキーを押した瞬間、「出来たぁぁぁ!」ってパソコンの前で叫んでしまいました。何が何だか理解はしてませんが、とりあえず式をコピペしたら一発で完了!素晴らしいです。ありがとうございました!

その他の回答 (2)

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

 今仮に、上の表がSheet1にあり、下の表はSheet2に表示させるものとします。  又、Sheet3のA列とB列を作業列として使用するものとします。  まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(COUNTIF(Sheet1!$A$1:$A1,Sheet1!$A1)=1,ROW(),"")  次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF(OR(Sheet1!$A1="",Sheet1!$A1="原産国"),"",Sheet1!$A1&COUNTIF(Sheet1!$A$1:$A1,Sheet1!$A1))  次に、Sheet3のA1~B1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  次に、Sheet2のA2セルに次の数式を入力して下さい。 =IF(ROWS($A$1:$A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS($A$1:$A2))))  次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF(OR($A2="",COLUMNS($B:B)>COUNTIF(Sheet1!$A:$A,$A2)),"",INDEX(Sheet1!$B:$B,MATCH($A2&COLUMNS($B:B),Sheet3!$B:$B,0)))  次に、Sheet2のA2~B2の範囲をコピーして、同じ列の3行目以下に、記載されている国の数を上回るのに充分な回数だけ貼り付けて下さい。  次に、Sheet2のB列全体をコピーして、C列から右方向にある列に貼り付けて下さい。  以上です。

moppy_nana
質問者

お礼

難しくて私には理解できませんでしたが(スミマセン)、とりあえずコピペでデータは作成できました! 何時間も悩んでいたのがウソみたいです。ありがとうございました!

  • t-watnb
  • ベストアンサー率42% (12/28)
回答No.1

関数はしらないんですが、いくらか簡単に出来る方法なら思いつきました。これじゃダメですか? 1.「原産国」でフィルタリングをかけて、「日本」だけを表示し、犬の種類をコピーします。 2.貼り付けで、形式を選択して貼り付け、行列を入れ替える、で貼り付けします。

moppy_nana
質問者

お礼

さっそくのお返事ありがとうございます! 添付ファイルみたいに、数個のデータなら教えていただいた方法で問題ないのですが・・・ なんせデータ量が多いのでA列をフィルタリングしながらだと、とても時間がかかってしまうんです。。。

関連するQ&A