比较Excel中的两列以查看;“下一高”;使用VBA

比较Excel中的两列以查看;“下一高”;使用VBA,vba,excel,Vba,Excel,我对使用VBA代码相当陌生,希望在我目前正在处理的一个假设问题中尝试实现它。我希望能够比较两列,看看它们是否有相似的数字,不同数字的第一个实例将成为“下一个高点”。例如: Client Market 90 87 92 91.25 95 92 95.5 93.5 95 95.5 Next High: 从列表的底部开始,VBA宏应该查看市场和客户端是否有相同的数字。第一个在市场方面而不是在客户方面

我对使用VBA代码相当陌生,希望在我目前正在处理的一个假设问题中尝试实现它。我希望能够比较两列,看看它们是否有相似的数字,不同数字的第一个实例将成为“下一个高点”。例如:

Client  Market
90      87  
92      91.25  
95      92  
95.5    93.5  
        95  
        95.5  

Next High:   
从列表的底部开始,VBA宏应该查看市场和客户端是否有相同的数字。第一个在市场方面而不是在客户方面的数字应该是“下一个高点”。例如,在上面的列表中,95.5在市场和客户端,95也是如此。因为市场上95以上的下一个数字是93.5,这个数字比客户端的下一个数字(92)高,所以这个数字成为“下一个高点”


我会欣赏一些方向与VBA代码!如果这让人困惑,我会解释的,谢谢

查看随附的代码并查看它。我希望这将帮助你开始,并允许你提出任何具体的问题,你可能有

代码:

程序输出:


您一定要使用VBA进行此操作吗?你可以用一个相当简单的公式来代替。使用您提供的示例数据,此公式返回正确的结果:

=MAX(INDEX((COUNTIF(A2:B7,A2:B7)=1)*A2:B7,))

首先,我将获得Client和Market列中的总行数。然后我将从Market列中的最后一个值循环到Market列中的第一个值,同时搜索Client列以查看它是否包含相同的值。一旦返回false,我将得到“下一个高”值。这假设列是按升序排列的。您能给我看一个示例代码吗?我刚开始学习VBA。哇,非常感谢!这段代码是我真正理解VBA语法的一个很好的起点。但出于某种原因,当我运行您的代码时,我的输出是95.5。我将对此进行研究。我不确定它为什么不起作用。我建议您使用默认快捷键F8运行带有“单步执行”的程序,以便您可以看到实际发生的情况。我最初认为问题是浮点错误,但我尝试将值转换为字符串,但也无法使其再次起作用。我可能要花点时间才能弄明白。别担心,慢慢来!我目前也在尝试自己解决这个问题。我真的很感激你的帮助!
=MAX(INDEX((COUNTIF(A2:B7,A2:B7)=1)*A2:B7,))