【问题标题】:If cell in range doesn't equal blank then apply string to cell in another range如果范围内的单元格不等于空白,则将字符串应用于另一个范围内的单元格
【发布时间】:2020-03-22 18:37:09
【问题描述】:

我有两个范围。 ("A2:A81,H2:H81") 和 ("E2:E81,L2:L81")

("A2:A81,H2:H81") = 搜索范围和
("E2:E81,L2:L81") = 字符串范围

我有一个范围 (A2:A81,H2:H81),我正在查看该范围内的单元格是否为空白。如果此范围内的其中一个单元格不是空白并且“字符串范围”中的一个单元格为空白,我想将字符串“No Punch”放入该范围的单元格中。

例如:如果单元格 A10 不是空白且 E10 为空白,则在运行宏时输入字符串“No Punch”。

这个坏了。我可以只使用 for each 语句(不使用 if),但它会填充范围内空白的所有单元格并且不检查其他范围。

Sub FinishSheet()

    If (Worksheets("GerriSheet").Range("A2:A81,H2:H81").Value = "") Then

    For Each cell In Range("E2:E81,L2:L81")
        If cell.Value = "" Then
            cell.Value = "No Punch"
        End If
    Next cell

    Else
        'Do nothing
    End If

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您想要循环条件范围并使用 Offset()

    Sub FinishSheet()
        For Each cell In Worksheets("GerriSheet").Range("A2:A81,H2:H81")
            If cell.Value = "" And cell.Offset(, 4).Value <> "" Then
                cell.Offset(, 4).Value = "No Punch"
            End If
        Next cell
    End Sub
    

    【讨论】:

    • 很好地使用了Offset()。我不会这样做的。猜猜这就是区分新手和老手的原因(?)
    • 这只是更改第一个范围内等于“”的单元格。我基本上需要这个'If cell.Value "" Then',但只允许它更改第二个范围内空白的单元格。如果那样的话。 :)
    • @James30263 是的,错过了它并正在编辑代码。见编辑。
    • 这个是因为等号而做同样的事情。将 = 更改为 做到了!再次感谢你的帮助! :)
    • 对我有用的是以下。 '如果 cell.Value "" And cell.Offset(, 4).Value = "" Then'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2023-04-10
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多