在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中生成?
答案 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列的辅助列复制值。