> 質問の中で ここでsheet2のA1に氏名を印刷しますは、ここでsheet2のA2に氏名を印刷しますです。そのためA3から項目名が始まります。
> 教えていただきました手直しの分で項目名が表示されません。
質問に書いた配置に誤りがあったということですね?
ただ、Sheet2のA1に名前を表示しようがA2に表示しようが、そのすぐ下から項目名が表示されるはずです。
それが表示されないということは、Sheet1の方の配置説明も違っているのではないですか?
前回の回答ではhoshi7777さんが書いた通り、Sheet1の1行目が項目欄で A1が氏名~以下各項目としてコードを書きましたが、これも1行ずれてるんじゃないですか?
そうであれば、以下のマクロをお試しください。
Sub test02()
Dim s2 As Worksheet, x As Long, y As Long, i As Long, n As Integer, c As Range '変数宣言
Set s2 = Sheets("Sheet2") 'Sheet2をs2とする
With Sheets("Sheet1") 'Sheet1において
x = .Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行を取得しxに代入
y = s2.Cells(Rows.Count, "A").End(xlUp).Row 's2,A列最終行を取得しyに代入
For i = 3 To x '3~xまでをiに代入
With s2 's2において
.Range("A2:B" & y).ClearContents 'データクリア
.Range("A2:B" & y).Borders.LineStyle = xlNone '罫線クリア
End With
s2.Cells(2, "A").Value = .Cells(i, "A").Value '氏名転記
n = 2 'nに2を代入
For Each c In .Range(.Cells(i, "B"), .Cells(i, "L")) 'B~L列のi行各セル
If TypeName(c.Value) = "Double" Then '数値であれば
n = n + 1 'nに1を加算
s2.Cells(n, "A").Value = .Cells(2, c.Column).Value '項目名転記
s2.Cells(n, "B").Value = c.Value '数値転記
End If
Next c '次セルへ進み繰り返し
With s2 's2において
.Cells(n + 1, "A").Value = "合計" '文字入力
.Cells(n + 1, "B").Formula = "=SUM(" & .Range(.Cells(3, "B"), .Cells(n, "B")).Address & ")" '合計計算式入力
.Range(.Cells(2, "A"), .Cells(n + 1, "B")).Borders.LineStyle = xlContinuous '罫線作成
.PrintPreview '印刷プレビュー
End With
Next i '次行に進み繰り返し
End With
End Sub
お礼
何回もお手数おかけして申し訳ありませんでした。 本当にありがとうございました。 大変勉強になりました。
補足
お手数掛けています。本当に申し訳ありません。質問でsheet1は一行目が項目名としていましたが。一行目は空欄で二行目が項目名でした。 そのため項目名が表示されなかったものです。本当に申し訳ありませんでした。よろしくお願いします。