首页 > 解决方案 > 比较三个范围(2 vs 1)并增加价值(advancefilter)

问题描述

我有 2 张桌子。

一个在表 1 (f2) 上,一个在表 2 (f1) 上。我找到并修改了以下代码来比较每个表之间的值:

Sub Complète()
Dim lg&, f1 As Worksheet, f2 As Worksheet
Dim RedRange As Range
Dim i, y, x, z As Integer


Application.ScreenUpdating = False
Set f1 = Sheets("Feuil2")
Set f2 = Sheets("Feuil1")
f1.Activate
lg = Application.Max( _
    f1.Cells.Find("*", , , , xlByRows, xlPrevious).Row, _
    f2.Cells.Find("*", , , , xlByRows, xlPrevious).Row)

Range("r2") = "=COUNTIF(Feuil1!b3:b" & lg & ",b3)=0"

Range("a2:e2" & lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("r1:r2"), CopyToRange:=Range("g2:k2"), Unique:=True


Range("g3:j" & [g65000].End(xlUp).Row) _
.Copy Destination:=f2.Range("a" & Rows.Count).End(xlUp)(2)

它运行良好,但我不明白它是如何工作的......我的问题是:我想添加一个我不想复制的 BAN 名称范围。

目前:

  1. 如果名称在 f2 上并且在 f1 上,则名称不是副本。(按预期工作)

  2. 如果名称在 f1 上而不在 f2 上,则名称为副本。

我想更改第 2 行以添加新的名称范围 (ExclusionRng) :

  1. 如果名称在 ExclusionRng 中,则即使名称在 f1 上且不在 f2 中,也不会被复制。(但如果名称不在 ExclusionRng 中,则进行复制)

由于我是 vba 的初学者,我不明白为什么在 lg 的昏暗区域中有一个“&”。Advancefilter 非常快,但我以前从未使用过...

标签: vba

解决方案


推荐阅读