第一章 入門篇 1.18 Find語句 Find語句的功能相當(dāng)于Excel菜單里的“查找”,。該語句的語法是這樣的: Range('要查找的區(qū)域').Find(What,After,Lookin,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat) Find語句在要查找的區(qū)域中查找信息,,返回找到該信息的第一個單元格,沒找到返回Nothing,。 讓我們來了解一下Find的參數(shù): Find語句有這么多參數(shù),,其實它只有一個必選參數(shù)What,其它參數(shù)都是可選,。 What 要查什么,? After 在哪個單元格之后開始查詢 Lookin: xlformulas 查詢公式 xlvalues 查詢值 xlcomments 查詢批注 LookAt: xlWhole 精確查詢,簡寫1 xlPart 模糊查詢,,簡寫2 SearchOrder: xlByRows 按行查找,,簡寫1 xlByColumns 按列查找,簡寫2 SearchDirection: xlnext 向下查找(默認(rèn)),,簡寫1 xlprevious 向上查找,,簡寫2 MatchCase 默認(rèn)值為False不區(qū)分大小寫,如果為True則搜索區(qū)分大小寫,。 大家可以對照一下,,F(xiàn)ind語句的參數(shù)設(shè)置,與Excel菜單里的“查找”具有的功能是一一對應(yīng)的,。在“查找”菜單里點選的功能,,都可以通過設(shè)置Find語句的參數(shù),在VBA里實現(xiàn),。 查找內(nèi)容可以使用通配符,,如:*、,?等,。 例句: 在下表中的B列找到臺式電腦,彈出它的地址,。
MsgBox Range('b:b').find('臺式電腦').Address 這樣返回的是一個絕對引用地址:$B$3,,這時可以用.Address(0,0),,返回B3。 小程序: 從上表中隨機抽取3個卡片號,,把抽取結(jié)果輸入到“g”列,。 Sub find() h = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To 3 sj = Application.RandBetween(2, h) Set 查找結(jié)果 = Range('g:g').find(Cells(sj, 1)) If 查找結(jié)果 Is Nothing Then Cells(i, 'g') = Cells(sj, 1) End If Next End Sub 我們看一下這條語句: sj = Application.RandBetween(2, h) 在這條語句里,我們引用了Excel的一個函數(shù)RandBetween來生成一個隨機數(shù),。想在VBA里引用現(xiàn)有的Excel函數(shù)時,,在函數(shù)前加上Application就可以了,用法與函數(shù)的使用相同,。 我們先用RandBetween函數(shù)生成一個在2和最大行數(shù)之間的隨機數(shù),,然后把該隨機數(shù)對應(yīng)的卡片號在'g'列查找。因為查找到的結(jié)果是一個單元格對象,,所以查找結(jié)果的賦值要加上'Set',。如果找到了,說明該卡片號已經(jīng)被抽取到'g'列了,,所以不再重復(fù)抽取,。如果沒找到,就把該卡片號復(fù)制到'g'列,。 不過這個程序運行以后,,可能因為產(chǎn)生的隨機數(shù)會相同,所以抽取的卡片達不到3個,。所以我們可以把For循環(huán)的次數(shù)加大,,結(jié)果Exit For語句使用。上面的程序我們可以修改一下: Sub find() h = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To 10 sj = Application.RandBetween(2, h) Set 查找結(jié)果 = Range('g:g').find(Cells(sj, 1)) If 查找結(jié)果 Is Nothing Then n = n + 1 Cells(n, 'g') = Cells(sj, 1) End If If n = 3 Then Exit For Next End Sub 這樣就能保證每次都能抽取到3個卡片號了,。不過這樣寫程序,,如果For循環(huán)的次數(shù)設(shè)置的不合理,仍然不會得到我們想要的結(jié)果,。在以后的章節(jié)里,,我們會學(xué)到另一個循環(huán)語句Do Loop語句,它會無限次循環(huán),,直到達到我們需要的結(jié)果為止,。本章節(jié)主要是介紹Find語句的用法,各位可以自己動手編寫一些語句,,測試一下Find語句每個參數(shù)的用法,。 |
|