Excel范围C#中的非空单元格

Ken*_*nny 5 c# excel range

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

如果我们使用

currentRange.End[XlDirection.xlToRight]
Run Code Online (Sandbox Code Playgroud)

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

另外一个选项:

CreateRange(currentRange, lastRangePossibleinRow).SpecialCells(...)
Run Code Online (Sandbox Code Playgroud)

我有3个问题:

  1. currentRange.End[XlDirection.xlToRight]似乎是一个不可靠的解决方案.例如,如果currentRange为空,则无论如何都会返回1个单元格(本身).

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

  3. 如何获取此范围中非空的单元格集合?.SpecialCells(xlCellTypeConstants | xlCellTypeFormulas) 将无法工作,例如,如果找到non,.SpecialCells(xlCellTypeConstants)将抛出异常:找不到单元格.

Geo*_*iev 1

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

  1. 目标是您期望非空白的范围
  2. 迭代它们
  3. 检查是否为空
  4. 将 false 的 col# 存储在表单中的数组中RC[#]
  5. 然后仅选择那些通过Range("Array(1),Array(2),...").Select.

抱歉,伪代码......并且迟到了两个月。=/