根据条件VBA写入下一个3个单元格,同时保留公式完整

时间:2015-05-17 16:53:45

标签: excel vba excel-vba

所以我正在尝试编写一个可以写出"午餐"如果前一个单元格有单词"午餐"午餐通过if语句填充在单元格中。我想有一些vba代码来读取行中的每个单元格,如果它找到单词午餐。接下来的3个单元格现在将包含单词lunch。我想在单元格中保留公式,以便电子表格的功能保持一致。这是我到目前为止所写的内容。但它没有按预期工作。请帮忙

Public Sub WriteLunchToCell()
Dim rg As Range
For Each rg In Sheet1.Range("BY62:FP62")
    If InStr(1, rg.Value, "Lunch", vbTextCompare) Then
        rg.Offset(, 1) = "Lunch"
        rg.Offset(, 2) = "Lunch"
        rg.Offset(, 3) = "Lunch"


End If
Next

End Sub

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

Set Rng = Range("a1:a6")

For Each cel In Rng
    If InStr(UCase(cel.Value), "LUNCH") <> 0 Then
        cel.Offset(0, 1).Value = "Lunch"
        cel.Offset(0, 2).Value = "Lunch"
        cel.Offset(0, 3).Value = "Lunch"
    End If
Next cel

答案 1 :(得分:0)

如果希望保留公式,则需要更改单元格的格式而不是值。

rg.Offset(, 1).NumberFormat = "General ""LUNCH"""

答案 2 :(得分:0)

你可以嵌套另一个循环:

For i = 1 To 300
    Set MyRange = Sheet1.Range("BY" & 61 + i & ":FP" & 61 + i)

    For Each rg In MyRange

        If InStr(1, rg.Value, "Lunch", vbTextCompare) Then
            rg.Offset(, 1) = "Lunch"
            rg.Offset(, 2) = "Lunch"
            rg.Offset(, 3) = "Lunch"


    End If
    Next rg

Next i