Excel中的非空单元格Range C#

我想从当前单元格中select所有非空单元格到行的最后一个单元格。

如果我们使用

currentRange.End[XlDirection.xlToRight] 

当非空单元不是连续的链接时,这不是一个好方法。 例如,单元格A1,A2,A3,A5,A6不为空,那么RangeA1.End[XlDirection.xlToRight]只能达到A3,即连接到RangeA1的最后一个非空单元格。

另外一个select:

 CreateRange(currentRange, lastRangePossibleinRow).SpecialCells(...) 

我有3个问题:

  1. currentRange.End[XlDirection.xlToRight]看起来像一个不可靠的解决scheme。 例如,如果currentRange为空,则无论如何(本身)将返回1个单元格。

  2. 如何有效地将当前单元格中的select扩展到Row中的最后一个单元格? CreateRange(currentRange, get_range(currentRange.Row + sheet.Columns.Count.ToString())) ? 也许有更好的解决办法。

  3. 如何获得这个范围内不是空的单元格的集合? .SpecialCells(xlCellTypeConstants | xlCellTypeFormulas)将不起作用,例如,如果找不到,则.SpecialCells(xlCellTypeConstants)将抛出一个exception:没有find单元格。

我是VBE的新手,但我认为一个解决方法是

  1. 瞄准你期望非空白的范围
  2. 遍历它们
  3. 检查是否空白
  4. RC[#]forms存储数组中错误数列的列号
  5. 然后selectRange("Array(1),Array(2),...").Select

对不起,这个伪代码…迟了两个月。 = /