首页 > 解决方案 > VBA 列表。请帮帮我

问题描述

我有一份 2000-2020 年在欧洲进行的 IPO 的 Excel 清单,以及 1999-2020 年在欧洲进行的所有贷款的第二份清单。我需要找出第一个列表中的哪些 IPO 从第二个数据列表中获得了贷款(在 IPO 前最多一年收到贷款)。我该怎么做?我为VBA编写了这段代码,有人可以帮我调整一下吗?有没有更简单的方法来做到这一点?

在此处输入图像描述

代码:

Sub

i = 2

Do Until Cells(i, 1).Value = ""

j = 2
Cells(i, 5).Value = 0

Do Until Cells(j, 3).Value = "" Or Cells(i, 5).Value = 1

If Cells(i, 2).Value = Cells(j, 4).Value Then

    If Cells(i, 1).Value > Cells(j, 3).Value And Cells(i, 1).Value < Cells(j, 3).Value And Cells(i, 1).Value > Cells(j, 3).Value - 365 Then
            Cells(i, 5).Value = 1
    
    End If
    
    j = 1 + i
    
    Loop
    
    i = i + 1
Loop

End Sub
                            


   

标签: excelvbafunctionfinance

解决方案


我可以使用这个公式在没有 VBA 的情况下实现你的结果

=IF(ISNA(VLOOKUP(B7,$F$4:$G$7,1,FALSE)),0,IF(AND((C7-(VLOOKUP(B7,$F$4:$G$7,2,FALSE))<365),(C7-(VLOOKUP(B7,$F$4:$G$7,2,FALSE))>0)),1,0))

在此处输入图像描述

如果要保持列的顺序,则必须使用索引匹配功能来替换 Vlookup


推荐阅读