2015-12-07 70 views
0

我想找到在A列InPUT无法找到列最大值参考值在相邻列

例如参考值B列中的最大值,我想找到的最大值B列仅适用于列A中的值为“a”的范围 因此,单元格(1,3)的结果为100.

然后,我必须找到范围的最大值,其中列A中的值为“b ”。 因此,对于下一个值,单元(2,3)上的结果为110. 等等。

宏的最终结果应该是:

enter image description here

我写的代码如下B列中发现的最大值,但无法通过引用找到最大值:

Sub my() 

Cells(1, 3).Value = Application.WorksheetFunction.Max(Columns("B")) 

End Sub 

请帮忙。

+0

[this](http://stackoverflow.com/questions/29095154/maximum-values-per-day-from-data-with-different-dates/29095675#29095675)或[this](http:// stackoverflow.com/questions/31711671/two-criteria-minif-and-maxif-formula/31712035#31712035)或 [this](http://stackoverflow.com/questions/31460241/how-do-i-find-最大最小值的多组在一个Excel/31461585#31461585)或[this](http://stackoverflow.com/questions/31439546/use-set-of-keywords-to - 从第二工作表提取值/ 31439791#31439791)与[Evaluate method](https://msdn.microsoft.com/en-us/library/office/ff193019.aspx)。 – Jeeped

回答

2

无需宏:

{=MAX(IF(A$1:A$9999="a",B$1:B$9999))} 

这将会找到最大的 “a” 值和

{=MAX(IF(A$1:A$9999="b",B$1:B$9999))} 

最大的 “B” 值。

请注意,这是一个数组公式,所以用Ctrl + Shift + Enter而不是通常的Enter进入,这意味着你不必键入{}。这只能表明,这是一个数组公式。

+0

感谢您的大力帮助。它工作正常。但如何在VBA中做到这一点? – Abhijeet

+0

@Abhijeet - 也许是一个很好的老式[Application.Evaluate方法](https://msdn.microsoft.com/en-us/library/office/ff193019.aspx)。 Marco - 考虑到这是一个数组公式,并且应尽可能减少行数,并将其限制在列中的最后一个数字处(低于该数值并不重要)。 '= MAX(IF(A $ 1:INDEX(A:A,MATCH(1e99,B:B))=“a”,B $ 1:INDEX(B:B,MATCH(1e99,B:B))))'''作为CSE。 – Jeeped

+0

@Jeeped,你是对的,应该提到它应该根据9999进行调整,或者像你建议的那样动态地寻找它。为了便于阅读,我可能会用'COUNTA(A:A)'替代'MATCH'部分。 –