エクセル縦データを横に分ける方法

このQ&Aのポイント
  • エクセルで縦方向に並んでいるデータを横方向に分ける方法を紹介します。
  • 手作業でデータを分けるのは大変ですが、マクロを使わずに簡単に行う方法があります。
  • 月ごとにデータを横方向に並べることで、効率的にデータの整理ができます。
回答を見る
  • ベストアンサー

エクセル 縦のデータを横に分けるには

このように縦方向に並んでいるデータを(横方向はA3までしかデータはありません)     A1   A2   A3 1   4月 2   本   石   水 3   花   木 4   海   山   川 5   5月 6   瓶   本   壷 7   墓   鋏   机 8   6月 ・ ・ ・ 月単位で横方向に並べたいのですが、手作業で行うのは大変です。 ちょっと工夫して、マクロを使わずに、楽に出来るやり方は無いでしょうか?     A1   A2   A3    A4   A5  A6   A7 1   4月             5月           6月   2   本   石   水    瓶   本   壷 3   花   木         墓   鋏   机 4   海   山   川

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

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

元の表はシート1のA,B,C列の2行目から下方に入力されているとします。 作業列を使って対応することにします。 D2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A2,"*月")=1,ROUNDDOWN(MAX(D$1:D1),-3)+1000,D1+1)) お求めの表ですがシート1のE2セルにあるいはシート2のA2セルに次の式を入力して横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。 =IF(COUNTIF(Sheet1!$D:$D,ROUNDUP(COLUMN(A1)/3,0)*1000+ROW(A1)-1)=0,"",IF(AND(ROW(A1)=1,MOD(COLUMN(A1),3)=1),INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(COLUMN(A1)/3,0)*1000,Sheet1!$D:$D,0)),IF(AND(ROW(A1)=1,MOD(COLUMN(A1),3)<>1),"",IF(ROW(A1)>1,IF(INDEX(Sheet1!$A:$C,MATCH(ROUNDUP(COLUMN(A1)/3,0)*1000+ROW(A1)-1,Sheet1!$D:$D,0),MOD(COLUMN(A1)-1,3)+1)=0,"",INDEX(Sheet1!$A:$C,MATCH(ROUNDUP(COLUMN(A1)/3,0)*1000+ROW(A1)-1,Sheet1!$D:$D,0),MOD(COLUMN(A1)-1,3)+1))))))

viyamin
質問者

お礼

