根据两个条件更改单元格的值VBA宏

问题描述 投票:0回答:1

下午好,

我有一些由多个商店订购的商品,这些商品具有相同的产品编号,我需要更改“STORE 1”的名称。

本质上,我需要宏来执行此操作:如果 E:E 等于 LIST 并且 G:G 等于“Store 1”。将“商店 1”更改为“商店 7”。

列表:18703,18709,17669,17668,18708,32945,27042,27041,18704,32941,32944,32942,18702,18705,18462,18461,18391,27039,33632,336 33,33635,27045

我该怎么办?

Screenshot

这是我之前尝试过的,但它仅针对产品编号而不是商店进行更改。

Sub ChangeStore()
Dim lr As Long
Dim rng As Range
'Changes Ship to Parent Customer from Kroger to Kroger DC
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For Each rng In Range("E3:E" & lr)
        If (rng = 18709) Or (rng = 18703) Or (rng = 18705) Or (rng = 27042) Or (rng = 27041) Or (rng = 32598) Or (rng = 17669) Or (rng = 17668) Or (rng = 18708) Or (rng = 18704) Or (rng = 32595) Or (rng = 32596) Or (rng = 32596) Or (rng = 32596) Or (rng = 32596) Or (rng = 32596) Or (rng = 32596) Or (rng = 32596) Or (rng = 32597) Or (rng = 32599) Or (rng = 18702) Or (rng = 18462) Or (rng = 18461) Or (rng = 27039) Or (rng = 27045) Or (rng = 32941) Or (rng = 32942) Or (rng = 32943) Or (rng = 32944) Or (rng = 32945) Then
            rng.Offset(, 2) = "Store 7"
        End If
    Next rng
    
End Sub
excel vba macros
1个回答
0
投票

类似这样的:

Sub ChangeStore()
    Dim lr As Long, ws As Worksheet
    Dim c As Range
    
    'reference a specific worksheet
    Set ws = ThisWorkbook.Worksheets("Data") 'for example
    'Changes Ship to Parent Customer from Kroger to Kroger DC
    lr = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For Each c In Range("E3:E" & lr)
        
        Select Case c.Value
            'Tidier than a long list of or'ed tests
            Case 18709, 18703, 18705, 27042, 27041, 32598, 17669, _
                 17668, 18708, 18704, 32595, 32596, 32596 'etc etc
                With c.Offset(0, 2)
                    If .Value = "Store 1" Then .Value = "Store 7"
                End With
            Case Else
                'do nothing
        End Select
        
    Next c
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.