日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

學(xué)習(xí)VBA,報(bào)表做到飛 第一章 入門篇 1.18 Find語句

 拾叁億人 2023-04-05 發(fā)布于云南

第一章 入門篇

1.18 Find語句

Find語句的功能相當(dāng)于Excel菜單里的“查找”。該語句的語法是這樣的:

Range('要查找的區(qū)域').Find(What,After,Lookin,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)

Find語句在要查找的區(qū)域中查找信息,返回找到該信息的第一個(gè)單元格,沒找到返回Nothing。

讓我們來了解一下Find的參數(shù):

Find語句有這么多參數(shù),其實(shí)它只有一個(gè)必選參數(shù)What,其它參數(shù)都是可選。

What 要查什么?

After 在哪個(gè)單元格之后開始查詢

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)的。在“查找”菜單里點(diǎn)選的功能,都可以通過設(shè)置Find語句的參數(shù),在VBA里實(shí)現(xiàn)。

查找內(nèi)容可以使用通配符,如:*、?等。

例句:

在下表中的B列找到臺式電腦,彈出它的地址。

卡片號

資產(chǎn)名稱

建卡日期

原值

凈值

00007933

空調(diào)

2007-12-31

498720.00

14961.60

00007934

臺式電腦

2007-12-31

35670.00

1070.10

00012189

音響設(shè)備

2007-12-31

12420.00

372.60

00014439

照相機(jī)

2008-06-11

6800.00

204.00

00014439

音響設(shè)備

2008-06-11

6800.00

204.00

00014439

音響設(shè)備

2008-06-11

6800.00

204.00

00072375

監(jiān)控設(shè)備

2013-12-28

16986.00

509.58

00072448

空調(diào)

2013-12-28

6405.00

192.15

MsgBox Range('b:b').find('臺式電腦').Address

這樣返回的是一個(gè)絕對引用地址:$B$3,這時(shí)可以用.Address(0,0),返回B3。

小程序:

從上表中隨機(jī)抽取3個(gè)卡片號,把抽取結(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的一個(gè)函數(shù)RandBetween來生成一個(gè)隨機(jī)數(shù)。想在VBA里引用現(xiàn)有的Excel函數(shù)時(shí),在函數(shù)前加上Application就可以了,用法與函數(shù)的使用相同。

我們先用RandBetween函數(shù)生成一個(gè)在2和最大行數(shù)之間的隨機(jī)數(shù),然后把該隨機(jī)數(shù)對應(yīng)的卡片號在'g'列查找。因?yàn)椴檎业降慕Y(jié)果是一個(gè)單元格對象,所以查找結(jié)果的賦值要加上'Set'。如果找到了,說明該卡片號已經(jīng)被抽取到'g'列了,所以不再重復(fù)抽取。如果沒找到,就把該卡片號復(fù)制到'g'列。

不過這個(gè)程序運(yùn)行以后,可能因?yàn)楫a(chǎn)生的隨機(jī)數(shù)會相同,所以抽取的卡片達(dá)不到3個(gè)。所以我們可以把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個(gè)卡片號了。不過這樣寫程序,如果For循環(huán)的次數(shù)設(shè)置的不合理,仍然不會得到我們想要的結(jié)果。在以后的章節(jié)里,我們會學(xué)到另一個(gè)循環(huán)語句Do Loop語句,它會無限次循環(huán),直到達(dá)到我們需要的結(jié)果為止。本章節(jié)主要是介紹Find語句的用法,各位可以自己動手編寫一些語句,測試一下Find語句每個(gè)參數(shù)的用法。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多