如果满足多个条件,则复制偏移单元格和文本

时间:2018-02-01 22:48:25

标签: excel vba excel-vba for-loop each

我需要检查列“A”中的每个单元格,如果它= bci600001178,并且列“C”中的相应单元格 9或更少,则将单元格值设置为12600,以及“C”列和0000中的数字。

如果是bci600001178,并且“C”列中相应的单元格 10或更高,则将单元格值设置为1260,并将列中的数字设置为“C”和0000

因此,如果“C”列中的数字为107,则为& 15,我需要将列“A”分别设为126010000012600700001260150000

以下代码运行,但它只输出“C”列中的第一个值。我得到126010000012601000001260100000

希望这是有道理的,有人可以帮助我。 :)

Sub Test1()

LastRow = Range("A" & Rows.Count).End(xlUp).Row
Set Item = Range("A3:A" & LastRow)

For Each Cell In Item
    If Cell.Value = "bci60001178" And Cell.Offset(, 2).Value <= 9 Then
    Cell.Value = "12600" & Cell.Offset(, 2).Value & "0000"
    ElseIf Cell.Value = "bci60001178" And Cell.Offset(, 2).Value >= 10 Then
    Cell.Value = "1260" & Cell.Offset(, 2).Value & "0000"
    End If
Next Cell

End Sub

1 个答案:

答案 0 :(得分:1)

看看这是否是您正在寻找的......

Option Explicit

Sub Test1()

    Dim i As Long, lastRow As Long, ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)

    lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row

    For i = 3 To lastRow
        If ws.Cells(i, "A").Value = "bci60001178" Then
            Select Case ws.Cells(i, "C").Value
            Case 0 To 9
                ws.Cells(i, "A") = "12600" & ws.Cells(i, "C")
            Case 10 To 99
                ws.Cells(i, "A") = "1260" & ws.Cells(i, "C")
            End Select
        End If
    Next

End Sub

如果可能的话,我宁愿不使用Offset()(通常是这样)。我删除了您的For Each声明,并将其替换为For i =