excel 索引匹配VBA公式未更新到正确的行

ijxebb2r  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(137)

我的代码运行,但MATCH('Worksheets1'!$D2,没有根据它所在的行进行更改或更新。
例如,如果我的工作表包含2000行要进行索引匹配,则公式仍将只包含MATCH('Worksheets1'!$D2作为其引用的单元格。
如何根据代码所在的行号更改单元格的值?

Sub trial()
On Error Resume Next

Dim Dept_Row As Long
Dim Dept_Clm As Long

Table1 = Worksheets1.Range("D:D") 
Table2 = Worksheets2.Range("A:B") 
Dept_Row = Worksheets1.Range("A2").Row 
Dept_Clm = Worksheets1.Range("A2").Column

For Each cl In Table1

    If IsEmpty(cl) Then Exit Sub
                                            
    If Not IsEmpty(cl) Then Worksheets("Worksheets1").Cells(Dept_Row, Dept_Clm) = _
      "=INDEX('Worksheets2'!$B:$B,MATCH('Worksheets1'!$D2,'Worksheets2'!A:A,0)) "

    Dept_Row = Dept_Row + 1

Next cl

Exit Sub

我创建了这个循环,希望公式能更新,使它
部门行=部门行+ 1。
我尝试了两种方法,一种是让它保持原样,另一种是在公式结束后将代码引入引号,但是,我的代码只能按原样运行。
我想做加1,但我怀疑这是否可行,它只会把单元格的值D2变成D3。

busg9geu

busg9geu1#

不需要循环,所有代码都可以归结为:

With Worksheets("worksheet1")
    Dim lastRow As Long
    lastRow = .Range("D" & .Rows.Count).End(xlUp).Row
 
    .Range("A2:A" & lastRow).Formula = "=INDEX('Worksheets2'!$B:$B,MATCH(D2,'Worksheets2'!A:A,0))"
End With
vc9ivgsu

vc9ivgsu2#

问题不清楚,但我猜这就是你要找的:

"=INDEX('Worksheets2'!$B:$B,MATCH('Worksheets1'!$D" & Dept_Row & "'Worksheets2'!A:A,0))"

相关问题