VBA,向上/向下填充行以与最后一行对齐
Posted
技术标签:
【中文标题】VBA,向上/向下填充行以与最后一行对齐【英文标题】:VBA, Fill up/down rows to align with last row 【发布时间】:2020-11-15 17:45:14 【问题描述】:我正在尝试删除行直到它遇到我的最后一行或填写行以与最后一行对齐。
有时我的工作表如下所示,我需要删除行以与我的最后一个行号对齐。:
但有时我的工作表如下所示,我需要填写其他列:
有没有可以做到这一点的功能?我发现很难确定何时填满或填满。
谢谢
【问题讨论】:
如果您选择了第 7 列作为一个标识符,那么您应该选择另一个作为第二个标识符,并计算它们的最后一行,并根据它们最后一行之间的差异进行操作。如果这些空单元格中有公式,则需要使用Find
和 xlValues
。
【参考方案1】:
记住使用 UsedRange
的众所周知的注意事项,您可以尝试一下
Dim lastRow As Long
With ActiveSheet ' <- change it to your actual sheet reference
With .UsedRange
lastRow = .Rows(.Rows.Count)
End With
End With
【讨论】:
【参考方案2】:请测试下一个代码。它假定参考列将是第七个,而要检查 0 公式值的列是第六个。您的图片不包含列标题...
Sub DeleteRowsOrFillDownDiscontinuous()
Dim sh As Worksheet, lastR As Long, lastR1 As Long, lastCol As Long
Set sh = ActiveSheet
lastR = sh.Range("F" & rows.count).End(xlUp).row
lastR1 = Range("E" & rows.count).End(xlUp).row
lastCol = sh.cells(lastR1, Columns.count).End(xlToLeft).Column
If lastR < lastR1 Then
sh.rows(lastR + 1 & ":" & lastR1).EntireRow.Delete xlUp
ElseIf lastR > lastR1 Then
sh.Range("A" & lastR1, "E" & lastR1).AutoFill _
Destination:=sh.Range("A" & lastR1, sh.Range("E" & lastR))
sh.Range("G" & lastR1, "AG" & lastR1).AutoFill _
Destination:=sh.Range("G" & lastR1, "AG" & lastR)
sh.Range("AI" & lastR1, sh.cells(lastR1, lastCol)).AutoFill _
Destination:=sh.Range("AI" & lastR1, sh.cells(lastR, lastCol))
Else
MsgBox "Nothing te be processed. Everything aligned..."
End If
End Sub
已编辑:
修改了F:F列的代码作为参考,AH:AH也不能改变,现有列要在AH列之后处理。
请对其进行测试并发送一些反馈。
【讨论】:
谢谢。在我的示例数据中,第 F 列或第 6 列在第 4248 行结束,而我的其他列在 4250 结束。这段代码似乎用最后一行值填充了我的 F 列,但它应该删除 2 行以满足最后一行。这有帮助吗? @excelguy 提到的两列中的哪一列应该被视为参考。不需要修改的那个。你图片中以 2.6 结尾的那个……你图片中的第 7 个。您希望它是 F:F 列吗?如果是的话,代码可以很容易地调整...当你说“我的其他专栏”时,你是什么意思? 他们中的哪一个?在您的图片中,相邻列的长度不同。您命名的“我的其他栏目”是否有不同的长度? @excelguy 你什么也没说...我根据你的评论分别调整了代码,以考虑参考单元格 F:F。 在我的电子表格中,F 列和 AH 列将始终是不可修改的列。无论是删除还是填写,我工作表中的所有其他列都应遵循这些列。这有帮助吗? @excelguy 按照您在上一个 cmets 中的说明调整代码以处理工作表。但我不能阻止自己说你应该在你的问题中说明所有这些。如果您的图片没有显示任何内容,您怎么能想象有人会理解哪些列需要更改。从这个角度?请测试更新的代码并确认它可以按您的需要工作。如果不是,请清楚描述它应该做什么。以上是关于VBA,向上/向下填充行以与最后一行对齐的主要内容,如果未能解决你的问题,请参考以下文章
Excel vba将公式从一列自动填充到Excel中的最后一列