将两个单元格值与Excel中的一系列值进行比较

时间:2015-06-13 06:37:18

标签: excel excel-vba vba

我一直在寻找解决问题的方法。我尝试了几个公式,如VLOOKUP,INDEX .. MATCH,似乎没有任何工作。 我有两个范围值,如下所示

Date    Rate of Interest        Date    Charge code Interest Rate
1/2/2014    1.1     5/27/2015   INTEREST     
3/20/2014   1.2     5/10/2015   INTEREST     
5/20/2014   1.3     4/12/2015   QUARTERLY AUDIT FEE  
10/20/2014  1.3     3/30/2015   LEGAL FEE    
1/10/2015   1.4     2/20/2015   COLLECTION   
6/13/2015   1.5     1/10/2015   COLLECTION   
11/20/2015  1.6     12/20/2014  COLLECTION   
12/20/2015  1.7     8/20/2014   COLLECTION   
12/21/2015  1.8     7/11/2014   INTEREST     
12/22/2015  1.9     6/30/2014   INTEREST     
12/22/2015  2       5/4/2014    COLLECTION   
12/23/2015  2.1     4/12/2014   COLLECTION   
12/24/2015  2.2     4/12/2014   COLLECTION   
12/25/2015  2.3     3/20/2014   COLLECTION   
12/26/2015  2.4     2/10/2014   COLLECTION   
12/27/2015  2.5     1/2/2014    COLLECTION   
12/30/2015  2.6     1/2/2014    ADVANCE  

我需要将第二个范围值与第一个范围值进行比较,并从第一个范围中获取第二个范围的“利率”列。 这是业务规则。将第二个范围中的第一个日期单元格值与第一个中的日期值列表进行比较,如果日期单元格值小于或等于第一个范围中的任何日期列表值,则相应的费用代码值对于第二个范围内的日期单元格值为“INTEREST”,需要在第二个范围的“利率”列中填充第一个范围中的“利率”列值。

任何公式或VBA代码都会有很大帮助。

1 个答案:

答案 0 :(得分:0)

假设从第2行开始使用列A到E为10行的数据,这些是一些可能的解决方案。

解决方案1:使用额外列进行计算。即使你的第一个范围的日期没有排序,也能正常工作。

在E栏(第二范围利率)

=IF(D2="INTEREST",VLOOKUP(F2,$A$2:$B$10,2),"")

在F栏(用于计算目的的额外栏目)

=MIN(IF(C2<$A$2:$A$10,$A$2:$A$10,""))

注意:第二个公式是一个数组公式,因此在复制到公式栏后按下CTRL + SHIFT + ENTER或它不起作用。

解决方案2 :(如果您不想使用额外的列)。将与您的示例一起使用,因为第一个范围中的DATES按升序排序。

将此公式复制到E列(利率)中的公式栏中,但不是按ENTER键,而是按CTRL + SHIFT + ENTER,因为这是一个数组公式。每次更改公式时都需要这样做。

=IF(D2="INTEREST",INDIRECT("B"&MIN(IF(C2<=$A$2:$A$10,ROW($A$2:$A$10),""))),"")

注意:这假设A列中的日期按照您的示例按升序排序。

解决方案3:仅在您按降序更改日期的排序顺序时才有效。但公式最简单。

如果您可以按降序DATE顺序对FIRST RANGE进行排序而不是按升序排序,则使用INDEX和MATCH将使公式变得更简单。

=INDEX($B$2:$B$10,MATCH(C2,$A$2:$A$10,-1))

如果您遇到任何问题,请告诉我。