在数据集 Excel 中分配的最后一行不正确

Posted

技术标签:

【中文标题】在数据集 Excel 中分配的最后一行不正确【英文标题】:Incorrect Last Row Assigned In Data Set Excel 【发布时间】:2016-08-26 13:40:18 【问题描述】:

我正在尝试通过数据集为动态迭代设置最后一行,并且遇到了我以前从未遇到过的错误。出于某种原因,lastRow 被设置为数据开始之前的行。如果数据从第 21 行开始,它会将 lastRow 设置为 20。brokerLocationInTable 是传递给函数的范围对象,表示代理名称在数据集中的位置。

代码导致错误

lastRow = CoverageAndRateSheet.Range("E" & brokerLocationInTable.Row).CurrentRegion.Rows.Count

数据的存储方式有点奇怪。经纪人名称在 D 列中,紧邻该名称的是 E 列中与该经纪人相对应的客户列表。一旦该经纪人的客户列表用尽,就会出现一个空白行,并且下一个经纪人及其相应的客户列表开始,这就是为什么我使用“控制向下移动”方法而不是从工作表底部向上迭代的原因。

【问题讨论】:

您似乎只返回该区域中的行数,而不是该区域中的最后一行。例如,如果您的代理从第 30 行开始,并且有 10 行,因此最后一行位于第 39 行,则 lastRow 变量仍将只有 10,因为您的代码仅返回行数。如果您想使用“control shift down”方法,您将需要它来获取带有.End(xlDown).Row 的最后一行。 @tigeravatar 宾果游戏。就是这样。应该意识到 .count 会返回一个行数,而不是一个实际可操作的行号。谢谢您的帮助!发表一个答案,我会选择它。 Error in finding last used cell in VBA的可能重复 【参考方案1】:

使用

With CoverageAndRateSheet.Range("E" & brokerLocationInTable.row)
    lastRow = .CurrentRegion.Rows(.CurrentRegion.Rows.Count).row
End With

因为

myRange.CurrentRegion.Rows.Count

只返回myRange当前区域的行数

myRange.CurrentRegion.Rows(.CurrentRegion.Rows.Count)

返回myRange当前区域的最后一行

myRange.CurrentRegion.Rows(.CurrentRegion.Rows.Count).Row

返回myRange当前区域最后一行的行索引

【讨论】:

@StormsEdge,你试过了吗?

以上是关于在数据集 Excel 中分配的最后一行不正确的主要内容,如果未能解决你的问题,请参考以下文章

准时下班系列!Excel合集之第6集—如何拆分和统计单据金额

Datagridview 不反映数据集更改

为 Excel 堆积条形图的点着色与表中分配的值相关

Delphi在提取数据填充到Grid上面总是一行行的闪烁加载、如何解决?

访问在函数中分配的变量[重复]

准时下班系列!Excel合集之第1集—填充不连续单元格