Excel VBA尝试在值列表中查找最小值的地址

时间:2018-09-22 19:27:42

标签: excel vba

我是Excel VBA编程的新手,在尝试使用Find方法捕获值列表中最小值的地址时遇到问题。以下是我的代码,并提供了3个屏幕截图来说明问题。任何输入表示赞赏,在此先感谢!

Sub Max_Min_Test()

    Dim Largest As Long
    Dim Smallest As Long
    Dim FirstPlace As Range
    Dim LastPlace As Range

    Largest = WorksheetFunction.Max(Range("A2:A8"))
    Smallest = WorksheetFunction.Min(Range("A2:A8"))

    Range("A10").Value = Largest
    Range("A11").Value = Smallest

    Set FirstPlace = Range("A2:A8").Find(what:=Largest)
    Set LastPlace = Range("A2:A8").Find(what:=Smallest)

    Range("B10").Value = FirstPlace.Address
    Range("B11").Value = LastPlace.Address

End Sub

在第一个屏幕截图中,单元格A10和A11显示了A2:A8中的最大值和最小值,而单元格B10和B11显示了列表中最大值和最小值的地址。在这种情况下,地址是正确的。
First screenshot

在第二个屏幕截图中,单元格B10正确显示了最大值的地址,但是单元格11显示了错误的地址。代替A8,A7显示为最小值的地址。
Second screenshot

在第三个屏幕截图中,单元格B10仍正确显示了最大值的地址,但单元格B11也显示了相同的地址。在我看来,我的代码不会捕获最小值的地址,而是捕获与最小值相同的第一位数字的值的地址...
Third screenshot

1 个答案:

答案 0 :(得分:2)

如果我们举第二个例子:

  

您将smallest的值设置为7
   您搜索7
   包含7的第一个单元格是72

中的$A$7

检查Range.Find文档,您会发现有一个可选的LookAt参数-可以是xlWholexlPart-当前默认为{{ 1}},因此包括其中包含7个任意位置的单元格。 (如果不包括在内,它将记住您使用的最后一个选项。)

因此,请尝试以下行:

xlPart