Excel 查找匹配值的行号并存储在变量中
根据输入值,我想在表中查找单元格,并将行号存储在变量中。此变量将用于将下一列中的相应值与输入编号相乘。到目前为止,我的代码是:Excel 查找匹配值的行号并存储在变量中,excel,match,row,vba,Excel,Match,Row,Vba,根据输入值,我想在表中查找单元格,并将行号存储在变量中。此变量将用于将下一列中的相应值与输入编号相乘。到目前为止,我的代码是: Option Explicit Sub Calculate() Dim var As Variant Dim rownumber As Integer Dim Mx As Variant Dim Nx As Variant Dim Ox As Variant Dim Px As Variant Dim Qx As Variant Dim Rx As Variant
Option Explicit
Sub Calculate()
Dim var As Variant
Dim rownumber As Integer
Dim Mx As Variant
Dim Nx As Variant
Dim Ox As Variant
Dim Px As Variant
Dim Qx As Variant
Dim Rx As Variant
Dim low As Variant
Dim cat As Variant
rownumber = WorksheetFunction.Match(Sheets("User Interface").Range("K27").Value, Sheets("C-type").Range("L5:L345"), 0)
Mx = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("M" & rownumber).Value
Nx = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("N" & rownumber).Value
Ox = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("O" & rownumber).Value
Px = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("P" & rownumber).Value
Qx = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("Q" & rownumber).Value
Rx = Sheets("User Interface").Range("K27").Value * Sheets("C-type").Range("R" & rownumber).Value
cat = Array(Mx, Nx, Ox, Px, Qx, Rx)
low = Application.WorksheetFunction.Min(cat)
Sheets("User Interface").Range("C45").Value = low
Sheets("User Interface").Range("c45").Activate
Application.Goto ActiveCell.EntireRow, True
End Sub
问题是我在匹配函数中得到了下标超出范围的错误,因此我开始怀疑这是否是正确的方法。我需要能够参考表中匹配号码的行号,任何建议都将不胜感激。试试这个
strToFind = ThisWorkbook.Sheets("User Interface").Range("K27").Value
Set Rng = ThisWorkbook.Sheets("C-type").Range("L5:L345")
If Application.WorksheetFunction.CountIf(Rng, strToFind) > 0 Then
Set Rng1 = Rng.Find(strToFind, LookIn:=xlValues, LookAt:=xlWhole)
rownumber = Rng1.Row
Else
MsgBox strToFind & " does not exist in range " & Rng.Address
End If
试试这个
strToFind = ThisWorkbook.Sheets("User Interface").Range("K27").Value
Set Rng = ThisWorkbook.Sheets("C-type").Range("L5:L345")
If Application.WorksheetFunction.CountIf(Rng, strToFind) > 0 Then
Set Rng1 = Rng.Find(strToFind, LookIn:=xlValues, LookAt:=xlWhole)
rownumber = Rng1.Row
Else
MsgBox strToFind & " does not exist in range " & Rng.Address
End If
.Find()
函数可以工作吗?类似于rownumber=Sheets(“用户界面”).Range(“L5:L345”).Find(What:=Sheets(“用户界面”).Range(“K27”).Value,LookIn:=xlValues,LookAt:=xlother)。Row
可能吗?您也可以尝试某种形式的错误捕获。您可能会收到错误9,因为没有匹配项,或者您的匹配项为“N/a”。请尝试使用应用程序。匹配
,然后使用如果IsError(rownumber)=False,则代码Else MsgBox(“未找到值”)。如果
,则结束。当WorksheetFunction.MATCH
找不到值时,它将抛出运行时错误9Application.MATCH
也会抛出一个错误,但该错误将被分配到您可以捕获的rownumber
。函数.Find()
会工作吗?类似于rownumber=Sheets(“用户界面”).Range(“L5:L345”).Find(What:=Sheets(“用户界面”).Range(“K27”).Value,LookIn:=xlValues,LookAt:=xlother)。Row
可能吗?您也可以尝试某种形式的错误捕获。您可能会收到错误9,因为没有匹配项,或者您的匹配项为“N/a”。请尝试使用应用程序。匹配
,然后使用如果IsError(rownumber)=False,则代码Else MsgBox(“未找到值”)。如果
,则结束。当WorksheetFunction.MATCH
找不到值时,它将抛出运行时错误9Application.MATCH
也会抛出一个错误,但该错误将被分配到rownumber
,您可以捕获该错误。您好,Maddy,谢谢您的建议。我试着实现这个:dim'ed strofind作为variant,Rng,Rng1作为range,然后variant。在这两种情况下,我仍然得到“下标超出范围”-我的查找范围错误。即“Set Rng=ThisWorkbook.Sheets(“C-type”).Range(“L5:L345”)行。关于如何尝试排除故障有什么建议吗?Maddy,谢谢!问题实际上是“C-type”名称中的连字符。改成Ctype,现在可以用了。你好,麦迪,谢谢你的建议。我试着实现这个:dim'ed strofind作为variant,Rng,Rng1作为range,然后variant。在这两种情况下,我仍然得到“下标超出范围”-我的查找范围错误。即“Set Rng=ThisWorkbook.Sheets(“C-type”).Range(“L5:L345”)行。关于如何尝试排除故障有什么建议吗?Maddy,谢谢!问题实际上是“C-type”名称中的连字符。将其更改为Ctype,现在可以工作了。