分享

c#

 偷心无痕 2015-03-29

我让 excel 总是看起来象下面的工作表

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

我想要获取的最后一个非空单元格的列中的值。一列总是开始于 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 的作用也许收益率具有相同的结果。幸运的是,并没有同样的问题了,因此如果使用上面的代码更改为它的工作原理的 4 1 喜欢魅力列 D。

问的13 年 8 月 12 日在 16:34
idipous
1,408818
    
是 sh。即,细胞从零开始,你可以做sh.Cells[fullRow, 0]吗?我不认为如此,但值得检查。— —道格然后 13 年 8 月 12 日在 16:42
2  
您的代码是好你需要的东西。唯一的可能性,我能想到的它给你这个结果,是如果你有任何的公式在列 A 中的 '空' 单元格这些可能是公式返回空字符串,像="".— — KazJaw 13 年 8 月 12 日在 17:06
    
@DougGlancy 我已经累了,它将引发异常。— — idipous 13 年 8 月 12 日在 18:04
    
@KazJaw 我会检查它但我相当肯定它是否有任何公式。— — idipous 13 年 8 月 12 日在 18:06
3  
@idipous,换句话说,尝试检查手动在 excel 文件中,使用ctrl+arrows,在那里运动将停止.然后分析单元格的内容。— — KazJaw 13 年 8 月 12 日在 18:14

1 个回答

出票 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]);

回答的13 年 8 月 12 日在 17:12
赛斯 · 摩尔
2,8991231
    
对不起为 downvote,但这是真的起到反作用。在 OP 已经使用Range.End函数即按 ALT Cursorkeys 的编程等效形式。无需篡改发送键和寻找Selection到走开了。— — KekuSemau 13 年 8 月 12 日在 17:52
    
是的对不起,我的意思按 CTRL 箭头。— — KekuSemau 13 年 8 月 12 日在 18:00
    
的问题是我不是在 A1 但 A6 总是因为这是与以往 5 细胞被毫无兴趣,我在那个特定的时刻我可以用类似于sheet.get_Range("A6",????).End;?— — idipous 13 年 8 月 12 日在 18:09

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多