如何通过条件组合偏移功能?

时间:2019-04-15 13:11:13

标签: excel vba excel-formula excel-2010 excel-2016

我在A列中有日期数据,在B列中有值数据。

我的目标是针对A列中的每个日期: 查看一年中的一个值(B列)是否小于日期对应值的90%。

这是我的数据

enter image description here

输出示例:

我从第一个日期(1986年12月31日)开始,看到900.82的值。 我计算900.82 * 0.9 = 810.73 所以我看第三行的值是否低于810.73,

  • 否则

我看第4行的值是否低于810.73, 第1、5、6、7、8 .....行在1年内(这意味着我在1987年12月31日停止了此操作)。

  • 如果是

我停下来,然后寻找下一个日期(1987年1月1日),然后执行同样的操作。

我同意将其翻译为VBA代码,但在Excel上可能会更好。

我首先尝试一种算法来理解问题:

-Look the first date in column A
-Look the corresponding value in Column B and save it as Value
-Offset to the next date in column A
-Look the corresponding value in Column B and save it as Range.to.compare
-If Range.to.compare < Value * 90% then write "ok" in Column C
-Else, Offset to the next date in column A...
-Untill 1 Year (Untill Year(Date in Column A)<Year(Date in Column A) +1

我尝试在Excel或VBA中对其进行翻译。

这是我用Excel尝试过的:

First excel try

但是它只能使用1天而不是1年

1 个答案:

答案 0 :(得分:0)

我认为这就是你所追求的。我将计算分为多列以显示步骤。

首先,我计算C列中的90%值。

Column C formula

D栏是大多数魔术发生的地方。在D列中,我找到日期小于当前日期+ 1年的所有行,并获得每个行的值(Col B)。然后,我取所有这些值中的最小值。请注意,这是一个数组公式,因此键入后需要按shift-ctrl-enter。

Column D formula

现在我在每个范围中都有最小值,我只需要将其与90%的值进行比较即可。

Column E formula