我正在使用包含一些怪癖的单列数据。我在问题的详细信息下方包含了 VBA 代码。
数据组织方式的示例:
- 姓名
- 法庭
- 优惠
- 法庭
- 优惠
- 优惠
- 法庭
- 优惠
但是,由于收集数据的方式,法院并不总是列出。一旦我转置数据,这就会抛出我的列。我写的 VBA 试图纠正这个问题,只要有 Offe 的实例,如果前面的单元格是 Court,则定期打印 Offe。如果上一个单元格不是 Court,则打印上一个 Court(另存为 CourtCell),然后打印 Offe 并继续下一个单元格。
我收到一个需要对象的错误。
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