プロが教えるわが家の防犯対策術!

蓄積されたデータ(行)を縦(列に)自動で置き換えることはできますか?

「エクセル データ横の入力を縦に自動で変更」の質問画像

A 回答 (1件)

こんにちは!



手っ取り早くVBAでの一例です。
尚、元データはSheet1にあり、Sheet2に表示するとします。
両シートとも1行目は項目行だとします。

標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, j As Long
 Dim lastRow As Long
 Dim wS As Worksheet

  Set wS = Worksheets("Sheet1")
   With Worksheets("Sheet2")
    '//▼Sheet2、2行目以降のデータを一旦消去//
     lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
      If lastRow > 1 Then
       Range(.Cells(2, "A"), .Cells(lastRow, "E")).ClearContents
      End If
    '//▼ココから操作//
     For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
      For j = 3 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2
       If wS.Cells(i, j) <> "" Then '//←念のため//
        With .Cells(Rows.Count, "A").End(xlUp).Offset(1)
         .Value = wS.Cells(i, "A")
         .Offset(, 1) = wS.Cells(i, "B")
         .Offset(, 2).Resize(, 2).Value = wS.Cells(i, j).Resize(, 2).Value
        End With
       End If
      Next j
     Next i
      .Activate
   End With
    MsgBox "完了"
End Sub

※ 関数でないのでデータ変更があるたびに
マクロを実行する必要があります。m(_ _)m
    • good
    • 2
この回答へのお礼

助かりました

ありがとうございます❗
大変助かりました。

またよろしくお願いします。

お礼日時:2020/06/11 03:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!