繁体   English   中英

根据相邻单元格中的值填充单元格

[英]Fill cells based on value in adjacent cell

我有这个工作宏按钮,可以将 B2:B15 范围内的“所有状态”“重置为默认提示,让我的同事指示工作状态:

截屏

Private Sub CommandButton1_Click()

    Sheets("Sheet1").Range("B2:B15").Value = "please enter status"

End Sub

如果相邻的 A 列中没有值,我希望此宏停止在 B 列中填充值“请输入状态”。 查看屏幕截图,它将使 B6:B15 为空。 A 列的值是 vlookup 结果。 如果没有结果,vlookup 返回零(当前在条件格式的帮助下隐藏在白色字体中)

感谢你的帮助!

也许是这样的:

Private Sub CommandButton1_Click()
    Dim rng as Range
    Set rng = Sheets("Sheet1").Range("A2:A15")

    If Application.CountA(rng) > 0 Then
        rng.SpecialCells(xlCellTypeConstants).Offset(,1).Value = "please enter status"
    End If
End Sub

编辑

如果列中的单元格是公式,则将xlCellTypeConstants更改为xlCellTypeFormulas

编辑 2

这是一种简单的方法来做你正在寻找的东西:

Private Sub CommandButton1_Click()
    Dim rng As Range
    Set rng = Sheets("Sheet1").Range("B2:B15")

    rng.Formula = "=IF(A2<>0,""please enter status"", """")"
    rng.Value = rng.Value
End Sub

或使用Evaluate

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")

    Dim rng As Range
    Set rng = ws.Range("B2:B15")

    rng.Value = ws.Evaluate("IF(A2:A15<>0,""please enter status"", """")")
End Sub

编辑3 :(第三次是魅力?)

如果没有找到工作编号,另一种选择是让 Vlookup 返回一个空白字符串""而不是0

然后,您可以利用Range.SpecialCells的第二个参数,如下所示(由@JvdV 提出):

Private Sub CommandButton1_Click()
    Dim rng As Range
    Set rng = Sheets("Sheet1").Range("A2:A15")

    rng.SpecialCells(xlCellTypeFormulas, xlNumbers).Offset(, 1).Value = "please enter status"
End Sub

编辑 4

您还可以使用AutoFilter

Private Sub CommandButton1_Click()
    With Sheets("Sheet1").Range("A1:B15")
        .AutoFilter 1, ">0"
            If .Cells.SpecialCells(12).Count > 2 Then .Offset(1).Resize(14, 2).Columns(2).Value = "Please enter status"
        .AutoFilter
    End With
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM