如何用VBA定义始终为最后9行数据的动态范围?
VBA实现最新9条主题数据提取到计分卡
核心代码调整
你只需要通过简单算术运算定义First变量,再加上容错判断即可:
' 获取B列最后一行行号 Last = Cells(Rows.Count, "B").End(xlUp).Row ' 计算起始行:从最后一行往上数9行(包含最后一行本身) First = Last - 8 ' 容错处理:确保起始行不会小于1(避免数据表行数不足9行时出错) First = Application.WorksheetFunction.Max(1, First) ' 从最新行倒序遍历到起始行 For i = Last To First Step -1 ' 假设主题名称在B列,判断当前行是否为目标主题 If Cells(i, "B").Value = "你的目标主题名称" Then ' 复制当前行指定单元格(示例为D列)到计分卡的对应位置 Sheets("计分卡").Range("B2").Value = Cells(i, "D").Value ' 找到目标后直接退出循环,无需继续遍历 Exit For End If Next i
关键说明
First = Last - 8:因为要覆盖9行数据(从Last到Last-8,首尾都算),如果不需要包含最后一行才用Last - 9,根据你的需求取最新9个条目,所以用减8。- 容错判断
Max(1, First):当数据表还没更新满9行时,避免First变成负数导致循环出错。 - 倒序遍历+
Exit For:从最新行开始找,找到目标主题就停止,比正序遍历效率更高,符合你取最新条目的需求。
内容的提问来源于stack exchange,提问作者Funsizeracing
相关产品推荐
相关产品推荐

