对于同一行中列G中值为0的同一列中的K列(第5行到最后一行)中的所有单元格以及同一行中第I列中的值,宏应自动填充“支付”一词。
对于所有其他情况,宏应自动填写短语“付费未处理”。我的代码如下,但我在If语句的开头不断收到错误消息。任何帮助深表感谢。感谢
Sub Amount()
Dim Lastrow As Long
Dim i As Long
Lastrow = Cells(Rows.Count, "C").End(xlUp).Row
For i = 5 To Lastrow
If ActiveSheet.Range("I" & i).Value <> " " And _
ActiveSheet.Range("G" & i).Value = 0 Then
ActiveSheet.Range("K" & i).Value = "Paid"
Else
ActiveSheet.Range("K" & i).Value = "Processed Not Yet Paid"
End If
Next i
End Sub
答案 0 :(得分:0)
在与字符串等进行比较之前,您需要检查错误:
<> " "
注意:如果单元格包含单个空格,则False
的测试仅为True
。因此,空单元格将返回var xVals = Value.CreateSequence<float>(new int[] { 2 }, new float[] { 1, 2, 3, 4, 5, 6 }, DeviceDescriptor.CPUDevice);
进行该测试。我不确定这是不是你想要的。
答案 1 :(得分:0)
错误捕获可能会让新用户感到困惑。这是另一种使用非vba Excel用户可能熟悉的功能的方法 - CountIf 。这将抵御任何错误值/文本/ #NA / DiV / 0?OH / NO!。基本上是对某些值为true或其他值的真实测试。
OP - 请注意,您有一个&#34; &#34;在你的代码中(包括一个空格),我猜测可能需要&#34;&#34;如果你的意思是空白。
Sub Amount()
Dim WS As Worksheet 'Just a suggestion to keep more dynamic
Set WS = ActiveSheet 'Just a suggestion to keep more dynamic
Dim Lastrow As Long, i As Long
Lastrow = WS.Cells(Rows.Count, "C").End(xlUp).Row
For i = 5 To Lastrow
If Application.WorksheetFunction.CountIf(WS.Range("I" & i), " ") = 0 And _
Application.WorksheetFunction.CountIf(WS.Range("G" & i), 0) = 1 Then
WS.Range("K" & i).Value = "Paid"
Else
WS.Range("K" & i).Value = "Processed Not Yet Paid"
End If
Next i
End Sub