我在宏中编写了一个函数,它没有很好地响应。 宏的描述:
我想通过3个字符找到一个单元格的值
我想编写一个可以在任何工作表中接受不同变量范围的函数,并搜索这3个字符以找到该值。
我的代码在这里
Function findvalue(x1 As Variant, x2 As Range, x3 As Variant, x4 As Range, x5 As Variant, x6 As Range)
Dim cell As Range
Dim cell2 As Range
Dim cell3 As Range
For Each cell In x2
If x1 = cell.Value Then
For Each cell2 In x4
If x3 = cell2.Value Then
For Each cell3 In x6
If x5 = cell3.Value Then
findvalue = Cells(cell2, cell3)
End If
Next cell3
Exit For
End If
Next cell2
Exit For
End If
Next cell
End Function
项目和项目的质量应该在列中,日期应该在行
我附上了我的文件
Sheet1
包含我的数据,Sheet2
我希望找到我的价值
答案 0 :(得分:0)
如果我理解你的问题,这个公式已经作为数组公式存在,不需要重新发明。我没有下载你的文件,就像其他我不相信的网站一样。
然后设置一个快速查找字段,如下所示:
在B21中的下列公式中:
=INDEX(C2:O13,MATCH(B19,IF(A2:A13=A19,B2:B13),0),MATCH(C19,C1:O1,0))
这是一个数组公式,需要使用Ctrl-Shift-Enter确认。
如果你想要一个UDF,那么使用它:
Function findvalue(x1 As Variant, x2 As Range, x3 As Variant, x4 As Range, x5 As Variant, x6 As Range)
Dim i&, j&
Dim rw&, clm&
For i = 1 To x2.Rows.Count
If x2.Cells(i, 1) = x1 And x4.Cells(i, 1) = x3 Then
rw = x2.Cells(i, i).Row
For j = 1 To x6.Columns.Count
If x6.Cells(1, j) = x5 Then
clm = x6.Cells(1, j).Column
findvalue = ActiveSheet.Cells(rw, clm)
Exit Function
End If
Next j
End If
Next i
findvalue = "N/A"
End Function