【问题标题】:Vlookup Multiple Criteria C#Vlookup 多条件 C#
【发布时间】:2018-09-03 18:26:16
【问题描述】:

我有两个数据网格视图: datagridView1,与 col A 和 B (Cells[0], Cells1):

datagridView2 (Cells[0], Cells[1], Cells[2]):

我想比较两个表之间的值,如果: - the value in datagridView1.rows[i].Cells[0].value = datagridView2.rows[j].Cells[0].value AND the value in datagridView1.rows[i].Cells[1].value = datagridView2.rows[j].Cells[1].value THEN write in datagridView1.rows[i].Cells[2].value the value from the third column in datagridView2:

【问题讨论】:

    标签: c# indexing match vlookup


    【解决方案1】:

    我相信您正在寻找这样的东西。这取决于您如何填充DataGridViews。也没有应该实施的错误处理。

    for (var i = 0; i < dataGridView1.Rows.Count; i++)
    {
        var r1 = dataGridView1.Rows[i];
        var r2 = dataGridView2.Rows[i];
    
        if (r1.Cells[0].Value == r2.Cells[0] && r1.Cells[1].Value == r2.Cells[1])
            r1.Cells[2].Value = r2.Cells[2].Value;
    }
    

    【讨论】:

    • 我正在从 excel 文件中填充数据。应该先将 datagridView 单元格转换为字符串。
    • 我已经通过添加另一个“for 循环”来修改您的代码,因此变量 i 正在计算 datagridView1 中的行数,而变量 j 正在计算 datagridView2 中的行数。它运作良好,但前提是我有空单元格。如果我填充的数据不能再匹配了。
    • 这似乎只有在匹配的单元格位于同一行时才有效。
    • 我认为这就是您对问题的描述所想要的。如果要匹配任何行,则需要两个 for 循环。
    【解决方案2】:

    这是我添加的第二个循环以匹配任何行并且工作正常:

            for (var i = 0; i < src1.Rows.Count; i++)
    
            {
                var r1 = src1.Rows[i];
    
                for (var j = 1; j < src2.Rows.Count; j++)
                {
                    var r2 = src2.Rows[j];
    
                    if (r1[0].Equals(r2[0]) && r1[1].Equals(r2[1]))
                    {
                        r1[2] = r2[2];
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多