我已经使用Vlookup返回第I列中的值,但是此列中只有一半的单元格返回了一个值(另一半是空白的)。我喜欢我的宏进入一个空间" "在所有空Vlookup单元格中,而不是将Vlookup方程保持在单元格中。我想要归档列中的所有值,然后将空白单元格更改为=" "
我的最终目标是根据单元格I是值还是空白在每行上发布注释。如果任何给定行的单元格I为空白,则该行的列K中的单元格将自动填充"已处理但未付费",如果单元格I中有值,则单元格K将自动填充& #34;付费和#34;
我的问题是,我不知道如何编写避免隐藏单元格(隐藏在过滤器中)的方程式,并且只更改过滤器后显示的单元格的值。我的列标题位于第4行,我的代码如下所示:
Dim Lastrow As Long
Lastrow = Cells(Rows.Count, "C").End(xlUp).Row
Range("A4:K" & Lastrow).Select
Selection.AutoFilter
ActiveSheet.Range("$A$4:$K" & Lastrow).AutoFilter Field:=9, Criteria1:="="
Range("I4").Offset(1, 0) = " "
Selection.AutoFill Destination:=Range("Range("I4").Offset(1, 0):I" &
Lastrow)
答案 0 :(得分:1)
有几种方法可以解决您的问题。首先,您可以在K列中放置一个公式来检查第I列中的单元格是否为空白:
=IF(I4<>"","Paid","Processed Not Yet Paid")
或者,如果您真的正在寻找宏观解决方案,请逐个单元格查看并检查值:
Sub WhoDidntPay()
Dim lastrow As Long, i As Long
lastrow = Cells(Rows.Count, "C").End(xlUp).Row
For i = 4 To lastrow
If ActiveSheet.Range("I" & i).Value <> "" And _
ActiveSheet.Range("G" & i).Value = <> 0 Then
ActiveSheet.Range("K" & i).Value = "Processed Not Yet Paid"
Else
ActiveSheet.Range("K" & i).Value = "Paid"
End If
Next i
End Sub
同样,我建议您在IFERROR
添加VLOOKUP
,以便在收到错误时,或者如果他们真的返回空白时,您可以返回一致的值,可以像上面的例子一样使用""
。