Board logo

標題: 如何用vlookup自動收尋比對的項次數量 [打印本頁]

作者: cclo0728    時間: 2020-6-8 16:09     標題: 如何用vlookup自動收尋比對的項次數量

請問一般使用vlookup時,使用滑鼠點兩下即可整欄都自動填入
使用錄製功能時,因為每次項次都不同,該如何去執行?
目前我是用下面這樣錄製,有比較明細指令讓vba能夠抓到對應的欄位?

    Sheets("託外報表").Select 'VLOOKUP比對舊資料採購補充
    Range("B2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-1],'託外報表(總表)'!C[-1]:C,2,0)"
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B3000")
    Range("B2:B3000").Select
    Columns("B:B").Select  '刪除N/A
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
作者: rouber590324    時間: 2020-6-8 16:48

Sub BBB()
Sheet1.Select
Range("A1").Select
For X = 2 To 4
If 1 = 1 Then
  M = Sheet1.Cells(X, 1)
   mymax = Evaluate("VLOOKUP(""" & M & """,工作表2!A:B,2,FALSE)")
   If Application.IsError(mymax) = True Then mymax = ""
   Sheet1.Cells(X, 2) = mymax
End If
Next
End Sub
作者: cclo0728    時間: 2020-6-10 08:15

回復 2# rouber590324
謝謝,等等測試看看
有問題再請教
作者: 准提部林    時間: 2020-6-10 10:03

With Range([託外報表!B2], [託外報表!A65536].End(xlUp)(1, 2))  '以A欄取得最後一筆位置, 再右移一格  
     .FormulaR1C1 = "=VLOOKUP(RC[-1],'託外報表(總表)'!C[-1]:C,2,0)"
     .Value = .Value
     .Replace "#N/A", ""
End With
作者: cclo0728    時間: 2020-6-10 18:57

回復 4# 准提部林

With Range([託外報表!B2], [託外報表!A65536].End(xlUp)(1, 2))  '以A欄取得最後一筆位置, 再右移一格  
請問這一行的意思改為(1,3)會將託外報表中,A-C欄位一起比對過來的意思嗎?
作者: n7822123    時間: 2020-6-11 11:08

本帖最後由 n7822123 於 2020-6-11 11:10 編輯

回復 5# cclo0728

執行以下程式,看哪些儲存格被選取就可以知道範圍了~,可自行驗證不須要問別人

  Range([託外報表!B2], [託外報表!A65536].End(xlUp)(1, 3)).Select
作者: 准提部林    時間: 2020-6-11 13:50

回復 5# cclo0728
可自行去測試有何不同???

再給兩種方法:
Sub TTT1()
R& = [託外報表!A65536].End(xlUp).Row
With [託外報表!B2].Resize(R - 1)
     .FormulaR1C1 = "=VLOOKUP(RC[-1],'託外報表(總表)'!C[-1]:C,2,0)"
     .Value = .Value
     .Replace "#N/A", ""
End With
End Sub

Sub TTT2()
R& = [託外報表!A65536].End(xlUp).Row
With Sheets("託外報表").Range("B2:B" & R)
     .FormulaR1C1 = "=VLOOKUP(RC[-1],'託外報表(總表)'!C[-1]:C,2,0)"
     .Value = .Value
     .Replace "#N/A", ""
End With
End Sub
作者: cclo0728    時間: 2020-6-11 16:01

回復 7# 准提部林

謝謝,我理解了
作者: cclo0728    時間: 2020-6-11 16:12

回復 6# n7822123


    Range([託外報表!B2], [託外報表!A65536].End(xlUp)(1, 3)).Select
我理解了select,感謝指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)