Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏来查找某个范围内的日期,然后计算相邻列中下一个值的更改_Excel_Excel Formula_Range_Vba - Fatal编程技术网

Excel宏来查找某个范围内的日期,然后计算相邻列中下一个值的更改

Excel宏来查找某个范围内的日期,然后计算相邻列中下一个值的更改,excel,excel-formula,range,vba,Excel,Excel Formula,Range,Vba,我试图编写一个宏,在a列中查找每年的2月2日,然后计算行数(天),直到B列中的值发生变化。此计数可以放在新列C列中,但与2月2日相关的行上,在本例中为第3行 使用下表,C3的输出为5。我不是在计算2月2日,而是在计算变化发生的日期。这是100多年来,我将需要循环通过 id | A | B | C ---------------------------- 1 | 1946/01/31 | 0 | 2 | 1946/02/01 | 0 | 3 | 194

我试图编写一个宏,在a列中查找每年的2月2日,然后计算行数(天),直到B列中的值发生变化。此计数可以放在新列C列中,但与2月2日相关的行上,在本例中为第3行

使用下表,C3的输出为5。我不是在计算2月2日,而是在计算变化发生的日期。这是100多年来,我将需要循环通过

id |      A     |  B  |  C  
----------------------------
 1 | 1946/01/31 |  0  |  
 2 | 1946/02/01 |  0  |
 3 | 1946/02/02 |  0  |
 4 | 1946/02/03 |  0  |
 5 | 1946/02/04 |  0  |
 6 | 1946/02/05 |  0  |
 7 | 1946/02/06 |  0  |
 8 | 1946/02/07 |  2  |
 9 | 1946/02/08 |  0  |

真正的挑战是用公式来做。两个公式

单元格E2中的第一个公式通过在B列文本末尾查找“02/02”来查找日期2月2日,如果找到,则将C2的内容放在该单元格中。如果未找到,则将C1与D1、上面的2个单元格进行比较,以查看它们是否相同,因为之前已找到匹配项,如果相同,则取上面单元格的内容。这将导致在2月2日和C列变化点之间的E列中出现零

E2的公式,然后自动填充到数据末尾

=IF(AND(MONTH(B2)=2,DAY(B2)=2),C1,IF(AND(E1<>"",E1=C1),E1,""))
=if(AND(E1="",E2<>""),countif(E2:E200,E2)-1,"")
=IF(和(月(B2)=2,日(B2)=2),C1,IF(和(E1“”,E1=C1),E1“”)
现在我们需要做的就是通过查找D列
和(E1=”“,E2”“)
中的第一个非空白单元格来计算D列中的单元格,然后计算与该单元格匹配的所有单元格。我不确定你希望找到什么差距,但你可以改变200,以确保你计算所有。最后一部分是去掉1,这样2月2日的第2行就不会被计算在内

D2的公式,然后自动填充到数据末尾

=IF(AND(MONTH(B2)=2,DAY(B2)=2),C1,IF(AND(E1<>"",E1=C1),E1,""))
=if(AND(E1="",E2<>""),countif(E2:E200,E2)-1,"")
=if(AND(E1=”“,E2“”),countif(E2:E200,E2)-1“”)

谢谢你的建议。我插入这些,并尝试了一些修改,但无法获得与屏幕截图相同的输出。我明白了:它不起作用的原因是,当我在谷歌表单上做示例时,日期没有被识别为日期,所以我使用了
正确的(“02/02”
我已将其复制到excel中,它会自动转换为日期,因此不再工作。修复并不困难,只是需要一种不同的方法来查找2月2日。我已更新了E列的公式,以便它正确检查日期,并使用C列而不是D列检查自己,因为我认为我从错误的ce复制了一个公式我以前见过,现在应该可以用了。