Excel 中的 VLOOKUP 帮助?
VLOOKUP help in Excel?
我有三列数据,如下所示:
05-May-15 05-May-15 0.006999933
05-May-15 06-May-15 0.006999933
05-May-15 05-Jun-15 0.008996562
05-May-15 06-Jul-15 0.008993128
05-May-15 05-Aug-15 0.006744264
05-May-15 05-Nov-15 0.006912941
05-May-15 05-May-16 0.007104633
05-May-15 05-May-17 0.006910929
05-May-15 06-Nov-17 0.007017292
05-May-15 07-May-18 0.00712202
05-May-15 05-Nov-18 0.007835916
05-May-15 06-May-19 0.008551509
05-May-15 05-Nov-19 0.009734602
05-May-15 05-May-20 0.010916848
05-May-15 05-Nov-20 0.011779622
05-May-15 05-May-21 0.012632521
05-May-15 05-Nov-21 0.013504069
05-May-15 05-May-22 0.014366506
05-May-15 07-Nov-22 0.014935518
05-May-15 05-May-23 0.0154865
05-May-15 06-Nov-23 0.016059181
05-May-15 06-May-24 0.016626256
05-May-15 05-Nov-24 0.017200193
05-May-15 05-May-25 0.017771865
05-May-15 05-Nov-25 0.018052656
第一个是从旧到新排序的,第二个是未排序的。
我需要提取第一列和第二列之间的差异等于一个月的每个实例。例如,我想获取第 3 列中的值,其中第一列是 05 - May - 15,第二列是 05 - June - 15,并对 06 - May - 15 和 06 - 6 月 - 15 日,其余系列依此类推。
我应该写什么 VLOOKUP 来完成这个?
提前致谢。
没有 vlookup:例如,您的 table 从 "A1" 单元格开始。然后用公式
构造第 4 列
D1 = AND(DAY(A1)=DAY(B1),YEAR(A1)+MONTH(A1)/12+1/12=YEAR(B1)+MONTH(B1)/12)
.
对于您需要的行,列值将为 TRUE,否则为 false。
这相对简单,因为 excel 有一些内置函数来处理 adding/subtracting 日期。在这种情况下,我会使用 =IF()
和 =EDATE()
的组合。
=IF()
允许我们检查某些逻辑测试是否为真。在您的情况下,我们要检查第一列中的日期与第二列中的日期之间的差异是否为一个月。幸运的是,=EDATE(m, n)
允许我们从月 'm' 中恰好添加或减去 n 个日历月。您最终会得到一个看起来有点像这样的公式:
=IF(B1 = EDATE(A1, 1), C1, FALSE)
这里B1是第二个日期,A1是第一个日期,1是要加的月数,C1是return如果相差一个月的值,FALSE就是return 值,如果不是正好一个月。公式很简洁,很好。如果差异不是一个月,您可以将 "FALSE" 更改为任何您想要的 return,您只需要将该公式向下复制到一列中,比如列 "D"。
我有三列数据,如下所示:
05-May-15 05-May-15 0.006999933
05-May-15 06-May-15 0.006999933
05-May-15 05-Jun-15 0.008996562
05-May-15 06-Jul-15 0.008993128
05-May-15 05-Aug-15 0.006744264
05-May-15 05-Nov-15 0.006912941
05-May-15 05-May-16 0.007104633
05-May-15 05-May-17 0.006910929
05-May-15 06-Nov-17 0.007017292
05-May-15 07-May-18 0.00712202
05-May-15 05-Nov-18 0.007835916
05-May-15 06-May-19 0.008551509
05-May-15 05-Nov-19 0.009734602
05-May-15 05-May-20 0.010916848
05-May-15 05-Nov-20 0.011779622
05-May-15 05-May-21 0.012632521
05-May-15 05-Nov-21 0.013504069
05-May-15 05-May-22 0.014366506
05-May-15 07-Nov-22 0.014935518
05-May-15 05-May-23 0.0154865
05-May-15 06-Nov-23 0.016059181
05-May-15 06-May-24 0.016626256
05-May-15 05-Nov-24 0.017200193
05-May-15 05-May-25 0.017771865
05-May-15 05-Nov-25 0.018052656
第一个是从旧到新排序的,第二个是未排序的。
我需要提取第一列和第二列之间的差异等于一个月的每个实例。例如,我想获取第 3 列中的值,其中第一列是 05 - May - 15,第二列是 05 - June - 15,并对 06 - May - 15 和 06 - 6 月 - 15 日,其余系列依此类推。
我应该写什么 VLOOKUP 来完成这个?
提前致谢。
没有 vlookup:例如,您的 table 从 "A1" 单元格开始。然后用公式
构造第 4 列D1 = AND(DAY(A1)=DAY(B1),YEAR(A1)+MONTH(A1)/12+1/12=YEAR(B1)+MONTH(B1)/12)
.
对于您需要的行,列值将为 TRUE,否则为 false。
这相对简单,因为 excel 有一些内置函数来处理 adding/subtracting 日期。在这种情况下,我会使用 =IF()
和 =EDATE()
的组合。
=IF()
允许我们检查某些逻辑测试是否为真。在您的情况下,我们要检查第一列中的日期与第二列中的日期之间的差异是否为一个月。幸运的是,=EDATE(m, n)
允许我们从月 'm' 中恰好添加或减去 n 个日历月。您最终会得到一个看起来有点像这样的公式:
=IF(B1 = EDATE(A1, 1), C1, FALSE)
这里B1是第二个日期,A1是第一个日期,1是要加的月数,C1是return如果相差一个月的值,FALSE就是return 值,如果不是正好一个月。公式很简洁,很好。如果差异不是一个月,您可以将 "FALSE" 更改为任何您想要的 return,您只需要将该公式向下复制到一列中,比如列 "D"。