久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Excel 如何在VBA中使用VLOOKUP函數(shù)?

 lwc5577 2018-03-12

VLOOKUP函數(shù)不是VBA函數(shù),,應(yīng)寫(xiě)成Application.WorksheetFunction.VLookup()或者Application.VLookup()

Application.是引用工作表函數(shù)的方法,,非VBA函數(shù)的工作表函數(shù)必須用這種方法,不能直接被VBA引用,。

下面是使用案例:

Sub usevlookup()

    Cells(1, 2) = Application.VLookup(Cells(1, 1), Worksheets("imei出庫(kù)日?qǐng)?bào)").Range("A:D"), 4, 0)
    aa = Application.VLookup(Cells(2, 1), Worksheets("imei出庫(kù)日?qǐng)?bào)").Range("A:D"), 4, 0)
    'aa = Cells(1, 2)
    If Not Application.IsNA(aa) Then
        MsgBox aa
    Else
        MsgBox "not found."
    End If
End Sub

VBA中使用Application.VLookup返回來(lái)沒(méi)找到結(jié)果時(shí),,彈出運(yùn)行時(shí)錯(cuò)誤"1004":應(yīng)用程序定義或?qū)ο蠖x錯(cuò)誤 20

代碼如下:
aa = Application.VLookup(Cells(2, 1), Worksheets("sheet1").Range("A:D"), 4, 0)
If Not Application.IsNA(aa) Then
MsgBox aa
Else
MsgBox "not found."
End If

if  IsError(Application.VLookup(Cells(2, 1), Worksheets("sheet1").Range("A:D"), 4, 0)) then
MsgBox "not found."

Else
MsgBox aa
End If




如何在VBA中使用VLOOKUP函數(shù)?例如:B1=VLOOKUP(A1,Sheet2!1:65536,2,FALSE),。

Sub test() [B1].Formula = "=VLOOKUP(1,A2:C10,2)" End Sub
可我是引用的其他表呀,!

B1=application.VLOOKUP(A1,Sheet2!1:65536,2,FALSE)。

變換一下:

[B1].Formula = "=vlookup(A1,Sheet2!1:65536,2,FALSE)"


[B1]=application.WorksheetFunction.VLOOKUP([A1],Sheet2.cells,2,FALSE)

如果不止是單元格B1,,而是B1:B5,,該怎么寫(xiě)?


Sub m() For i = 1 To 5 Cells(i, 2) = Application.WorksheetFunction.VLookup(Cells(i, 1), Sheet2.Cells, 2, False) Next End Sub


如果sheet2中缺少sheet1對(duì)應(yīng)數(shù)據(jù),,或者sheet1中有一個(gè)空的單元格,,則運(yùn)行該宏代碼會(huì)出錯(cuò),不能象直接使用Vlookup函數(shù)時(shí)那樣,,有不存在的就顯示“#N/A”

怎樣修改呢,?


如果Excel表格里面使用VBA的VLOOKUP函數(shù),那么就顯得比較簡(jiǎn)單了,。


Private Sub Worksheet_SelectionChange(ByVal Target As Range) '工作表選定區(qū)域發(fā)生改變時(shí)執(zhí)行

On Error Resume Next   'VBA忽略之后的語(yǔ)句錯(cuò)誤

Dim i, j As Integer

Set myDocument1 = ThisWorkbook.Worksheets("Sheet1").Range("A3:I1000")

Set myDocument2 = ThisWorkbook.Worksheets("Sheet2")

For i = 3 To 1000    '循環(huán)3-1000次,,即:以下自動(dòng)填充時(shí)間到1000行

For j = 2 To 9       '循環(huán)2-9次,即:從第2列到第9列

If myDocument2.Cells(i, 1) <> "" Then   '如果查找的單元格不為空值,,則查找表1的內(nèi)容填充到表2對(duì)應(yīng)的位置

myDocument2.Cells(i, j) = Application.WorksheetFunction.VLookup(myDocument2.Cells(i, 1), myDocument1, j, [0])

End If

If myDocument2.Cells(i, 1) = "" And myDocument2.Cells(i, j) <> "" Then

myDocument2.Cells(i, j) = ""      '如果查找值為空白且查找填充的行不為空白,,則顯示空白

End If

If myDocument2.Cells(i, 1) <> "" And myDocument2.Cells(i, j) = "" Then

myDocument2.Cells(i, j) = "不存在"           '如果查找值不存在,則顯示“不存在”

End If

Next

Next

End Sub


在Excel中沒(méi)有直接提供查找函數(shù),,常通過(guò)我循環(huán)一個(gè)一個(gè)的對(duì)比式查找,。對(duì)于剛學(xué)VBA的新手,還是希望能在VBA中使用VLOOKUP函數(shù),。


在VBA中調(diào)用工作表函數(shù),,可以用下面的格式


Application.工作表函數(shù)名(參數(shù)....)


如工作表中的公式:

C1

=VLOOKUP(c1,A1:A100,2,0)


VBA代碼中可以這樣調(diào)用


Range('C1')=Application.Vlookup(Range('c1'),Range('A1:A100'),2,0)


:在VBA中表格引用要用VBA的表示方式,。如C1用Range('c1')表示。



小知識(shí)在VBA中可以使用哪些工作表函數(shù)


輸入Application.WorksheetFunction再輸入“ .會(huì)就出現(xiàn)一個(gè)下拉列表,,上面顯示的都可以在VBA中使用,。



Sub zz()
    Dim d, wb As Workbook, ar
    Set d = CreateObject("Scripting.Dictionary")
    Set wb = GetObject(ThisWorkbook.Path & "\Book1.xlsx")
    Application.ScreenUpdating = False
    ar = wb.Sheets(1).Range("A1").CurrentRegion
    wb.Close 0
    For i = 2 To UBound(ar)
        d(ar(i, 1)) = Array(ar(i, 2), ar(i, 3))
    Next
    For i = 2 To [b65536].End(3).Row
        Cells(i, 3).Resize(1, 2) = d(Cells(i, 2).Value)
    Next
    Application.ScreenUpdating = True
End Sub


VBA實(shí)現(xiàn)VLOOKUP函數(shù)

以后遇到類(lèi)似的任務(wù)可以直接把相應(yīng)的數(shù)據(jù)復(fù)制粘貼到表格1和表格2,運(yùn)行一下就OK了,。

以下是截圖代碼

Sub 引用()

Dim i%, r%

Dim arr1, arr2

arr1 = Sheets("sheet1").[a1].CurrentRegion

arr2 = Sheets("sheet1").[f1].CurrentRegion

r = 1

For r = 1 To UBound(arr2)

For i = 1 To UBound(arr1)

If arr2(r, 1) = arr1(i, 1) Then

arr2(r, 2) = arr1(i, 2)

Exit For

End If

Next

Next

Sheets("sheet1").[f1].Resize(UBound(arr2), 2) = arr2

End Sub

上面要注意表2中G1單元格不能留空,,如果有什么運(yùn)行問(wèn)題請(qǐng)留言。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多