以编程方式获取Excel列的最后一个非空单元格

时间:2013-08-12 16:34:24

标签: c# excel

我的Excel表格总是如下所示

A |  B  |  C
  |     |    
  |     |  something here maybe 
1 |  x  |  k
2 |  y  |  l
3 |  z  |  n
  |  j  |  
  |  j  |  
   ...
  |     |  

我想获取A列中最后一个非空单元格的值。一列总是从A6开始并持续一段时间,之后是空的,但是列B持续一段时间。这会产生如果我使用下面的代码:

sh = app.Workbooks.get_Item("Workbook1.xlsx").Worksheets.get_Item("Sheet1");
fullRow = sh.Rows.Count;
lastRow = sh.Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;

我在最后一行得到B非空的最后一行。这可能是A开始为空的地方以下50行。有没有办法用C#做而不迭代所有值?

修改

事实证明,A列是基于C列的,所以我应该检查C.因为事实证明C可能因为函数而产生与A相同的结果。幸运的是,列D没有相同的问题所以如果我使用上面的代码改变1为4它的作品就像一个魅力。

1 个答案:

答案 0 :(得分:1)

修改 对不起,我最初误解了这个问题,感谢KekuSemau清除了这个问题!

尝试:

sh.Range["A1", sh.Cells[1,sh.Rows.Count]].End(Excel.XlDirection.xlDown).Value;

此外,如果您知道列中没有空单元格,则可以使用CountA:

var usedRows = xlApp.WorksheetFunction.CountA(xlWorkSheet.Columns[1]);

Source