• ベストアンサー

エクセル 列でグループ分けされたものを行に振り分け

Excel2010です。よろしくお願いします。 添付画像にあるようにグループの分け方を変えたいのですがどのようにすれば効率的でしょうか?? ご教授お願いします。

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

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

VBAでこういう方法もある。 Range("a2:L6").Item(i) といった、(VBAでは)セル範囲の何番目のセルというのを取り出せるので、 行と列番号の算出(計算)問題でしかない。Z型的にセルを取り出せる。 ーー 変換前後が、長方形的で、規則性のある(=繰り返しである)表の組み換えはこういう方式は役に立つ。VBAコード数が極く少なくて済む。 ーー データがA2:L12セルにあるとして 標準モジュールに書きコピペして実行(F5キー) Sub test01() For i = 1 To 12 * 5 r = Int((i - 1) / 3) + 1 + 20 c = ((i - 1) Mod 3) + 1 Cells(r, c) = Range("a2:L6").Item(i) Next i End Sub 結果はA21以下に、3列のデータになる。 (注)r = Int((i - 1) / 3) + 1 + 20 の⁺20の部分は、データ数によっては、調整必要。

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>添付画像にあるようにグループの分け方を変えたいのですがどのようにすれば効率的でしょうか?? Sheet2!A1へ次の数式を入力します。 =INDEX(Sheet1!$A$1:$L$5,INT((ROW()-1)/4)+1,MOD(ROW()-1,4)*3+COLUMN()) 右へC1セルまでコピーし、下へ20行までコピーしてください。 貼付画像はExcel 2013で検証したものですがExcel 2007以降のバージョンで再現できます。 尚Sheet2は条件付き書式で塗りつぶしを行っています。

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

Sheet2!A1: =OFFSET(Sheet1!$A$1,(ROW(A1)-1)/4,MOD(COLUMN(A1)-1+(ROW(A1)-1)*3,12))

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

マクロで行うので有れば Sub Test()   Dim i As Long, j As Long, k As Long   For i = 1 To Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row     For j = 1 To 84 Step 21       k = k + 1       Worksheets("Sheet2").Cells(k, 1).Resize(, 21).Value = Worksheets("Sheet1").Cells(i, j).Resize(, 21).Value     Next   Next End Sub

関連するQ&A