如何使用 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
我会尽力解释这一点。我正在处理一个包含大约 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