最快的方式来枚举或查找所有空的Excel单元格并更改其样式或执行其他处理

时间:2013-05-17 09:46:49

标签: c# .net excel ms-office office-interop

这可能是枚举或迭代的最佳方式,或者只是在Excel中查找具有特定数据结构的空单元格或单元格,稍后一旦发现它就会对其进行一些处理。

我厌倦了Range,Value,Value2等,但是当Excel Sheet相当大时需要相当长的时间。我相信必须有其他一些有效的方法。 如果你能展示一些示例片段,那就太好了。

2 个答案:

答案 0 :(得分:1)

答案很简单:从excel中获取一批数组(搜索SO以获取方法) - 测试空单元格的erray值,然后仅访问excel中的空单元格。

这有点麻烦,但是因为迭代每个单元格比简单地批量获取所有数据要慢得多。

答案 1 :(得分:1)

要查找空白单元格,请使用范围对象的.SpecialCells方法。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.specialcells(v=office.11).aspx

.specialCells方法返回匹配条件的范围对象(即xlCellTypeVisiblexlCellTypeBlanks等)。然后,您可以迭代此范围以执行格式化等。

更新我不是C#程序员,但我可以告诉你我将如何在VBA中执行此操作。假设interop暴露了大多数/所有相同的方法和功能,您应该希望能够为您的目的翻译它。

Sub ColorVisibles()
Dim rng As Range
Dim rngBlanks As Range
Dim blanksExist As Boolean

'define your range
Set rng = Range("A1:AA300")

'check to make sure there are blank cells in the range:
blanksExist = Application.WorksheetFunction.CountBlank(rng) > 0

If blanksExist Then
    Set rngBlanks = rng.SpecialCells(xlCellTypeBlanks)
    rngBlanks.Interior.Color = vbYellow

Else:
    MsgBox "No blank cells exist in the specified range.", vbInformation
End If

End Sub