【问题标题】:Skipping cells in IF/CountIf在 IF/CountIf 中跳过单元格
【发布时间】:2018-05-17 20:06:39
【问题描述】:

我做了这个公式:

=IF(COUNTIF(D5:D8,">0")<>H5,"Yes","No")

它工作正常,但我需要COUNTIF 在我向下拖动时跳过 5 个单元格。所以D5:D8 将是D10:D13 下一个单元格,然后是D15:D18 等等。我不知道该怎么做,我真的不想手动更改 170 多个单元格。
如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

  • H5 会发生什么?它是否还会下降 5 个额外的单元格(即H5H10 等...)
  • H5 以 1 递增下降,所以没关系

标签: excel if-statement excel-formula formulas excel-2016


【解决方案1】:

如果您在公式旁边添加一个以 5 为增量运行的辅助列,您可以使用 OFFSET 来获得一个不断偏移您想要的方式的拖动:(J1 将是您的辅助列)

=IF(COUNTIF(OFFSET($D$5:$D$8,J1,0),">0")<>H5,"Yes","No")

这也可能在公式中被盗用 (ROW(Reference on this Row)-Starting Row of Formula)*5

=IF(COUNTIF(OFFSET($D$5:$D$8,(ROW(J1)-1)*5,0),">0")<>H5,"Yes","No")

【讨论】:

  • 我倾向于认为 ROW(1:1) 让它更清楚发生了什么。但无论如何,这是一个很好的答案:) +1
【解决方案2】:

正如@Wedge 指出的那样,OFFSETROW 是一个不错的选择:

=IF(COUNTIF(OFFSET($D$5:$D$8,(ROW(1:1)-1)*5,0),">0")<>H5,"Yes","No")

然而OFFSETvolatile function。如果你过度使用它,它会减慢你的工作簿。

您可以改用INDEX 来避免这种情况:

=IF(COUNTIF(INDEX(D:D,ROW(1:1)*5):INDEX(D:D,ROW(1:1)*5+3),">0")<>H5,"Yes","No")

【讨论】:

  • 呵呵,我什至不知道 INDEX 可以用作参考而不是这样的值。我猜它比 VLOOKUP 多了一点多功能性。
  • Wedge 的解决方案确实有效,但就像你说的那样,有 170 个带有 OFFSET 的公式肯定会减慢工作簿的速度。我回来后必须试试这个。
【解决方案3】:

这是未经测试的,但我相信以下应该可以解决问题:

=IF(COUNTIF(INDIRECT("D" & (ROW(I1)-1)*5+5):INDIRECT("D" & (ROW(I1)-1)*5+8),">0")<>H5,"Yes","No")

假设:公式在I列中,从I1开始,您可能需要在行后调整-1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2023-03-05
    • 2016-12-23
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多