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

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

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 

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

任何公式或VBA代码将大大帮助。

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

解决scheme1:使用额外的列进行计算。 即使您的date在第一个范围没有sorting,将工作。

在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后复制到公式栏或它不会工作。


解决scheme2 :(如果你不想使用额外的列)。 将与您的示例一起工作,因为第一个范围中的DATES按升序sorting。

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

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

注意:这假设您的列A中的date按照您的示例升序sorting。


解决scheme3:只有在您按降序更改date的sorting顺序时才能工作。 但公式是最简单的。

如果你可以按照递减的date顺序sorting你的FIRST RANGE而不是升序,那么使用INDEX和MATCH公式会更简单。

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

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