如何使用VBA宏而不是excel公式来获取4列比较数据的最大值?

如何使用VBA宏而不是excel公式来获取4列比较数据的最大值?,vba,excel-formula,Vba,Excel Formula,在名为start的工作表中,我有两列H和AK以及人员ID,还有两列E和AG以及日期。 在另一个名为“Final”的工作表中,我有一个a列,其中填充了唯一的人员ID(数据来自H列和AK列)。 在最终工作表中,G列需要填入每个人的最新日期,如果一个人的日期在E列,另一个人的日期在AG列,则代码需要比较其他日期,并获得具有最大值的日期。(此日期是一个人所做的输入) 我用一个公式来做这件事 Sheets("Final").Columns(7).HorizontalAlignment

在名为start的
工作表中,我有两列H和AK以及人员ID,还有两列E和AG以及日期。
在另一个名为“Final”的工作表中,我有一个a列,其中填充了唯一的人员ID(数据来自H列和AK列)。
在最终工作表中,G列需要填入每个人的最新日期,如果一个人的日期在E列,另一个人的日期在AG列,则代码需要比较其他日期,并获得具有最大值的日期。(此日期是一个人所做的输入)

我用一个公式来做这件事

Sheets("Final").Columns(7).HorizontalAlignment = xlCenter
 Sheets("Final").Columns(7).NumberFormat = "mm/dd/yyyy"
Sheets("Final").Range("G2:G" & intrlastrow1).Formula = "=MAX(MAX(IF(Start!$H$2:$H$" & intrlastrow & "='Final'!A2,Start!$E$2:$E$" & intrlastrow & ")),MAX(IF(Start!$AJ$2:$AJ$" & intrlastrow & "='Final'!A2,Final!$AG$2:$AG$" & intrlastrow & ")))"

Range("D2:D" & intrlastrow1).FormatConditions(1).StopIfTrue = False
问题是,由于数据的大小,excel的计算时间太长。 当另一个代码开始运行时,计算仍在进行(我可以在G列上看到数据01/00/1900),我得到一个错误,因为在此公式之后运行的代码需要G列中的值。 在下一个代码之后,停止运行列G完成计算,我在列G上得到正确的日期

有没有一种方法可以使用不带公式的代码在G列中填入每个人的最新日期


似乎我忘记添加带有FormulaArray属性的行

Sheets(“禁令审查”).范围(“G2:G”和intrlastrow1).公式数组=Sheets(“禁令审查”).范围(“G2:G”和intrlastrow1).公式

在代码中添加上述行后,它显示了正确的日期


ps:感谢您抽出时间来帮助我。

您可以添加我们可以重现问题的数据吗?您尝试过使用透视表吗。如果将此人放入行中,并使用If公式创建一个计算字段,则可以获得每个人在2列上的最大日期。@ACCtionMan在这种情况下不能为Pivot。