Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 确定多个单元格中最小值的位置?_Excel_Vba_Excel Formula - Fatal编程技术网

Excel 确定多个单元格中最小值的位置?

Excel 确定多个单元格中最小值的位置?,excel,vba,excel-formula,Excel,Vba,Excel Formula,要查找范围内最小值的行位置,我只需执行以下操作: Dim rng As Range Dim dblMin As Double Set rng = Sheet1.Range("A1:A10") dblMin = Application.Match(Application.Min(rng), rng, 0) End Sub 如何检查特定的A1、A3和A6单元格,并调整我的范围 我尝试了Min(A1、A3、A6)以及如何更改查找范围A1&A3&A6或A1、A3、A6不起作用 理想情况下,我希望返

要查找范围内最小值的行位置,我只需执行以下操作:

Dim rng As Range
Dim dblMin As Double

Set rng = Sheet1.Range("A1:A10")
dblMin = Application.Match(Application.Min(rng), rng, 0)

End Sub
如何检查特定的A1、A3和A6单元格,并调整我的范围

我尝试了
Min(A1、A3、A6)
以及如何更改查找范围<代码>A1&A3&A6或A1、A3、A6不起作用


理想情况下,我希望返回行位置1、2或3,因为我们只比较3个值。

尝试下面的代码:

Dim Rng As Range, FindRng As Range
Dim dblMin As Double

' set the Range
Set Rng = Application.Union(Sheet1.Range("A1"), Sheet1.Range("A3"), Sheet1.Range("A6"))

' find the minimum value
dblMin = WorksheetFunction.Min(Rng)

' use Find to find the Minimum value in your range
Set FindRng = Rng.Find(what:=dblMin, LookIn:=xlValues, LookAt:=xlWhole)

MsgBox "Minimum found at " & FindRng.Address(False, False, xlA1)

编辑1-获取范围内单元格的顺序

修改代码


请尝试以下代码:

Dim Rng As Range, FindRng As Range
Dim dblMin As Double

' set the Range
Set Rng = Application.Union(Sheet1.Range("A1"), Sheet1.Range("A3"), Sheet1.Range("A6"))

' find the minimum value
dblMin = WorksheetFunction.Min(Rng)

' use Find to find the Minimum value in your range
Set FindRng = Rng.Find(what:=dblMin, LookIn:=xlValues, LookAt:=xlWhole)

MsgBox "Minimum found at " & FindRng.Address(False, False, xlA1)

编辑1-获取范围内单元格的顺序

修改代码

没有测试语法。如果单元格等于最小值,则将是嵌套IF to text的一般概念

没有测试语法。如果单元格等于最小值,则为嵌套IF to text的一般概念。

伪代码:

    Dim rng1 as Range
    Dim rng2 as Range
    Dim rng3 as Range

    Dim lMin as Double

    Set rng1 = Sheet1.Range("A1")
    Set rng2 = Sheet1.Range("A2")
    Set rng3 = Sheet1.Range("A6")

    lMin = Application.WorksheetFunction.Min(rng1.Value, rng2.Value, rng3.Value)

    Select Case lMin
        Case is = rng1
            Debug.Print "The range rng1 contains the smallest value."
            ' You can insert code here to do something when rng1 is minimum...

        Case is = rng2
            Debug.Print "The range rng2 contains the smallest value."
            ' You can insert code here to do something when rng2 is minimum...

        Case is = rng3
            Debug.Print "The range rng3 contains the smallest value."
            ' You can insert code here to do something when rng3 is minimum...
    End Select
