使用C#在excel中查找一对值

时间:2019-06-27 11:12:55

标签: c# excel

我想在excel工作表中找到该行,其中A列和B列满足我的条件。 C列包含我要获取的值。 示例:我有以下表格(对不起,表格的html标记似乎无法正常工作):

ColumnA ColumnB ColumnC
A X 1
A Y 2

我想获取A列为“ A”而B列为“ Y”的行,并从C列获取关联的值,在这种情况下为“ 2”。

我已经能够找到第一行中“ A”的第一个条目。我正在使用excel.rangeFind。但是,我想知道A列为“ A”而B列为“ Y”的行。

``

Excel.Range excelRangeA= workSheet.Columns["A:A"];
var rngFind = excelRangeA.Find("A");
string value= (excelApp.Cells[rngFind .Row, 3] as Excel.Range).Value;

``

我的代码为我提供了C列中的值1。但是我想拥有该值,其中A列为“ A”,B列为“ Y”,所以我想从C列获取值“ 2” ..

有人有想法吗?我认为它可以与excel.range.findNext一起使用。这是我到目前为止尝试过的:

Excel.Range excelRangeA= workSheet.Columns["A:A"];
var rngFind = excelRangeA.Find("A");

if (excelApp.Cells[rngFind.Row, 1].Offset[0, 1].Value == "Y")
        {
            string value= (excelApp.Cells[rngFind.Row, 3] as Excel.Range).Value;

            MessageBox.Show(value);
        }
        else
        {
            rngFindParam = excelRangeA.FindNext("A");
        }

1 个答案:

答案 0 :(得分:0)

尝试一下:

Excel.Range excelRangeA = workSheet.Columns["A:A"];
var rngFind = excelRangeA.Find("A");
var found = false;
while (rngFind!=null || !found)
{
    if (rngFind.Offset[0, 1].Value == "Y")
    {
        string value = rngFind.Offset[0, 2].Value;
        found = true;
        MessageBox.Show(value);
    }
    else
    {
        rngFind = excelRangeA.FindNext(rngFind);
    }
}