我需要找到降水事件期间的最大相对湿度值。我计算了每个事件的持续时间,并且能够让 Excel 向后“扫描”事件。我遇到的问题是,有些事件是在前一天开始的,我不知道如何让 Excel 扫描前一行。
这是一个例子......
代码:
=IF(AND(Duration!BP3>0), MAX(INDIRECT(ADDRESS(3, COLUMN(C3)-Duration!BP3)):C3),0)
示例:上表中的第一个事件仅持续一小时 (L2),因此最大值自动为 90。
下一个事件的持续时间为 11 小时。我试图让 Excel 找到从 21z 到 02z 的最大值。因此 BP3 = 6。由于 BP3 大于 0,我尝试通过减去持续时间来找到最大相对湿度,以获得事件的范围 (COLUMN(C3)-Duration!BP3)。对于此事件,最大值为 100。
问题:我得到“#VALUE!”因为没有=(C3-6)的单元格。有没有办法让它也扫描上一行? VBA 或 python 代码会更好吗?我对 VBA 和 python 相当陌生,所以我不知道如何解决这个问题。
最佳答案
=IF(BP3<COLUMN(C3),MAX(OFFSET(C3,0,-(BP3-1),1,BP3)),MAX(MAX(A3:C3),MAX(OFFSET(X3,-1,-BP3+COLUMN(C3)+1,1,BP3-COLUMN(C3)))))
如果BP3不太大,则向后取C3偏移的最大值。如果太大,则取两个范围中的最大值:第一个范围是 A3:C3。第二个范围是 X3,向上偏移 1 行并向后偏移许多列 (bp3-column(c3))。
如果事件跨越两行以上,则此方法不起作用。
关于python - Excel - 查找前一行和各种范围大小的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43079740/