回答ありがとうございます。 office2003にて 式を入力すると =IF(COUNTIF(Sheet1!$D:$D,ROUNDUP(COLUMN(A1)/3,0)*1000+ROW(A1)-1)=0,"",IF(AND(ROW(A1)=1,MOD(COLUMN(A1),3)=1),INDEX(Sheet1!$A:$A,MATCH(ROUNDUP(COLUMN(A1)/3,0)*1000,Sheet1!$D:$D,0)),IF(AND(ROW(A1)=1,MOD(COLUMN(A1),3)<>1),"",IF(ROW(A1)>1,IF(INDEX(Sheet1!$A:$C,MATCH(ROUNDUP( この続きのCOLUMNが黒色に反転して、エラーが有ると警告が出てしまいます。

viyamin
質問者

補足

(お礼の後から記述しました。) 回答ありがとうございます。 office2010で試したところ、エラーは出ず、期待通りの動作をしました。 大変すばらしいと思いました。

その他の回答 (1)

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

こんばんは! >マクロを使わずに、楽に出来るやり方は無いでしょうか? とありますが、関数でやるとなるとすでに回答されているようにかなり面倒な数式になると思います。 質問内容がマクロ向きのような感じがしますので、 敢えてお望みでないマクロでやってみました。 一例です。 Sheet1の2行目以降にデータがあるとして、Sheet2に表示するようにしてみました。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim str As String Dim ws As Worksheet Set ws = Worksheets("Sheet2") Application.ScreenUpdating = False ws.Cells.Clear Columns(1).Insert For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row If WorksheetFunction.CountA(Rows(i)) = 1 And Cells(i, 2) Like "*月" Then str = Cells(i, 2) ws.Cells(1, Columns.Count).End(xlToLeft).Offset(, 3) = str Else Cells(i, 1) = str End If Next i ws.Columns("A:C").Delete For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column Step 3 If Cells(i, 1) = ws.Cells(1, j) Then Range(Cells(i, 2), Cells(i, 4)).Copy Destination:= _ ws.Cells(Rows.Count, j).End(xlUp).Offset(1) End If Next j Next i Columns(1).Delete Application.ScreenUpdating = True End Sub 'この行まで ※ 関数の場合はデータ変更があるたびにすぐに反映されますが、 マクロの場合は、データ変更のたびにマクロを実行する必要があります。 参考にならなかったら無視してください。m(_ _)m

viyamin
質問者

お礼

回答ありがとうございます。 わざわざマクロの作成ありがとうございました。 今回の質問の主旨からは外れますが、今後の参考とさせていただきます。

関連するQ&A

  • エクセル: ジャンプで教えて下さい

    エクセル初心者です。教えて下さい。 Sheet1にデーターがあります。 A  B  C  D  E 1  2  3  4  5 山  川  海  花  木 Sheet2でデーターを抽出するようにしています。 (セルA1に数値入力するとA2にデーターを検索して表示。) A  B  C 4  花  ◎ ここでお教えいただきたいのですが、Sheet2のC1をクリックするとSheet2のA1セル「4」を認識してSheet1のD2のセル[花]にジャンプさせるにはどのようにすれば良いのでしょうか。マクロを使わない方法でお願いします。

  • エクセルの文字列検索

    Office2003のエクセルで例えば   A B 1 一 山 2 一 山 3 一 川 4 二 海 5 二 海 というような表があるとします。下のように  C D E 1一 山 川 2二 海 C1のセルに「一」を入力すると、対応する山と川をD1とE1の セルに表示してくれるような関数は無いでしょうか? 配列関数など色々探しましたが良いのが分かりません。 宜しくお願いします。

  • 海、山、川 どれが好きですか?

    みなさんは海、山、川どれが一番好きですか? できれば順位と理由を教えていただけると嬉しいです。 私は 1,川 2,山 3,海 です。 海はベタベタするからあまり好きではありません^^; それに水が漂ってる感じがして生暖かくて気持ち悪い(笑) 山が好きな理由は、木の匂いが好きだから。 川が好きなのは、水が冷たくて気持ちいい。 サッパリしてる。 アンケートなので思ったままでいいですけど、 私が海が嫌いだって言った理由についての批判だけは辞めてください^^;

  • EXCELの集計について

    お世話になります。 下記のような表で質問します。    A     B 1 大分類   中分類 2  ○     山 3  ×     川 4  ○     海 5  ○     海 6  ○     山 7  ×     海 大分類が ○ でなおかつ 中分類が 海 のデータの個数を集計したい。 答えは2個なのですが。 COUNTやIFを組み合わせてやってますが出来ません。 ご教授願います。

  • エクセル関数を使ってこんな事できますか?

    どなたかご存知の方がいらっしゃったら教えてください。 各セルに、下記の様なテキストが入力してあったとします。 A        B  C  D 山 川 海 太陽 川  海  山 太陽 Aの中から、B、Cに入力されているテキストを削除してDに表示 させることってできるのでしょうか? その場合、Dにはどんな数式を入れたらよいのでしょうか? 知っている方、よろしくお願いいたします。

  • EXCEL VBAで別のシートに値を渡したいのですが・・・

    まず 例えば3行2列のセルに |A|10| |B|20| |C|30| というような値があるとします。 アルファベットにはそれぞれ次のような意味があり、 A=山 B=川 C=海 このデータを元に 別シート(山、川、海の3シート)に 山シート |NO.|10| 川シート |NO.|20| 海シート |NO.|30| と 1行2列のセルに値を渡したいのですが、 そういうことはエクセルで可能でしょうか? エクセルに詳しい方、どうぞご教授ください。 よろしくお願い致します。

  • 自然が大好きな私に 

    私は自然が大好きです。 青空、太陽、森、花、木、山、海、川、植物、風、月…… などなど挙げればきりがありませんが。 風の音、滝の音、川のせせらぎ、波の音、木漏れ日、花の香り、小鳥のさえずりなど、とにかく自然が大好きです。 世間の人たちが求めているような、高級なもの、立派な肩書き、流行、などには興味がありません。 欲ばかりの人間は、醜くて、怖いと思うことさえあります。 こんな私にお勧めの映画をご紹介いただけませんでしょうか? どうかよろしくお願いします♪

  • 海の石を持ち帰ってきたが

    子供が父と 遠くの海から丸い平たい石を拾ってきました。 川や山、海の石には念が籠もると言うから、返しに行きたいが遠いから私には簡単に行けません。 返しに行く以外に、何か方法はありませんか? 塩を振り、近くの海でも良いのでしょうか? 迷信だとしても、何かあればそのせいかもと気になるから、どうにか解決したいです。

  • またまたエクセルの文字列照合の疑問

    エクセルの処理でいきづまってしまったのですが、 例えば  A B C D  1朝   人 傘 2昼   町 朝 3夜   魚 山 4顔   草 月 5人   川 石 とエクセルで並んでいたとき  A B C D  1朝 D 人 傘 2昼   町 朝 3夜   魚 山 4顔   草 月 5人 C 川 石 のようにB列にA列に並んでいる漢字がどの列の漢字に該当しているかを出したいです。ちなみにC、D列には800文字ほど並んでいて重複はありません。 簡単そうですが、わかりません。 誰か詳しいお方模範解答をお願いします。

  • 一定条件でセルの色が自動的に変わる(エクセル)

        A     B     C     D     E 1   ★ 2   海    あ    い     う     え 3   山    か    き     く     け 4   川    さ     し     す     せ 5   陸    た    ち     つ     て A1セルの★に「海」や「山」や「川」や「陸」と入力します。 例えば、★に「海」を入力したら、その横列にある「あ」「い」「う」「え」のセルに 自動的に色がつくようにすることは可能でしょう? ★に「山」を入力したら、その横列にある「か」「き」「く」「け」のセルに色が、 ★に「川」を入力したら、その横列にある「さ」「し」「す」「せ」のセルに色が、 ★に「陸」を入力したら、その横列にある「た」「ち」「つ」「て」のセルに色が、 といった感じにしたいのです。 恐らく「条件付き書式」を使用するのだと思いますが、 自動的にセルの色を変えたい行が500行近くあります。 なので、その条件付き書式をコピペ出来るとありがたいのですが。 どなたか教えてください!!!

専門家に質問してみよう