• 締切済み

表 集計の表示を変える マクロ 関数 エクセル

添付の画像のように左の表から右の表になるように集計の表示を変えたいです。 実際には左表の縦方向に100行ぐらいありますので簡単にできる方法を教えてください。

みんなの回答

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

表の組換えの問題ですね。Excelには、表の組換えに使える、諸操作の用意がないと思う。ピヴォットテーブルが近いようにも思うが、目的が集計などにあるようですので使えない。 ーー VBAでやってみました。 元データ A1:E13 Sheet1 グループ1 グループ2 グループ3 あああ Aランク 1 11 21 Bランク 2 12 22 Cランク 3 13 23 いいい Aランク 4 14 24 Bランク 5 15 25 Cランク 6 16 26 ううう Aランク 7 17 27 Bランク 8 18 28 Cランク 9 19 29 えええ Aランク 10 20 30 Bランク 11 21 31 Cランク 12 22 32 ーー VBEの標準モジュールに Sub test01() Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") lr = sh1.Range("B10000").End(xlUp).Row 'B列データ最終行取得。A列では本ケースでは不可 'MsgBox lr 'Sheetにアウトプットするセルの行、列ポインターの初期値設定 K = 3 'Sheet2の最初列のポインター s = 2 '---Sheet1の2行目から最終行まで繰り返し For i = 2 To lr l = s For j = 3 To 5 'C,D,E列について繰り返し sh2.Cells(K, l) = sh1.Cells(i, j) l = l + 3 '次は3列右列へセット Next j If l > 7 Then 'H列より右列なら s = s + 1 '最初列を1列右に設定して End If If (i - 1) Mod 3 = 0 Then 'あああ、いいいなどが3行おきなので s = 2 'Sheet2の最初列をB列に設定して K = K + 1 'Sheet2のアウトプット行を1行下にポイントして End If Next i End Sub ーーーー 結果 Sheet2 グループ1 グループ2 グループ3 Aランク Bランク Cランク Aランク Bランク Cランク Aランク Bランク Cランク あああ 1 2 3 11 12 13 21 22 23 いいい 4 5 6 14 15 16 24 25 26 ううう 7 8 9 17 18 19 27 28 29 えええ 10 11 12 20 21 22 30 31 32 ーー Sheet2のA列のA3は 式 =INDIRECT("Sheet1!A"&(ROW()-3)*3+2) で取りました。 Sheet2のグループとランクの行の見出し文言は手打ちで作成しました。 ーーー #1のご回答によれば、本課題は関数でも式が短くて、できるのですね。 一般にはこのタイプの課題は、ずいぶん長くなるようなので、もっと複雑になると思ったのですが。

honeybeans
質問者

お礼

ありがとうございました。むずかしくて分からないですが、できることは確認できました。

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

H3: =OFFSET($C$2,(ROW(A1)-1)*3+MOD(COLUMN(A1)-1,3),(COLUMN(A1)-1)/3)

honeybeans
質問者

お礼

すごい、できますね! ありがとうございます。

関連するQ&A