いくつかの癖を含む単一のデータ列を使用しています。問題の詳細の下に VBA コードを含めました。
データの編成方法の例:
- 名前
- 裁判所
- オファー
- 裁判所
- オファー
- オファー
- 裁判所
- オファー
ただし、データの収集方法により、Court が常にリストされるとは限りません。データを転置すると、これにより列が破棄されます。私が書いた VBA は、Offe のインスタンスがあるたびに、前のセルが Court の場合は Offe を定期的に出力することによって、それを修正しようとしていました。前のセルが Court でなかった場合は、前の Court (CourtCell として保存) を出力し、Offe を出力して次のセルに進みます。
Object Required エラーが発生します。
Sub CourtAdder()
Dim lngRowLast As Long, _
lngRowPaste As Long, _
lngColOffset As Long
Dim rngCell As Range, _
rngDataSet As Range
Dim strSourceTab As String, _
strOutputTab As String
'Tab name containing source data. Change to suit.
strSourceTab = "Sheet1"
'Tab name for data output. Change to suit.
strOutputTab = "Sheet2"
lngRowLast = Sheets(strSourceTab).Cells(Rows.Count, "A").End(xlUp).Row
'Assumes the original dataset is in Column A and starts at Row 1. Change to suit.
Set rngDataSet = Sheets(strSourceTab).Range("A1:A" & lngRowLast)
Application.ScreenUpdating = False
For Each rngCell In rngDataSet
If Left(rngCell.Value, 5) = "Court" Then
CourtCell = ActiveCell.Value
End If
If Left(rngCell.Value, 4) = "Offe" Then
If Left(Rng.Cell.Value.Offset(-1, 0), 4) = "Cour" Then
lngRowPaste = 27
lngColOffset = 1
Else
ActiveCell.PasteSpecial (xlPasteValues)
lngRowPaste = 1
lngColOffset = 1
End If
Else
lngRowPaste = lngRowPaste + 1
lngColOffset = 1
End If
' Sheets(strOutputTab).Cells(lngRowPaste, lngColOffset).Value = rngCell.Value'
' lngColOffset = lngColOffset + 1 '
Next rngCell
Application.ScreenUpdating = True
End Sub