• ベストアンサー

エクセルのセルの並べ替え

お世話になります。エクセル2007を使用しているのですが、手動でコピペではかなり面倒なことになったので質問させていただきます。 A1からA100のセルに数値のデータが入っているとして、 A1~A100のデータを順に4つづつA1,A2,A3,A4、次は隣の列にいってB1,B2,B3,B4そしてまた次の列にいってC1,C2,C3,C4・・と 最終的に4行25列に並べ替えたいのですが、楽に並べ替える手法はあるでしょうか。 この作業を何回も繰り返さないといけないので、やり方がわかる方どうか教えて下さい。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.1

A1からA4はそのまま、ということでよろしいでしょうか?  B1:=INDEX($A$1:$A$100,4*(COLUMN()-1)+ROW()) として、右方・下方にフィル⇒コピー⇒値のみ貼り付け でいかがでしょう? (Excel2003で挙動確認済)  B1:=OFFSET($A$1,4*(COLUMN()-1)+ROW()-1,) としても同じです。

hososugi
質問者

お礼

回答有難うございます。 B1:=INDEX($A$1:$A$100,4*(COLUMN()-1)+ROW())は何故かうまくいかなかったのですが、 B1:=OFFSET($A$1,4*(COLUMN()-1)+ROW()-1,) で実現できました。 本当に有難うございました。

その他の回答 (2)

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

次の方法は如何でしょか。 B1に次の数式を設定し、B4までコピー後、B1:B4を選択して、右方向に必要分コピーして下さい。 =INDIRECT("a"&4*(COLUMN()-1)+ROW())

hososugi
質問者

お礼

回答有難うございます。 この方法でも実現できそうです。 有難うございました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

VBAで作ってみました。 一例です。 意味不明であれば無視してください。 Sub test()  Dim i As Long, c As Long, r As Long  Dim Member As Long, LastRow As Long  Dim Buf As Variant    Member = 4 '分割する要素の数    LastRow = Cells(Rows.Count, "A").End(xlUp).Row  If LastRow Mod Member <> 0 Then LastRow = (Int(LastRow / Member) + 1) * Member    If LastRow > Columns.Count * Member Then Exit Sub    Buf = Range("A1:A" & LastRow).Value    i = 1  Application.ScreenUpdating = False  Cells.Clear  For c = 1 To LastRow / Member   For r = 1 To Member    Cells(r, c).Value = Buf(i, 1)    i = i + 1   Next r  Next c  Application.ScreenUpdating = True   End Sub

hososugi
質問者

お礼

VBAですか。。 申し訳ないですが意味不明です^^; CとかC++ならそこそこ分かるんですが、 情けないですね

