• ベストアンサー

上級者の方教えてください。エクセル 縦に連なるデータを横の表に作り変えたい

初心者なので何を読んでも分かりませんでした。 簡単な方法を教えてください。 縦に、 A列に、 (1)名前 A 3行空白 (2)コードB (3)特徴 C 4行空白 (1)名前 D 3行空白 (2)コードE (3)特徴 F 4行空白 (1)名前 G 3行空白 (2)コードH (3)特徴 I ・ ・ のように並んでいます。 全ての空白を除いて、 横に         A  B  C   名前AコードB特徴C   名前DコードE特徴F   名前GコードH特徴I    ・    ・ のような表に作り変えたいと思いますが、 どうしたら良いでしょうか? 仕事で何時間もかかって入力が嫌になります、よろしくお願いいたします。

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

  • ベストアンサー
回答No.4

上級者に答えを求めるのに上級者なりの答えを欲しいのじゃないのですね。いや、そんなことを言う私が初心者なのか。。。 同一シートにご質問のような結果を求めるにはVBA(Excelのためのプログラム言語)を使う必要があり、かなり敷居が高いものだと思われます。 よって、数式による回答になるので別の列に表示することになります C1:E1セル範囲に表示することとします C1セル =INDEX($A:$A,ROW()*10-10+1)&"" D1セル =INDEX($A:$A,ROW()*10-10+5)&"" E1セル =INDEX($A:$A,ROW()*10-10+6)&"" C1:E1セル範囲を選択して下へオートフィル コピー & 値の貼り付け A:B列削除 参考まで # 蛇足 # C1:E1セルをC1セルから選択して # =INDEX($A:$A,ROW()*10-10+{1,5,6})&"" # [Ctrl]+[Shift] +[Enter] で確定、 # そのまま下へオートフィル

gluwun
質問者

お礼

ありがとうございました。 おかげさまで仕事がはかどります。 丁寧な表までつけていただき分かりやすかったです。

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

No6です。シート2に表示させる予定の式を同じシート1に表示させる式になっていました。ごめんなさい。 シート1の例えばE1セルに同じ式を入力してオートフィルドラッグしても同じ結果になります。

gluwun
質問者

お礼

複雑すぎてさっぱり意味不明ですが、 すごいです! 簡単に出来てしまいました。 何時間もかかっていたのに助かりました。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

シート1のA1セルに名前Aが入力され、下方にデータがあるとします。 シート2のA1セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(COLUMN(A1)>3,COUNTA($A:$A)/3<ROW(A1)),"",INDEX($A:$A,IF(COLUMN(A1)=1,(ROW(A1)-1)*10+1,IF(COLUMN(A1)=2,(ROW(A1)-1)*10+5,IF(COLUMN(A1)=3,(ROW(A1)-1)*10+6,"")))))

gluwun
質問者

お礼

ありがとうございました。 内容は?ですがなぜだか出来ました。

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

こんばんは! 上級者ではありませんが・・・ ↓の画像でSheet1のデータをSheet2にまとめるようにしてみました。 配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。 Sheet2のA2セルに貼り付け後、F2キーを押す、又はA2セルをダブルクリック、又は数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 Sheet2のA2セルは =IF(COUNTIF(Sheet1!$A$1:$A$1000,A$1&"*")<ROW(A1),"",INDEX(Sheet1!$A$1:$A$1000,SMALL(IF(ISNUMBER(FIND(A$1,Sheet1!$A$1:$A$1000)),ROW($A$1:$A$1000)),ROW(A1)))) としてShift+Ctrl+Enterキーです。 これを列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m

gluwun
質問者

お礼

大変丁寧な説明をしていただきありがとうございます! 試してみたのですけどうまくいきませんでした。 たぶんわたしの技術がおいつかないのだと思います。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

元のデータがA列にあって,その横に並べるならBCD列になりますね。 >簡単な方法 B1セルに,次の式を =INDEX($A:$A,SMALL(IF($A$1:$A$999<>"",ROW($A$1:$A$999),9999),3*ROW(A1)-3+COLUMN(A1)))&"" この画面からコピーして数式バーの中に貼り付け,さらにコントロールキーとシフトキーを押しながらEnterで入力します。 B1をコピーしてC1とD1に貼り付けます 更にB1:D1を下向けにつるつるっとオートフィルドラッグでコピーします。 数式をちょっと触ってみたあとも,必ず「「「「コントロールキーとシフトキーを押しながらEnter」」」」でまた入力することを絶対忘れないようにしてください。 式の意味は考えないで構いません。コピーするだけなら簡単にできますね?

gluwun
質問者

お礼

ご返答いただきましてありがとうございます。 何度か試してみたのですが、 私には難しかったみたいです。 でも、お答えいただきありがとうございました!

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

抜けてました。 ・・・形式を選択してコピーを選択して・・・です。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

単純に矩形選択してコピー(Ctrl+C)、別のシートか別の場所で一個だけセルを右クリックする。コンテキストメニュー(その場面で可能な処理のメニュー)が出ますから、下の行と列を入れ替えるをチェックして貼り付ける。  そのご、不要な行なり列を(行番号、列番号をクリックして選択)まとめて削除する。  これが一番わかりやすいかと

gluwun
質問者

お礼

一番最初に返答していただきまして ありがとうございました。

関連するQ&A