如何使用 Match 函数并引用它 returns 的行号?

How do I use a Match function and reference the row number it returns?

我会尽力解释这一点。我正在处理一个包含大约 150 列和 2,500 行的电子表格。在 D 列中,有一个对该行唯一的标识号。我需要针对特定​​ ID 号(比如 B5555)对该列进行过滤,然后从该行的 AB、O 和 M 列中的值中减去该行的 AH 列中的值。然后我需要将 AH 列中的值清零。

过滤ID号没有问题,但B5555可能出现在任何行中。 IE,一周它出现在第 2,300 行,下一周出现在 1,500 行,所以我不能只让公式说从 AB 2300 中减去 AH2300,因为下一周将作用于错误的单元格。如何使公式从 B5555 出现的行中具体减去?到目前为止,我拥有的代码仅针对该 ID 号进行过滤,因此它并不多,但如下所示。我是 VBA os 的新手,不胜感激。

Sub ManualAdjustments()

Dim wbTarget            As Workbook
Dim wbThis              As Workbook
Dim strName             As String
Dim rownum              As Integer

Set wbTarget = Workbooks("Weekly Data")

wbTarget.Activate

Worksheets("Raw").Activate

rownum = Application.WorksheetFunction.Match("B5555", 
Sheets("Raw").Range("D:D"), 0)

以上代码是我目前所拥有的。如何在简单的减法公式中引用 "rownum"?会不会是:Worksheets("Raw").Range("AHrownum")-Worksheets("Raw").Range("ABrownum")

您可以按如下方式进行:

Sub ManualAdjustments()
Dim rownum As Long
Dim ws As Worksheet: Set ws = Worksheets("Raw")

'Get the row number where value "B5555" is found in Column D
rownum = ws.Range("D:D").Find(What:="B5555", Lookat:=xlWhole).Row

'Subtract AH minus AB, O & M
NewValue = ws.Range("AH" & rownum) - ws.Range("AB" & rownum) - ws.Range("O" & rownum) - ws.Range("M" & rownum)

MsgBox "Your New Value is: " & NewValue
End Sub

方法略有不同:

Sub ManualAdjustments()

    Dim wbTarget            As Workbook
    Dim shtTarget           As Worksheet
    Dim wbThis              As Workbook
    Dim strName             As String
    Dim rownum              As Long '<<< safer never to use Integer...

    Set wbTarget = Workbooks("Weekly Data")
    Set shtTarget = wbTarget.Sheets("Raw")

   'no "worksheetfunction" = no runtime error if no match
    rownum = Application.Match("B5555", shtTarget.Range("D:D"), 0)

    If Not IsError(rowNum) Then '<< test for successful match here
        With shtTarget.Rows(rownum) 

            'Here Range() is *relative to the row*
            .Range("C1").Value = .Range("A1").value = .Range("B1").Value

        End With

    End if
End Sub