【发布时间】:2012-11-25 00:14:14
【问题描述】:
我有一个包含数据块和中间空行的电子表格。块的大小不同。我有一个公式可以自动填充原始数据,然后将其复制到其他空行,直到到达下一个块。我如何让它选择下一个数据块,以便我的循环可以工作,因为块的大小总是在变化?理想的做法是排除活动单元格后面的数据的某种当前区域属性,因为处于当前状态的循环在每次迭代结束时将活动单元格作为新块中的第一个单元格。
【问题讨论】:
标签: excel vba select dynamic range
我有一个包含数据块和中间空行的电子表格。块的大小不同。我有一个公式可以自动填充原始数据,然后将其复制到其他空行,直到到达下一个块。我如何让它选择下一个数据块,以便我的循环可以工作,因为块的大小总是在变化?理想的做法是排除活动单元格后面的数据的某种当前区域属性,因为处于当前状态的循环在每次迭代结束时将活动单元格作为新块中的第一个单元格。
【问题讨论】:
标签: excel vba select dynamic range
每当我必须循环一些需要从一个区域移动到另一个区域的东西时,我最终会使用 Offset 的组合(如 Range(myRange).Offset(1,0))和通常一个 .End 修改以确保我'm 总是在范围的末尾。作为示例(伪代码)。
Dim lastCell As Range
Dim neededCell As Range
Set lastCell = ActiveRange.End(xlDown) 'picks the last cell down
Set neededCell = lastCell.Offset(2, 0) returns the cell two rows down from the last cell in above range.
警告,我这样做是出于我的想法,它可能需要进行一些调整才能真正起作用...此外,如果您需要朝这些方向发展,还有 xlLeft、xlRight 和 clUP。
另外,如果您需要选择一个新范围,您只需通过偏移量选择一个范围即可。我的代码可能有点脏(还是新的),但这应该可以工作。
Dim bigRange as Range
Set bigRange = ActiveSheet.Range(neededCell.Address & ":" & _
neededCell.Offset(20, 20).Address)
如果你从“D5”处的needCell开始,那应该返回一个“D5:X25”的范围
【讨论】: