【问题标题】:How to find the maximum value of a given range, dependent on the value in a separate column如何找到给定范围的最大值,取决于单独列中的值
【发布时间】:2017-01-30 21:32:57
【问题描述】:

Screenshot of the Excel worksheet 我正在处理历史股票价格,并使用我拥有的八列:

  • A 列:高
  • B 列:低
  • C 列:关闭
  • D 列:Cx-Cx-4
  • E 列:统计 D 列中连续正数的个数
  • F 列:计算 D 列中连续负数的个数
  • G 列:计算给定序列内 A 列的最大值和 B 列的最小值之间的差值。

例如 G1 应该等于:

=max(A1:A5)-min(B1:B5)

G6 应该等于:

=max(A6:A8)-min(B6:B8)

G9 应该等于:

=max(A9:A11)-min(B9:B11)

等等。

我想知道是否可以自动执行此计算,可能需要使用一个或多个附加列。

【问题讨论】:

    标签: excel


    【解决方案1】:

    欢迎来到 SO!

    这可能不是最有效的解决方案,因为您需要添加两个帮助列,但如果我正确理解您的要求,那么这个想法应该足够好。

    首先,假设您的数据集中有 100 行。鉴于此,在单元格 G100 中输入公式“=A100”,在单元格 H100 中输入公式“=B100”。这为 G 列和 H 列中的公式设置了边界条件。现在,在单元格 G99 中,输入以下公式:

    "=IF(E99="",G100,IF(E100="",A99,MAX(A99,G100)))"
    

    这个公式的作用是使用以下逻辑设置“运行最大值”:

    • 如果E99中的单元格为空白,则从G100复制运行最大值,否则:
    • 如果 E99 中的单元格不是空白但 E100 中的单元格是空白,则从 A99 中的单元格设置新的运行最大值,否则:
    • 以 A99 和 G100 的最大值作为新的运行最大值。

    同样,将以下公式复制到单元格 H100 中:

    "=IF(F99="",H100,IF(F100="",B99,MIN(B99,H100)))"
    

    这遵循与上一个公式相同的逻辑,但取 B 列的最小值。

    将这些公式复制或自动填充到数据集的顶部。这现在应该为您提供 A 列的运行最大值和 B 列的运行最小值。

    下一步是计算差异。我从您的问题中注意到,您似乎只对在每个范围(G1、G6、G9 等)的顶部计算这种差异感兴趣,而不是在每一行中都进行计算。鉴于此,我们需要一个稍微复杂一点的公式。

    这个公式的边界条件就是在单元格 I1 中输入“=G1-H1”。在单元格 I2 中,输入:

    "=IF(OR(AND(E2<>"",E1=""),AND(F2<>"",F1="")),G2-H2,"")"
    

    它的工作原理是检查两个指示范围边界的条件:

    • E1 是空白,E2 不是

    • F1 为空白,F2 不是

    如果其中任何一个条件成立,则 IF 语句为真并显示“G2-H2”,否则显示空白单元格。现在将这个公式复制或自动填充到数据集的底部。

    作为最后一步,如果您不需要显示列 G 和 H,现在可以隐藏它们。这现在应该给你我认为你正在寻找的结果。如果这不适合您,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2017-09-04
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多