如果列A中的单元格不是空白,则列B等于,列C等于

时间:2018-04-12 09:54:51

标签: excel vba if-statement

如果B列中的单元格为空,我想用数据填充几列 我已经设法为一个专栏做了这个,但我很难让它运行多个专栏...... 因此,如果B不是空白,则用Customer完成列K,用Allow完成列P并用正常完成列Q(还没有完成,因为还没有让P工作!)

For Each Cel In Range("B18:B90000")
    If Cel.Value <> "" _
    Then Cel.Offset(0, 9).Value = "Customer"
    'Cel.Offset(0, 5).Value = "Allow"
Next

这帮助我做了一个专栏: VBA - If a cell in column A is not blank the column B equals 这有助于我执行2个动作,但它不起作用 https://www.mrexcel.com/forum/excel-questions/524212-vba-if-statements-can-you-have-multiple-actions-then-area.html 如果有人可以提供帮助,那将非常感激 谢谢!

3 个答案:

答案 0 :(得分:0)

好吧,你刚忘了End If而且Offset保持固定在B上,所以值不是5而是14:

For Each Cel In Range("B18:B90000")
    If Cel.Value <> "" Then
        Cel.Offset(0, 9).Value = "Customer"
        Cel.Offset(0, 14).Value = "Allow"
        Cel.Offset(0, 15).Value = "Normal"
    End If
Next

我更喜欢将Then与if一起内联,因为vba确实以这种方式读取它(如果你在vba控制台中使用f8,你会看到)。

答案 1 :(得分:0)

也许:

Sub FillIn()
    Dim i As Long

    For i = 18 To 90000
        If Cells(i, "B") <> "" Then
            Cells(i, "K") = "Customer"
            Cells(i, "P") = "Allow"
            Cells(i, "Q") = "Normal"
        End If
    Next i
End Sub

答案 2 :(得分:0)

您也可以使用以下更快的内容

Option Explicit
Public Sub testing()

    With Worksheets("Sheet1").Range("B18:B90000")
        Dim Cel As Range
        If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
            For Each Cel In .SpecialCells(xlCellTypeBlanks)
                Cel.Offset(0, 9).Value = "Customer"
                Cel.Offset(0, 14).Value = "Allow"
                Cel.Offset(0, 15).Value = "Normal"
             Next Cel
        End If
    End With
End Sub