- 締切済み
表 集計の表示を変える マクロ エクセル
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
#2です。 データ例は前質問の私の回答を見てください。 今回はSheet4に結果を出します。 コードは Sub test02() Set sh1 = Worksheets("Sheet1") Set sh4 = Worksheets("Sheet4") lr = sh1.Range("B10000").End(xlUp).Row 'B列データ最終行取得。A列では本ケースでは不可 k = 3 For i = 2 To lr Step 3 sh1.Range(sh1.Cells(i, "C"), sh1.Cells(i + 2, "C")).Copy sh4.Cells(k, 2).PasteSpecial xlPasteAll, Transpose:=True '-- sh1.Range(sh1.Cells(i, "D"), sh1.Cells(i + 2, "D")).Copy sh4.Cells(k, 5).PasteSpecial xlPasteAll, Transpose:=True '--- sh1.Range(sh1.Cells(i, "E"), sh1.Cells(i + 2, "E")).Copy sh4.Cells(k, 8).PasteSpecial xlPasteAll, Transpose:=True k = k + 1 Next i End Sub Transposeを使ってます。 コード行数を少なくすることを第Iに考えました。 ーーー 結果 数字部分 B3:J6 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 他の、見出し部分行の文言(グループとランク)hsコピペとA列(「あああ」など、関数で出した)は、省略しています。前回答を見てください。
- imogasi
- ベストアンサー率27% (4737/17070)
前の質問にVBAで回答しましたが見てくれましたか。 そして前の質問を締め切ってください。2重質問状態になるので。マナー違反。 本質問の添付画像の色の付いた部分を横1行に(VBAで)する方法もありますが、次の3行おきのセル範囲の「カタマリ」を、行をずらして処理し、結果を置くところも1行ずらしていかなければならず、慣れない人にはむつかしい。 まあ私の前回答のように、述べてやるより、考えやすいかもしれない。 2重3重ループにする方法もありますが。
- SI299792
- ベストアンサー率47% (789/1648)
2本作りました。 >タテヨコを変えてコピペをやる と書いてあったので、その通りに作ってみたのですが、時間がかかります。(Macro1) 直接セルに入れるなら、すぐに済みます。(Macro2) なお、グループとランクの所は、作っていません。 ' Option Explicit ' Sub Macro1() ' Dim iy As Integer Dim ix As Integer Dim oy As Integer Dim ox As Integer ' Application.ScreenUpdating = False ' For iy = 2 To [B2].End(xlDown).Row Step 3 oy = iy \ 3 + 4 Cells(oy, "G") = Cells(iy, "A") ' For ix = 3 To 5 ox = ix * 3 - 1 Cells(iy, ix).Resize(3, 1).Copy Cells(oy, ox).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next ix Next iy End Sub ' Sub Macro2() ' Dim iy As Integer Dim ix As Integer Dim oy As Integer Dim ox As Integer Dim id As Integer ' Application.ScreenUpdating = False For iy = 2 To [B2].End(xlDown).Row Step 3 oy = iy \ 3 + 4 Cells(oy, "G") = Cells(iy, "A") ' For ix = 3 To 5 ox = ix * 3 - 1 For id = 0 To 2 Cells(oy, ox + id) = Cells(iy + id, ix) Next id Next ix Next iy ' With Range("G2:P" & oy) .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideHorizontal).LineStyle = xlContinuous End With End Sub
お礼
どちらもできました。ありがとうございました!
お礼
こちらもできること確認しました。ありがとうございました。