根据列条件在Excel中复制重复行

时间:2013-11-13 13:16:54

标签: excel vba excel-vba

在Excel中的工作表中添加新行时,我希望确保如果列D和E一起存在于另一个现有行的D和E列中,则该现有行中的列F将复制到F中的列F中。新排。

  A    B    C    D    E    F
  A    B    C    D    E    F
  A    B    C    D    E    F
 NEW  NEW  NEW  NEW  NEW  NEW

这可以使用IF函数完成还是更容易在VBA中生成?

2 个答案:

答案 0 :(得分:0)

试试这个小宏:

Sub dural()
    Dim N As Long
    N = Cells(Rows.Count, "D").End(xlUp).Row
    Dim i As Long
    d = Cells(N, "D").Value
    e = Cells(N, "E").Value

    For i = N - 1 To 1 Step -1
        dt = Cells(i, "D").Value
        et = Cells(i, "E").Value
        If d = dt And e = et Then
            MsgBox "match found"
            Cells(N, "F").Value = Cells(i, "F").Value
        Exit Sub
        End If
    Next i
    MsgBox "no match found"
End Sub

首先在新行中填写 E D 单元格,然后运行宏。

答案 1 :(得分:0)

您可以使用公式创建可以找到适当值的辅助列。

公式必须定义为数组公式,因为我们需要从第一次检查的匹配中返回一个数组,因此我们可以为第二次测试准备一个数组。

首先,我们从第一个测试开始构建一个数组,然后只给出第二列中的值,这些值对应于第一列中的匹配项:IF($E$1:$E$10=E1,$D$1:$D$10)

然后从该数组中,我们寻找第二个值,并得到位置:MATCH(D1,TheArray,0)

从这些值开始,我们在列F中查找匹配值:INDEX($F$1:$F$10,ThePosition)

将所有内容放入一个公式中

=INDEX($F$1:$F$10,MATCH(D1,IF($E$1:$E$10=E1,$D$1:$D$10),0))

请勿按Enter键 - 请记住我们必须让excel知道它是一个数组公式吗?要做到这一点,不要只按Enter键,按 CTRL + SHIFT + ENTER - 如果你做得对,你应该得到奖励在公式周围{}

{=INDEX($F$1:$F$10,MATCH(D1,IF($E$1:$E$10=E1,$D$1:$D$10),0))}

然后,您可以隐藏列F,或者从数据中F列的辅助列复制值。