有没有人有一种很好的方法来循环过滤表中的行?
我倾向于需要使用过滤表中的一些数据来填充另一个文档,在这种情况下是一个帐户报表工作表。由于行是不连续的,我之前使用行号填充数据的方法似乎失败了。
SOAwb是一个单独的工作簿,用于填充TSOA表中的数据,大部分代码实际上都可以工作,但仍然包含过滤/隐藏范围的数据。
j是SOAwb上的第一个空行,所以在for循环结束时,当j = j + 1时,下一个空行重复填充过程
For k = 1 To TSOA.DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).Count
SOAwb.Worksheets(1).Cells(j, 4) = TSOA.DataBodyRange(k, 6) 'debit amount
SOAwb.Worksheets(1).Cells(j, 5) = TSOA.DataBodyRange(k, 7) 'credit amt
SOAwb.Worksheets(1).Cells(j, 1) = TSOA.DataBodyRange(k, 3) 'Date
SOAwb.Worksheets(1).Cells(j, 2) = Right(TSOA.DataBodyRange(k, 3), 2) & "-" & TSOA.DataBodyRange(k, 2) 'Reference Number
Select Case TSOA.DataBodyRange(k, 1)
Case "INV"
SOAwb.Worksheets(1).Cells(j, 3) = "Invoice"
Case "CR"
SOAwb.Worksheets(1).Cells(j, 3) = "Credit"
Case Else
MsgBox "Invalid Type"
End Select
j = j + 1
Next
如果k仍然是桌子上的相对行#位置,那将是完美的。有没有人对如何执行此操作有任何建议,或者使用过滤范围将数据(逐行)填充到另一个工作簿的替代方法?
答案 0 :(得分:1)
使用您已直接指定的范围集合,而不是其计数
java.sql.Date
答案 1 :(得分:-1)
隐藏的行有高度= 0
您必须遍历所有已使用的行并仅处理可见的行
For k = 1 To TSOA.DataBodyRange.Rows.Count
和
If SOAwb.Worksheets(1).Cells(j, 4).Height > 0 Then...
与此类似:
For k = 1 To TSOA.DataBodyRange.Rows.Count
With SOAwb.Worksheets(1)
If TSOA.DataBodyRange(k, 6).Height > 0 Then
.Cells(j, 4) = TSOA.DataBodyRange(k, 6) 'debit amount
.Cells(j, 5) = TSOA.DataBodyRange(k, 7) 'credit amt
.Cells(j, 1) = TSOA.DataBodyRange(k, 3) 'Date
.Cells(j, 2) = Right(TSOA.DataBodyRange(k, 3), 2) & "-" & _
TSOA.DataBodyRange(k, 2) 'Reference Number
Select Case TSOA.DataBodyRange(k, 1)
Case "INV": .Cells(j, 3) = "Invoice"
Case "CR": .Cells(j, 3) = "Credit"
Case Else: MsgBox "Invalid Type"
End Select
End If
End With
j = j + 1
Next