我正在尝试开发一个函数,当满足2个条件时,结果将是一个值(在另一个工作表中找到)。
我有以下内容:
Function PrecioUni(lic As String, part As Integer) As Double
Dim cell As Range
Set partidas = Worksheets("Análisis AP").Range("C13:C5000")
Select Case lic
Case "Licitante 1"
For Each cell In partidas
If part = ActiveCell.Value Then
PrecioUni = ActiveCell.Offset(0, 10).Value
End If
Next cell
End Select
End Function
有20种不同的lic =“ Licitante 1,Licitante 2,...”,这就是为什么我只放置第一个Case,并在工作时将其余部分写出来(因为我只需要更改一些细节)
目标是在满足条件“ Licitante 1”之后选择2个条件(lic作为字符串,part作为整数),在partidas范围内查找,直到找到与part相同的值,最后返回单元格右边的10列。
我相信问题在于“如果”,但我不确定,我将感谢您提供的任何帮助,谢谢!
答案 0 :(得分:0)
尝试使用Range.find查找范围内的某些值。
代码中的问题是您使用的是 Activecell ,而不是声明的范围“ 单元格”。
Function PrecioUni(lic As String, part As Integer) As Double
Dim cell As Range
Set partidas = Worksheets("Análisis AP").Range("C13:C5000")
Select Case lic
Case "Licitante 1"
Set cell = partidas.Find(part, lookAt:=xwhole)
If Not cell Is Nothing Then PrecioUni = cell.Offset(, 10).Value
Case "Licitante 2"
'[...]
End Select
End Function
答案 1 :(得分:0)
需要使用迭代变量,并可能转换值。
If part = CInt(Cell.Value) Then
PrecioUni = Cdbl(Cell.Offset(0, 10).Value)