如何基于2个条件在另一个工作表中查找值? VBA

时间:2018-08-08 15:54:35

标签: excel vba excel-vba function

我正在尝试开发一个函数,当满足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列。

我相信问题在于“如果”,但我不确定,我将感谢您提供的任何帮助,谢谢!

2 个答案:

答案 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)