好的,我回来了。这次,我试图快速选择与单独列表中的值匹配的范围内的所有值,我的第一次迭代将清除无效ID的内容,而我的第二次迭代将选择这些值,然后替换它们具有相应的新值。
我问了另一个有关VBA的问题,并指出我曾尝试过自学并找到解决这些问题的资源,但人们似乎对我在问的问题感到不满,如果您至少可以指导我我可以学习到有关这些问题的地方(甚至在某个地方我可以学习基本逻辑并拥有可用功能的列表,而无需经历所有“如何制作第一个Excel VBA以解决没人关心的问题”)会很感激的)
无论如何,我试图观看一些视频,然后一起破解一些东西,但是很明显,他们使用的功能无法适应其他用途。这是我目前所拥有的:
Sub FilterElim()
finalRow = Range("g2").End(xlDown).Row
Range("A1").ClearContents _
Action:= xlClearContents, _
CriteriaRange: Range("Sheet4!B1:B10"), _
Unique:= False
End Sub
因此,基于一些有用的问题,我正在进行编辑以包括示例和期望的结果
所需的最终结果:
我想我可能需要在ClearContents之前根据“标准”进行某种选择,但是我没有发现任何有关如何实现该目标的信息。谢谢,麻烦您了。
| Contractor ID | Cont Name | Proj 1 | Proj 2 | Proj 3 | | | Old ID | Reconciliation |
|-----------------|-------------------|--------|--------|--------|---|---|--------|----------------|
| C1001 | Boba Fet | P1120 | | | | | P1001 | Void |
| C1003 | Jules Winnfield | P1031 | P1045 | | | | P1002 | P1010 |
| C1002 | Dom Cobb | P1001 | | | | | P1005 | Void |
| C1010 | Patrick Verona | P1020 | P1224 | P1251 | | | P1020 | Void |
| C1007 | Matt Damon | P1008 | P1005 | P1300 | | | P1045 | P1100 |
| C1004 | Ned Plimpton | P1002 | | | | | P1224 | P1300 |
| C1020 | Derek Zoolander | P1020 | P1290 | | | | | |
| C1009 | Charles Marlow | P1002 | P0090 | | | | | |
| C1011 | Robert Jordan | P1119 | | | | | | |
| C1015 | Perrin Aybara | P1200 | P1224 | | | | | |
| C1005 | Fuzzy Dunlop | P1005 | | | | | | |
| C1008 | Thomas A Anderson | P1001 | P1000 | | | | | |
| | | | | | | | | |
答案 0 :(得分:3)
是什么让您选择VBA解决方案? 不了解数据和预期结果就很难做很多事情。
非VBA选项:
=IFERROR(INDEX($G$2:$G$15,MATCH(A32,$F$2:$F$15,0)),B32)
对于VBA选项,您可以尝试:
Option Explicit
Sub update_id()
Dim D1 As Object: Set D1 = CreateObject("scripting.dictionary")
Dim R1 As Range: Set R1 = Range("A2:A32")
Dim R2 As Range: Set R2 = Range("E2:E15")
Dim Rtmp As Range
For Each Rtmp In R2
D1(Rtmp.Value) = Rtmp.Offset(0, 1).Value
Next Rtmp
For Each Rtmp In R1
If D1.exists(Rtmp.Value) Then Rtmp.Offset(0, 1) = D1(Rtmp.Value)
Next Rtmp
End Sub
进行以下设置:
同样,如果没有更好地了解您的数据和问题,就很难做到更加精确。