• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 並び替え)

EXCELデータを簡単に並び替える方法とは?

このQ&Aのポイント
  • EXCELデータを効率的に並び替える方法を紹介します。
  • 3x7のデータを横に並び替える手順を説明します。
  • 20ファイルに分かれたEXCELデータを素早く整理する方法について解説します。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

次式を入力した任意の空きセルを右に20列および下方に29行オートフィルするだけェ~ =OFFSET($A$1,(ROW(A1)-1)*3+MOD(COLUMN(A1)-1,3),(COLUMN(A1)-1)/3) 【備考】INT関数なんて必要なしッ!

sharome
質問者

お礼

すごい。あっという間にできました。ありがとう。ありがとうございます!!

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

セルA1から3x7で一セットが何個も行方向にある前提でコードを書きました。1列開けて出力します。 20個あるというファイル(Bookのこと?)の保存フォルダーやデータが入力されたシート名やシート数、データの書き出しセルなどが分かれば、それらを一括制御するBookを作れますが、不明なため、データがあるBookごとに標準モジュールに貼り付けるマクロになります。出力列になにが入力されているのか分からないので消去等はしていません。 当方、Win10、Excel2010です。ご参考に。 Sub joinAry()  Dim Ary(20) As String  Dim rRw As Integer '// 調べる  Dim wRw As Integer '// 出力行  Dim c As Integer, r As Integer    With Range("A1")   While .Offset(rRw, 0) <> ""    For c = 0 To 6     For r = 0 To 2      Ary(c * 3 + r) = .Offset(rRw + r, c)     Next    Next    Range(.Offset(wRw, 8), .Offset(wRw, 28)) = Ary       rRw = rRw + 3: wRw = wRw + 1   Wend  End With End Sub

sharome
質問者

お礼

ご回答本当にありがとうございます。マクロ書いたことがなく。。ちょっと他のやり方でTRYしてみます。ごめんなさい

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.2

シート1に「3x7で一セットのかたまりのデータ」を張り付ける場所を用意。 シート2に「A1には、シート1のA1を参照」「A2には、シート1のA2を参照」「A3には、シート1のA3を参照」「A4には、シート1のB1を参照」。。。の式を必要分まで用意。 シート1の張り付ける場所に a1a4a7a10a13a16a19 a2a5a8a11a14a17a20 a3a6a9a12a15a18a21 を張り付ければ、 シート2の1行目に、 a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15a16a17a18a19a20a21 が表示されるでしょう。 全部選択して、コピー。 値貼り付けすればよいかと。 2行目以降も同様の式入れとけば、30セット分も賄えるでしょう。

sharome
質問者

お礼

ありがとうございます。途中まで頑張ってこのやり方でやってみました。ありがとうございます!!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以下のようなVBAでいかがでしょう。 A10とA11からそれぞれ右に横並びで出力します。 Sub Test() Dim Inbuf As Variant Dim Outbuf(21) As Variant Dim i As Long, j As Long Dim x As Long, y As Long For i = 1 To 4 Step 3 Inbuf = Range(Cells(i, "A"), Cells(i + 2, "G")) x = 1: y = 1 For j = 0 To 20 If y > 3 Then x = x + 1 y = 1 End If Outbuf(j) = Inbuf(y, x) y = y + 1 Next If i = 1 Then Range("A10").Resize(1, 21).Value = Outbuf Else Range("A11").Resize(1, 21).Value = Outbuf End If Next End Sub

sharome
質問者

お礼

ありがとうございます。私のスキル不足で動かすことができませんでした。せっかくお返事いただいたのに申し訳ありません。でも、お返事ありがとうございます!!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Excelと言えば、初心者は、エクセル関数を思い浮べると思うが、 並べ替えや多列のデータは扱いにくい(たとえば「探索をする」でMATCH関数も単一列を対象にしている。(参考 多列の場合は、例 複数列にまたがるデータ一覧から検索条件に一致する値を取り出す方法 https://qiita.com/AquaMeria/items/a17591715a40f9c0c2ea のように凝った方法になる) ーー そこでVBAコード(簡単な10行以下と思う)を作って、 (1)作業列か作業用シートに、元各行データから、1列データを作る。 (参考 横列のものを縦列にTRANSPOSE関数利用など https://www.relief.jp/docs/excel-vba-transpose-array.html その結果を対象に、 (2)ソートして(a,b,c・・・順にして)VBAコードは1行。 (3)望みの区切りで、ぶった切って、シートの望みの場所へ、代入(データ作成)すれば仕舞い。 質問者が、このやり方に興味があれば、コードを作成してみますが。

関連するQ&A