簡體   English   中英

有沒有辦法在Excel中找到范圍內的范圍?

[英]Is there a way to find a range within a range in Excel?

我有一個看起來像這樣的xls文件:

http://i.stack.imgur.com/d2fux.png

嗯,這就像依賴於標題的同一條信息,在這種情況下,標題是行22164,下一個標題是22178,依此類推。

在GUI中,我有一些東西可以讓用戶從參數中選擇,並且可以選擇從xls文件加載信息,具體取決於他們的選擇,例如,他們可以選擇:

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);

我創建了另一個對象,以xls所具有的相同順序和格式存儲用戶的選擇。 讓我們稱那個對象[,]就像'look4it'

我試圖找到一個方法,我可以告訴:我想在'valueArray'中找到'look4it',該方法的答案是A22164:E22164所以我可以在那之后計算從'valueArray'復制的范圍並使用正確的信息。

我嘗試過Range.Find,但它似乎是在Range中查找一個獨特的信息,並返回地址,但我發現沒有任何東西可以讓我在另一個內容中查找Range的內容。

任何幫助表示贊賞!

我認為在這種情況下我要做的是首先構建一個由每個標題及其位置組成的查找列表。 對於列表中的鍵,我會將標題單元連接在一起以生成單個查找值。 所以緊跟在您的代碼之后:

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);
    }
}

請記住,這是臨時的,我還沒有測試過。 我不確定Range.get_Value方法究竟如何將數據放入數組中,因此維度可能是錯誤的。 此外,我正在假設如何根據您提供的數據圖像識別電子表格中的標題行。

無論如何,一旦構造完成,您可以執行簡單的查找以提取標題的行號:

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

這有助於回答你的問題嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM