作者stma (BBS)
看板Office
標題[問題] Excel VBA 找尋/複製關鍵欄
時間Sat Jan 14 22:39:44 2017
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體: office 2016
版本: 2016
ppt.cc/FlRbq
^^^^^^^^^^^^^^^^^^^
直接看圖比較快
關鍵字 = A2 內的"AAA"
需求是 搜尋E1~I1 中 完全符合 A2 關鍵字 "AAA"
把目標欄整欄複製到黃色區域
本來想用find 函數, 但 Find (what,) 找address 一直try 失敗....
想請問大家有無較好方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.38.107
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1484404787.A.4C4.html
1F:→ soyoso: range.find what的部分指定儲存格a2,要完全符合的話 01/14 23:58
2F:→ soyoso: lookat的部分也請設定,要整欄複製以range.entirecolumn 01/15 00:00
3F:→ soyoso: copy至黃色區域 01/15 00:01
4F:→ soyoso: 如不以range.copy的話則以range = range.value的方式複製 01/15 00:03
5F:推 waiter337: 要用lookat:=xlwhole 01/15 22:12
6F:→ waiter337: sheets("工作表1").Rows(1).Find(What:="AAA", Lookat: 01/15 22:14
7F:→ waiter337: =xlWhole, LookIn:=xlValues, SearchDirection:= 01/15 22:14
8F:→ waiter337: xlPrevious).Column 01/15 22:15
9F:→ waiter337: Rows(1)是找的列號 01/15 22:17
10F:→ waiter337: lookat:=xlwhole 是完整比對,若沒打就是模糊比對 01/15 22:18
11F:→ waiter337: SearchDirection:=xlPrevious 是向後尋找,xlnext是相反 01/15 22:18
12F:→ waiter337: 如果what:="AAA"改成what:="*" 則會找出最後一列資料 01/15 22:22
13F:→ waiter337: 的欄號 01/15 22:23
14F:→ waiter337: 如果把rows(1)換成columns(1),同時.column換成.row 則 01/15 22:24
15F:→ waiter337: 會改找列值 01/15 22:24
16F:→ soyoso: "若沒打就是模糊比對",並不是喔,而是尋找及取代視窗如果 01/15 22:37
17F:→ soyoso: "儲存格內容須完全相符"(勾選)時,若沒打時也是比對完全相 01/15 22:39
18F:→ soyoso: 符 01/15 22:40
19F:→ soyoso: 沒打並不一定預設就是以模糊比對 01/15 22:44
20F:→ soyoso: 另外xlPrevious 是向後尋找,應為向前或向上一個符合值吧 01/15 22:53
22F:→ waiter337: 感謝s大,但我在使用上也覺得怪怪的 01/17 04:02
23F:推 waiter337: 想問一下 為什麼123的xlnext 不是1 01/17 04:17
27F:→ waiter337: 這個問題 我也一直感覺像在迷霧裡面 01/17 04:20
28F:→ waiter337: 我在猜想,他是否用row(1)開始起算的 01/17 04:22
29F:→ waiter337: 但更詭異的是找空白"*" 非空白格他還是說 row(2) 01/17 04:23
31F:→ waiter337: 眼神死=.= 01/17 04:26
32F:→ waiter337: 阿,那個找空白是說找最頭或最尾的"任何"值 在+1或-1 01/17 04:28
33F:→ waiter337: 但對於CCC 這個 他不管怎麼找都不會是1 xd 好難懂=m= 01/17 04:29
36F:推 waiter337: 因為我很常用這個寫法,但真的想找第一欄或列是沒辦法 01/17 04:35
37F:→ waiter337: 的,我外面會包個if,假如這行沒資料就不會啟用find 01/17 04:35
40F:推 waiter337: 程式都沒改 01/17 04:39
41F:→ waiter337: 使用上很奇妙 01/17 04:40
42F:→ waiter337: 後面的頭尾寫反了 01/17 04:41
43F:推 waiter337: Msgbox的頭尾寫反了 01/17 04:41
44F:→ soyoso: 因為會配合參數after,而巨集內省略的話則搜尋會從範圍左 01/17 07:08
45F:→ soyoso: 上角的儲存格之後開始 01/17 07:08
48F:→ soyoso: 搜尋上會以after這個參數之前、之後 01/17 07:30
49F:→ soyoso: 因此如以range.find範圍內第一筆找非空白儲存格的話,可以 01/17 07:47
50F:→ soyoso: after參數設為範圍最下方儲存格,searchdirection設為 01/17 07:48
51F:→ soyoso: xlnext 01/17 07:48
52F:→ waiter337: 學到了!!!!!!!!!!!!!!!!!!!!!!!!!!! 01/17 15:56