Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 - Fatal编程技术网

Excel 相对于相邻列中的值,无法在列中找到最大值

Excel 相对于相邻列中的值,无法在列中找到最大值,excel,vba,Excel,Vba,我想在B列中找到相对于A列中的值的最大值 例如,我只想在列A中的值为“A”的范围中查找列B中的最大值 所以,结果是(1,3)单元格为100 然后,我必须找到范围的最大值,其中A列中的值是“b”。 所以,单元格(2,3)的结果是110。 以此类推,获取下一个值 宏的最终结果应为: 我已经编写了在B列中查找最大值的代码,如下所示,但无法通过引用查找最大值: Sub my() Cells(1, 3).Value = Application.WorksheetFunction.Max(Columns

我想在B列中找到相对于A列中的值的最大值

例如,我只想在列A中的值为“A”的范围中查找列B中的最大值 所以,结果是(1,3)单元格为100

然后,我必须找到范围的最大值,其中A列中的值是“b”。 所以,单元格(2,3)的结果是110。 以此类推,获取下一个值

宏的最终结果应为:

我已经编写了在B列中查找最大值的代码,如下所示,但无法通过引用查找最大值:

Sub my()

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

End Sub
请提供帮助。

不需要宏:

{=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
,这意味着您不必键入
{}
。这只表明这是一个数组公式。

感谢您的大力帮助。很好用。但是如何在VBA中做到这一点?@Abhijeet-也许是一个很好的老式方法。马可-考虑到这是一个数组公式,应该尽可能减少行数,用列中的最后一个数字限制行数(下面没有什么重要的),例如
=MAX(如果(A$1:INDEX(A:A,MATCH(1e99,B:B))=“A”,B$1:INDEX(B:B,MATCH(1e99,B:B))
作为CSE。@Jeeped,你是对的,应该提到9999应该根据您的建议进行调整,或者像您建议的那样动态查找。我可能会用
COUNTA(A:A)
替换
MATCH
部分以提高可读性。@Abhijeet在VBA中您可以这样实现:
Range(“C1”).FormulaArray=“=MAX(IF(A$1:A$9999=”“A”“,B$1:B$9999))
@Jeeped,感谢您宝贵的帮助。或与。