伪代码:

    Dim rng1 as Range
    Dim rng2 as Range
    Dim rng3 as Range

    Dim lMin as Double

    Set rng1 = Sheet1.Range("A1")
    Set rng2 = Sheet1.Range("A2")
    Set rng3 = Sheet1.Range("A6")

    lMin = Application.WorksheetFunction.Min(rng1.Value, rng2.Value, rng3.Value)

    Select Case lMin
        Case is = rng1
            Debug.Print "The range rng1 contains the smallest value."
            ' You can insert code here to do something when rng1 is minimum...

        Case is = rng2
            Debug.Print "The range rng2 contains the smallest value."
            ' You can insert code here to do something when rng2 is minimum...

        Case is = rng3
            Debug.Print "The range rng3 contains the smallest value."
            ' You can insert code here to do something when rng3 is minimum...
    End Select


范围(“A1、A3、A6”)
将找到最小值,但认为它在比赛中不起作用。您可能需要一个循环。
=IF(MIN(A1,A3,A6)=A1,1,IF(MIN(A1,A3,A6)=A3,2,3))
@这现在可以工作了,所以要将公式添加到代码中会是这样吗
dblMin=IF(MIN(A1,A3,A6)=A1,1,IF(MIN(A1,A3,A6)=A3,2,3))
?我写的是一个excel公式,因为你用excel公式标记了这个问题。我把它作为一个评论而不是一个答案,因为你在问题中展示了VBA…而且我的VBA技能很弱。在VBA中,我会将其作为一系列嵌套的IF语句或潜在的CASE来执行。
范围(“A1、A3、A6”)
会找到最小值,但认为它在匹配中不起作用。您可能需要一个循环。
=IF(MIN(A1,A3,A6)=A1,1,IF(MIN(A1,A3,A6)=A3,2,3))
@这现在可以工作了,所以要将公式添加到代码中会是这样吗
dblMin=IF(MIN(A1,A3,A6)=A1,1,IF(MIN(A1,A3,A6)=A3,2,3))
?我写的是一个excel公式,因为你用excel公式标记了这个问题。我把它作为一个评论而不是一个答案,因为你在问题中展示了VBA…而且我的VBA技能很弱。在VBA中,我会将它作为一系列嵌套的IF语句或可能的CASE进行处理。我如何将它作为1、2或3进行返回,而不是返回地址,因为我们只查看3个值中的最小值?我想找一份工作row@ggmkp你想拿回那排的号码吗?还是范围内的牢房号?@ShaiRado我也不怀疑。更像是,如果最小值为A1,则为1,如果为A3,则为2,否则A6为最小值,值为3。更好的问题是,如果发生tie@ForwardEd你说得很对,打成平局这将是第一个牢房,与
匹配相同的行为function@ggmkp我要说的是,用Shai Rado的这段代码,更改关于rng的最后一行。查找并尝试您的应用程序。在rng上进行匹配,这是您单独单元格的联合,看看是否对您有效。而不是返回地址,我如何将其返回为1、2或3,因为我们只查看3个值中的最小值?我想找一份工作row@ggmkp你想拿回那排的号码吗?还是范围内的牢房号?@ShaiRado我也不怀疑。更像是,如果最小值为A1,则为1,如果为A3,则为2,否则A6为最小值,值为3。更好的问题是,如果发生tie@ForwardEd你说得很对,打成平局这将是第一个牢房,与
匹配相同的行为function@ggmkp我想说的是,把Shai Rado的这段代码改一下关于rng的最后一行。找到并尝试你的应用程序。在rng上进行匹配,这是你的单独单元格的联合,看看是否对你有效。感谢你发布案例选项。我对它不太熟悉,所以这对我来说是一个很好的学习机会。它实际上非常简单,不需要有多个“If-then”语句或嵌套。祝你好运当你不习惯使用它时,它更多的是语法。就像我现在知道的,有一个ELSE案例,我以前不知道它的存在,所以我经常犹豫是否使用iThanks来发布案例选项。我对它不太熟悉,所以这对我来说是一个很好的学习机会。它实际上非常简单,不需要有多个“If-then”语句或嵌套。祝你好运当你不习惯使用它时,它更多的是语法。就像我现在知道的,有一个我不知道存在的案例,所以我经常犹豫是否使用它