使用Excel互操作从符合条件的范围中检索信息

时间:2011-11-21 19:08:54

标签: c# excel com

oSheet = (Excel._Worksheet)xlWorkBook.ActiveSheet;   
oRng = oSheet.get_Range("T10", "T343");

范围oRng包含double类型的值。列T中的每个单元格显示关联行的最大数量。我怎样才能知道有多少1,2的3 ......直到10在这个范围内。其次,如果有20行值= 3,我需要从这些行复制列ABC并存储它们供以后使用。我需要计数每个值的行数从1到10

1 个答案:

答案 0 :(得分:0)

以下是一些可能足以让您前进的一般性观察:

Excel.Range有一个AutoFilter方法,您可以连续使用您感兴趣的每个值(即1到10)。获得AutoFilter返回的各个范围后,您可以向他们查询您感兴趣的特定信息。有关此方法的相关问题,请参阅C# Excel Automation: Retrieving rows after AutoFilter() with SpecialCells() does not seem to work properly

或者,您可以执行类似创建简单字典的操作,然后在迭代T列时填充该字典。例如,字典可以是Dictionary>类型。

当您继续执行T列时,您会在每个单元格中遇到一个值。如果之前未见过单元格值,则将其添加为Dictionary的新键。对于字典的键/值对中的关联值,可以创建一个新的List,并将相应的行号作为其第一个元素。

如果之前看过单元格值,则在字典中查找,然后将相应的行添加到与该键关联的列表中。

在一天结束时,您的词典键包含在列T中找到的所有值。与每个值关联的行数仅是关联列表中的元素数。使用列表中的行值,您可以找到" A [行值]"," B [行值]"和" C [行值]"。