【问题标题】:Excel IF Statments or VBAExcel IF 语句或 VBA
【发布时间】:2017-11-30 12:27:56
【问题描述】:

我有一张表,在 M 列中有访问日期,然后我输入了一个公式,然后将 6 个月添加到 N 列中显示的日期。

然后我有一个隐藏的两列可以计算出日期,并且从该日期开始它已经被 RAG 评估,红色琥珀色绿色。

  • M 列是访问日期
  • 下一次访问第 N 列
  • Q 列是告诉您超过或低于多少天的公式
  • R 列基于 Q 列,如果它是 G、A、R(绿色、琥珀色或红色)

我有这个公式可以列出所有日期并删除 N 列中的所有空白单元格

=IFERROR(INDEX(Sheet2!$N$3:$N$78, SMALL(IF(LEN(Sheet2!$N$3:$N$78)=0,"", ROW(Sheet2!$N$3:$N $78)-MIN(ROW(Sheet2!$N$3:$N$78))+1), ROW(Sheet2!N2))),"")

我想要的是当下面的公式为真时,上面的公式会被触发,但仅适用于 R 列中包含 R 的单元格

=IF (CNI!R3="R",SHEET2!N3,"")

希望这是有道理的。

如果更容易实现,我不介意使用 VBA

【问题讨论】:

  • 在试图理解时,我会重复我认为我正在阅读的内容。不正确的地方请指正。您的工作簿中有可以由 If/Then 和条件格式处理的项目。如果缺少数据(基于 N 列),您还希望删除/删除行。关于 If/Then,您可以 嵌套 if 语句,如果表 CNI cell R3 = "R" 那么您的真实语句将是 IFERROR...))),"") 与您的虚假陈述是“”。如果您要删除行,VBA 可以接受该代码(注意每个“必须是”)。这在 VBA 或 excel 中类似。
  • @pnuts Sheet1 是公式所在的位置,而 sheet 2 是所有数据所在的位置。
  • 如果 R3="R" 则为真,但范围为 R3:R78
  • @Cyril 当我尝试嵌套 if 语句时,它只返回 true 或 false 并且空白单元格再次出现。

标签: excel excel-formula array-formulas vba


【解决方案1】:

抱歉,我迟了几天才回复你。

=IFERROR(INDEX(Sheet2!$N$3:$N$78, SMALL(_
IF(LEN(Sheet2!$N$3:$N$78)=0,"", ROW(Sheet2!$N$3:$N$78)-MIN(ROW(Sheet2!$N$3:$N$78)_
)+1), ROW(Sheet2!N2))),"")

但是如果你有一个额外的条件,你希望这个发生,这个:

=IF (CNI!R3="R",SHEET2!N3,"")

您可以使用 AND() 在 if 语句中设置多个条件。我认为您可以使用以下内容,假设您只希望应用特定的 If 语句(取自上面,在我的帖子的第一个编码部分中分解了 If 语句):

IF(AND(CNI!R3="R",LEN(Sheet2!N$3:$N$78)=0),"", ROW(Sheet2!$N$3:$N$78)-MIN(ROW(Sheet2!$N$3:$N$78)

如果您的目标是(从您的第二段代码)替换 Sheet2!N3(您的真实情况),那么您将查看以下行,其中包括您的两行代码:

=IF (CNI!R3="R",IFERROR(INDEX(Sheet2!$N$3:$N$78, SMALL(IF(LEN(Sheet2!$N$3:$N$78)=0,"", ROW(Sheet2!$N$3:$N$78)-MIN(ROW(Sheet2!$N$3:$N$78))+1), ROW(Sheet2!N2))),""),"")

如果这有助于解决问题,请告诉我!

【讨论】:

    猜你喜欢
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2018-12-30
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多