python - Excel - 查找前一行和各种范围大小的最大值

标签 python excel vba max

我需要找到降水事件期间的最大相对湿度值。我计算了每个事件的持续时间,并且能够让 Excel 向后“扫描”事件。我遇到的问题是,有些事件是在前一天开始的,我不知道如何让 Excel 扫描前一行。

这是一个例子......

Example image

代码:

=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/

相关文章:

python - 检查 pandas 数据框中相邻行的值以进行库存回测的更有效方法

python - 高效的 Matplotlib 重绘

python - 如何在 OSX High Sierra 中正确设置网状包的 Python 路径?

java - 将excel文件表导入java时出错

database - 在 Microsoft Access (2010) 中计算年龄(以年和月为单位)

python - 在列表列表中搜索一列的最大数字

python - 在Python中有一个元组列表,对于每个元组,希望将x[0]和x[1]放入Excel电子表格的A列和B列中

excel - 在 Excel 中使用排名函数

Excel 用户表单 - 从剪贴板获取 HTML

excel - 嵌套 For 循环替代方案或优化