请你帮我找出如何找到小计给我的最小值的行?
像这样:
A B C D E F G
1 Galp He 0,15 125 0,15443
3 Iberdrola Au 0,18 123 0,16987
7 Gazprom Sc 0,25 430 0,14679
我运行代码以在过滤的列G上找到最小值:
Application.WorksheetFunction.Subtotal(5, Columns("G"))
它为我提供了数字0,14679
。但是我需要知道它是什么行,所以我可以在A列(Gazprom
)上得到名称。
Vlookup在这种情况下不起作用,因为我有多个具有相同特征的值。但它们并不像上面的例子那样可见。不可见的第二行具有与第3行(0,16987)相同的值。
然而,根据@Mrig的建议,如果我使用小计105,我可以获得可见列吗?
我一直在尝试代码,它返回错误13 ...
如何在过滤列G的最小值A的行A上找到名称?
答案 0 :(得分:0)
您只需要搜索所需值的可见项目。像这样的东西
Sub FindMin()
Dim rng As Range, arr As Range, cl As Range
Dim SearchTerm As Variant, LookUpTerm As Variant
Dim Found As Boolean
SearchTerm = Application.WorksheetFunction.Subtotal(5, Columns("A"))
With ActiveSheet
Set rng = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each arr In rng.Areas
For Each cl In arr.Cells
If cl.Value = SearchTerm Then
LookUpTerm = cl.Offset(, 1) ' adjust offset to refer to required column
Found = True
Exit For
End If
Next cl
If Found Then Exit For
Next arr
查找 First Visible 实例
原始答案,没有过滤要求
要回答您的直接问题“如何获取行......”请使用
rw = Application.Match(Application.WorksheetFunction.Subtotal(5, Columns("A")), Columns("A"), 0)
要直接使用
从列B
获取值
ColBVal = Application.VLookup(Application.WorksheetFunction.Subtotal(5, Columns("A")), Columns("A:B"), 2, 0)
请注意,如果最小值出现多次,则会返回第一次出现。
答案 1 :(得分:0)
试试这个:
Sub Demo()
Dim min As Double
Dim rowNum As Long
With Sheet3
min = Application.WorksheetFunction.Subtotal(5, Columns("A"))
rowNum = .Columns(1).Find(What:=min, After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Row
MsgBox ("Minimum value is " & min & " at row number " & rowNum & ". Corresponding column B value is " & Cells(rowNum, 2).Value)
End With
End Sub
5作为功能编号的小计将从所选范围(包括隐藏行)中给出最小值。 105作为功能编号的小计仅从可见范围给出最小值。