簡體   English   中英

使用Excel VBA在一個單元格中搜索一個值,並在同一行上在另一單元格中搜索另一個值

[英]Use Excel VBA to Search One cell for one value and on the same line another cell for another value

我正在研究一旦完成的大型VBA腳本,但是當它到達需要該邏輯的VBA腳本檢查的位置時,我遇到了一個問題:

If Cell AC2 = "PastDue" And Cell W2 <> "Risk Accepted" on Sheet1 Then Copy row to Sheet2.

這是我到目前為止的代碼:

Sub PastDue()
Application.ScreenUpdating = False
Application.StatusBar = "Job Updating"

Dim lr As Long
Dim lr2 As Long
Dim r As long
Dim ws1 As Worksheet1
Dim ws2 As Worksheet2

Application.ScreenUpdating= False
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
N = 1
lr = ws1.Cells(Rows.Count, "AC").End(x1Up).Row 'Used to search column AC
lr = ws1.Cells(Rows.Count, "W").End(x1Up).Row 'This errors out when ran and was a line I added in to check the second column
lr2 = ws2.Cells(Rows.Count, "A").End.x1Up).Row

    For r = 2 To lr
        If ws1.Range("AC" & r).Value = "PastDue" Then
            If ws1.Range ("W" & r).Value <> "Risk Accepted" Then 'I added this to search for the second piece of the logic
                ws1.Rows(r).Copy Destination:=ws2.Range("A" & N + 1)
            N = ws2.Cells(Rows.Count, "A").End(xlUp).Row
            End If
        End If
   Next r
Sheets("Sheet2").Select
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

這是一個經過稍微修改的代碼,僅在一個列中查找單個值時才起作用

我在一些模擬數據上測試了您的代碼,除了少數奇怪的錯誤之外,它似乎還可以工作。 我不確定將代碼復制到StackOveflow時是否會忽略這些錯誤,或者它們是否確實存在於您的VBA中。 如果確實是您的代碼,我不確定僅搜索單個值時您的代碼如何工作。

  1. Dim您的工作表為Worksheet1Worksheet2 這些不是類名。 將行更改為: Dim ws1 as WorksheetDim ws2 as Worksheet
  2. 傳遞給End函數的參數是x1up (注意,您使用的是數字1而不是字母l

當我更改這兩項時,代碼似乎可以正常工作。 我強調“似乎”一詞,因為我不確定您的錯誤是什么。 您需要闡明。

我最終使用的代碼:

Sub PastDue()
Application.ScreenUpdating = False
Application.StatusBar = "Job Updating"

Dim lr As Long
Dim lr2 As Long
Dim r As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Application.ScreenUpdating = False
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
N = 1
lr = ws1.Cells(Rows.Count, "AC").End(xlUp).Row 'Used to search column AC
lr = ws1.Cells(Rows.Count, "W").End(xlUp).Row 'This errors out when ran and was a line I added in to check the second column
lr2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row

    For r = 2 To lr
        If ws1.Range("AC" & r).Value = "PastDue" Then
            If ws1.Range("W" & r).Value <> "Risk Accepted" Then  'I added this to search for the second piece of the logic
                ws1.Rows(r).Copy Destination:=ws2.Range("A" & N + 1)
            N = ws2.Cells(Rows.Count, "A").End(xlUp).Row
            End If
        End If
   Next r
Sheets("Sheet2").Select
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM