多个if语句,直到Column具有数据并且需要结果为New Column

时间:2018-01-09 04:29:39

标签: excel vba excel-vba excel-formula

我是VBA的初学者,试图编写If的代码来帮助我完成日常任务,但是,我收到了一个错误。请检讨并帮助我。此外,我希望它一直运行,直到列AD为空。

我刚刚用Excel编写了

IF(AD2<=0,"Negative", 
  IF(AD2<67,"$1 - $67", 
    IF(AD2<100,"$67 - $100", 
      IF(AD2<200,"$100 - $200", 
        IF(AD2<300,"$200 - $300", 
          IF(AD2<500,"$300 -$500", 
            IF(AD2<1000,"$500-$1000",">=1000")))))))

我希望这个结果在Column AE

1 个答案:

答案 0 :(得分:0)

我不完全确定你得到了什么错误,但是看到你的逻辑,你将通过重写你的公式得到你想要的输出,如下所示:
注意:(您可以使用 Alt + Enter 以下列方式在单元格中输入公式)

=IF(AD2<=0,"Negative", 
IF(AND(AD2>0,AD2<=67),"$1 - $67", 
IF(AND(AD2>67,AD2<=100),"$68 - $100",
IF(AND(AD2>100,AD2<=200),"$101 - $200",
IF(AND(AD2>200,AD2<=300),"$201 - $300",
IF(AND(AD2>300,AD2<=500),"$301 - $500",
IF(AND(AD2>500,AD2<=1000),"$501 - $1000",">$1000")))))))

如果您想使用VBA作为原始问题的一部分自动执行此操作,可以尝试以下操作。

Dim lr As Long
Dim myformula As String

myformula = "=IF(AD2<=0,""Negative"","
myformula = myformula & "IF(AND(AD2>0,AD2<=67),""$1 - $67"","
myformula = myformula & "IF(AND(AD2>67,AD2<=100),""$68 - $100"","
myformula = myformula & "IF(AND(AD2>100,AD2<=200),""$101 - $200"","
myformula = myformula & "IF(AND(AD2>200,AD2<=300),""$201 - $300"","
myformula = myformula & "IF(AND(AD2>300,AD2<=500),""$301 - $500"","
myformula = myformula & "IF(AND(AD2>500,AD2<=1000),""$501 - $1000"","">$1000"")))))))"

With Sheets("Sheet1") '/* change it to your actual sheet name */
    lr = .Range("AD" & .Rows.Count).End(xlUp).Row
    .Range("AE2:AE" & lr).Formula = myformula
End With

您可以在不使用变量的情况下实际分配公式字符串 并且也没有像我上面那样使用连接,但为了清楚起见,我将公式的每个部分分开以确保我们已经涵盖了所有内容。 HTH。