如果一个单元格为空白且另一个单元格有数据,如何将其设置为0

时间:2019-03-14 13:16:51

标签: excel vba

所以我有这段代码,我想做的是以下事情:

如果Range("aj61:aj432")为空白并且Range("F61:F432")有文本,则将空白单元格设置为0

这是我尝试过的,但是类型不匹配

Sub Insert_0()
    Dim rng As Range
    Set rng = Range("AJ61:AJ432")
    If IsEmpty(rng) And rng.Offset(-30, 0) <> "" Then rng.Value = 0
End Sub

5 个答案:

答案 0 :(得分:6)

使用SpecialCells捕获F列中的文本值与AJ列中的空白值相交的行。

Option Explicit

Sub Insert_0()

    Dim rng As Range

    On Error Resume Next
    Set rng = Intersect(Range("F61:F432").SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow, _
                        Range("AJ61:AJ432").SpecialCells(xlCellTypeBlanks))
    On Error GoTo 0

    If Not rng Is Nothing Then
        rng = 0
    Else
        Debug.Print Err.Number & ": " & Err.Description
        On Error GoTo -1
    End If

End Sub

答案 1 :(得分:3)

您需要遍历范围:

For i = 61 To 432
    If Cells("AJ" & i).Value = "" And Cells("F" & i).Value <> "" Then Cells("AJ" & i).Value = 0
Next

答案 2 :(得分:1)

没有循环

reminded = 1

答案 3 :(得分:0)

如果要检查多个单元格的范围是否为空白,则需要使用类似的内容:

newCourse

答案 4 :(得分:0)

您将不得不遍历范围内的单元格。像这样:

dim cel as range
for each cel in rng.cells
    If IsEmpty(cel) And cel.Offset(-30, 0) <> "" Then cel.Value = 0
next

为了更快,您可以使用范围值填充数组