関連するQ&A

  • excelのセルの並べ替え。

    Excelの操作で迷っています。詳しい方の知恵を拝借できたらと思います。 以下のようにデータの入力されたセルが並んでいます(アルファベット1文字が1セルです)。 A B C D E F G H I J K 横に何セル並んでいるかは、行によってまちまちです。このようなデータが、数千行あります。これを、以下のように1列に並べ替えたいのです。 A B C D E F G 「行列を入れ替えてコピー」ではなかなかに大変なので、何か良い方法を探しています。よろしくお願いいたします

  • 再度、Excelの数式について、今朝

    再度、Excelの数式について、今朝 今朝、KURUMITO様から、下記1)~3)の条件での数式を親切に教えて頂きました。 教えて頂いた数式 =SUMPRODUCT(A4:A55,B4:B55)/H2 その後、条件が1)2)は同じですが、4)が増えたため3)が5)に変更になりました。 自分なりに次のように作ったのですが、エラーになります。=SUMPRODUCT(C4:C55="S")*(A4:A55,B4:B55)/H2 正しい数式を教えてください。バージョンは Excel2003 です、 宜しくお願いいたします。 1)A列 A4からA55まで、数字のデータが入ってるセルと、入ってないセルがあります。 2)B列もA列同様、B4からB55まで、数字のデータが入ってるセルと、入ってないセルがあります。(データの入ってる行は、A列で入っていれば、B列の同じ行に入っています)、 3)A列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。 4)C列もA列B列同様、C4からC55まで、B又はSの”文字のデータ”が入ってるセルと、入ってないセルがあります。(データの入ってる行は、C列(文字データ)で入っていれば、A列(数字データ)、B列(数字データ)の同じ行に入っています) 5)C列の”文字データ”がSならばA列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。

  • セルの内容を合わせるエクセル関数

    お世話になります。 エクセルの関数にて、下記条件を満たす関数が作れないので 分かる方がいましたら教えてください。 A列には文字列が、B列には空白か1の数字がランダムに(1番上の行は必ず空白セル)入力されています。 これに対して、B列に空白から1が続いているセルまでをひとくくりとして、 右側のセルに表示させたいです。 画像では C2セル=A2 C3セル=IF(B3=1,C2&A3,A3)としてC4セル以降にコピペ D2セル=IF(B2="",C2,"")としてD3セル以降にコピペしていますが、 C列でひとくくりになるセルが下へ行ってしまい、 希望する結果に表示されないです。 関数が組める方がいましたらご伝授頂けますでしょうか。

  • Excelのセルの並べ替え方

    Excelでデータが A B C←セルの行 ------- 1|1 2|2 3|3 4|4 5|5 6|6 7|7 8|8 9|9 ↑セルの列 と並んでいるときに A B C ------- 1|1 2 3 2|4 5 6 3|7 8 9 と3つごとに並べ替えるにはどうすればいいですか教えてください

  • エクセルの並べ替え・・・

    エクセルで並べ替えをしたいんですが、思うようにいきません。教えてください。 A列:日にち B列:ナンバー C列:名前   が入っています。 C列には、関数が入っています。 B列にナンバーを入力すると、名前が自然に入るようになっています。 関数は、 =IF(B2="","",VLOOKUP(B2,' 名 簿 '!$A:$B,2,FALSE)) です。 A~C列を選択して、 C列(名前順)に並び替えをすると、(データ→並び替え) 空欄のセルが上の方に来て、日にち、NOが入力されているセルは、下の方で並び替えされている状態です。 入力されているセルを上にするには、どのようにすればいいのか、教えてください

  • エクセルの並べ替え

    エクセルデータの番号順の並べ替えをしたいのですが A列に37、54,22,1・・・などの数字が入っており これを1から順番に並べたいです。 ただ、A列1行目に37が入っていますが 次の54はA列5行目に入っています。 B列以降に他のデータ(名前、住所等)を入れる際 一行では間に合わず、それぞれ2~5行程を使用している為なのですが この状態で並べ替えをすると、数字の入っている行のみが並べ替えられ 入っていない行は後ろの方にまとめられてしまいます。 数行まとめて並べ替えをするにはどのようにすればよいでしょうか。 お詳しい方、よろしくお願い致します。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • エクセルで単語帳を作り、複数セルで並べ替えをしたい

    A1 increase B1 動詞 C1 増える A2 beautiful B2  形容詞 C2 美しい A3 guarantee B3 名詞 C3 保証 ・ ・ ・ というように、単語帳を作り、行単位で、アルファベット順や品詞別に並べ替えたいのですが、 どのように設定すれば良いのかどなたかわかる方、教えてくださると嬉しいです。 上の例で言うと、 アルファベット順に A2B2C2 ↓ A3B3C3 ↓ A1B1C1 と言った具合です。単純にA列のみをアルファベット順に並び変えることはできるのですが、 行単位ではどうするのかわからずに困っています。

  • Excel 条件に従いセル移動するには

    よろしくお願いいたします。 A列には入力したくない行に"a"が入力してあるとします。 B列に上の行から数値を入力していくのですが、数値を入力してEnterを押すと次のA列に"a"が入力されていない行のB列セルに移動するVBAを教えてください。

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

専門家に質問してみよう