在 VB.NET 中,我想获取使用过的行,所以我写道:
Dim objWorksheet As Excel.Worksheet = workbook.Sheets(2)
Dim lastRow = objWorksheet.UsedRange.Rows.Count
lastRow 的数量是减 比使用的行。我搜索了该网站,有人建议:Dim range As Excel.Range = objWorkSheet.UsedRange
Dim lastRow = range.Rows.Count
这返回的行数少于实际使用的行数。解决方案如图:
我找到了 this question 这是对最后使用的行的整体理解。
UsedRange.Rows.Count
表示从有数据的第一行到有数据的最后一行,这意味着您可以在第一个非空行到最后一个非空行之间有空行,这不会影响结果,但如果第一行为空,结果将比实际的非空行少一,如果前两行为空,结果将少两,所以链接问题说永远不要使用UsedRange.Rows.Count
得到最后一行。
最佳答案
尽量避免UsedRange
.这可能会产生误导。例如,如果您填写范围 A1:B5
并清除 B
列的内容,然后 UsedRange.Columns.Count
将返回 2
- 因为 Excel 会记住带有格式的单元格并将它们包含在 UsedRange 中。
更新
要获得真正的最后一列和最后一行,请使用以下代码:
lRealLastRow = _
Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row
lRealLastColumn = _
Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns, xlPrevious).Column
更新 2
关于excel - Worksheet.UsedRange.Rows.Count 返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50434444/