作者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://www.ptt.cc/bbs/Office/M.1484404787.A.4C4.html
→ soyoso: range.find what的部分指定儲存格a2,要完全符合的話 01/14 23:58
→ soyoso: lookat的部分也請設定,要整欄複製以range.entirecolumn 01/15 00:00
→ soyoso: copy至黃色區域 01/15 00:01
→ soyoso: 如不以range.copy的話則以range = range.value的方式複製 01/15 00:03
推 waiter337: 要用lookat:=xlwhole 01/15 22:12
→ waiter337: sheets("工作表1").Rows(1).Find(What:="AAA", Lookat: 01/15 22:14
→ waiter337: =xlWhole, LookIn:=xlValues, SearchDirection:= 01/15 22:14
→ waiter337: xlPrevious).Column 01/15 22:15
→ waiter337: Rows(1)是找的列號 01/15 22:17
→ waiter337: lookat:=xlwhole 是完整比對,若沒打就是模糊比對 01/15 22:18
→ waiter337: SearchDirection:=xlPrevious 是向後尋找,xlnext是相反 01/15 22:18
→ waiter337: 如果what:="AAA"改成what:="*" 則會找出最後一列資料 01/15 22:22
→ waiter337: 的欄號 01/15 22:23
→ waiter337: 如果把rows(1)換成columns(1),同時.column換成.row 則 01/15 22:24
→ waiter337: 會改找列值 01/15 22:24
→ soyoso: "若沒打就是模糊比對",並不是喔,而是尋找及取代視窗如果 01/15 22:37
→ soyoso: "儲存格內容須完全相符"(勾選)時,若沒打時也是比對完全相 01/15 22:39
→ soyoso: 符 01/15 22:40
→ soyoso: 沒打並不一定預設就是以模糊比對 01/15 22:44
→ soyoso: 另外xlPrevious 是向後尋找,應為向前或向上一個符合值吧 01/15 22:53
→ waiter337: 感謝s大,但我在使用上也覺得怪怪的 01/17 04:02
推 waiter337: 想問一下 為什麼123的xlnext 不是1 01/17 04:17
→ waiter337: 這個問題 我也一直感覺像在迷霧裡面 01/17 04:20
→ waiter337: 我在猜想,他是否用row(1)開始起算的 01/17 04:22
→ waiter337: 但更詭異的是找空白"*" 非空白格他還是說 row(2) 01/17 04:23
→ waiter337: 眼神死=.= 01/17 04:26
→ waiter337: 阿,那個找空白是說找最頭或最尾的"任何"值 在+1或-1 01/17 04:28
→ waiter337: 但對於CCC 這個 他不管怎麼找都不會是1 xd 好難懂=m= 01/17 04:29
推 waiter337: 因為我很常用這個寫法,但真的想找第一欄或列是沒辦法 01/17 04:35
→ waiter337: 的,我外面會包個if,假如這行沒資料就不會啟用find 01/17 04:35
推 waiter337: 程式都沒改 01/17 04:39
→ waiter337: 使用上很奇妙 01/17 04:40
→ waiter337: 後面的頭尾寫反了 01/17 04:41
推 waiter337: Msgbox的頭尾寫反了 01/17 04:41
→ soyoso: 因為會配合參數after,而巨集內省略的話則搜尋會從範圍左 01/17 07:08
→ soyoso: 上角的儲存格之後開始 01/17 07:08
→ soyoso: 搜尋上會以after這個參數之前、之後 01/17 07:30
→ soyoso: 因此如以range.find範圍內第一筆找非空白儲存格的話,可以 01/17 07:47
→ soyoso: after參數設為範圍最下方儲存格,searchdirection設為 01/17 07:48
→ soyoso: xlnext 01/17 07:48
→ waiter337: 學到了!!!!!!!!!!!!!!!!!!!!!!!!!!! 01/17 15:56