Excel VBA根据类

时间:2016-11-26 07:31:30

标签: excel-vba excel-formula vba excel

请协助我完成以下方案

我需要彻底查看一个范围并找到最小值。如果另一个范围内的相应值匹配,那么我需要查找列号。

我可以使用以下代码;但是当有多个最小值时,下面的代码总是给出第一个最小值列号。即使不满足条件,它也不会移动到下一个最小值列。

这是我尝试申请的课程

        MyOrder = 1
        Do Until wksSkill.Cells(MyRow, MyColNum).Value <> "Exclude"
            MyColNum = Application.Evaluate("=CELL(""col"", INDEX(" & MyColRange.Address(0, 0) & ", MATCH(SMALL(" & MyColRange.Address(0, 0) & ",   " & MyOrder & " ), " & MyColRange.Address(0, 0) & ", 0)))")
            MyOrder = MyOrder + 1
        Loop

首先&#34; MyColNum&#34;从另一个if语句传递的值,然后它将获取函数输出。它一直有效,直到范围有一个最小值。

请帮助我做任何其他选择

1 个答案:

答案 0 :(得分:1)

好的,我可以提出的建议是在范围内找到最小值,然后遍历该范围内的每一列并检查该最小值是否出现在那里以及值是否为#34;排除&#34;发生在MyRow。我的代码中有一些示例值:

Sub mac()
Dim minVal As Double
Dim MyColRange As Range, rng As Range
Dim wksSkill As Worksheet

MyRow = 6
Set wksSkill = Sheets("Arkusz1")
Set MyColRange = wksSkill.Range("A1:E5")

minVal = Application.WorksheetFunction.Min(MyColRange)

For Each rng In MyColRange.Columns
    If Not IsError(Application.Match(minVal, rng, 0)) Then
        If wksSkill.Cells(MyRow, rng.Column) = "Exclude" Then
            MsgBox "Column " & rng.Column
        End If
    End If
Next rng

End Sub