[問題] Excel VBA 找尋/複製關鍵欄

看板Office作者 (BBS)時間9年前 (2017/01/14 22:39), 編輯推噓7(7045)
留言52則, 2人參與, 最新討論串1/1
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: 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

01/14 23:58, , 1F
range.find what的部分指定儲存格a2,要完全符合的話
01/14 23:58, 1F

01/15 00:00, , 2F
lookat的部分也請設定,要整欄複製以range.entirecolumn
01/15 00:00, 2F

01/15 00:01, , 3F
copy至黃色區域
01/15 00:01, 3F

01/15 00:03, , 4F
如不以range.copy的話則以range = range.value的方式複製
01/15 00:03, 4F

01/15 22:12, , 5F
要用lookat:=xlwhole
01/15 22:12, 5F

01/15 22:14, , 6F
sheets("工作表1").Rows(1).Find(What:="AAA", Lookat:
01/15 22:14, 6F

01/15 22:14, , 7F
=xlWhole, LookIn:=xlValues, SearchDirection:=
01/15 22:14, 7F

01/15 22:15, , 8F
xlPrevious).Column
01/15 22:15, 8F

01/15 22:17, , 9F
Rows(1)是找的列號
01/15 22:17, 9F

01/15 22:18, , 10F
lookat:=xlwhole 是完整比對,若沒打就是模糊比對
01/15 22:18, 10F

01/15 22:18, , 11F
SearchDirection:=xlPrevious 是向後尋找,xlnext是相反
01/15 22:18, 11F

01/15 22:22, , 12F
如果what:="AAA"改成what:="*" 則會找出最後一列資料
01/15 22:22, 12F

01/15 22:23, , 13F
的欄號
01/15 22:23, 13F

01/15 22:24, , 14F
如果把rows(1)換成columns(1),同時.column換成.row 則
01/15 22:24, 14F

01/15 22:24, , 15F
會改找列值
01/15 22:24, 15F

01/15 22:37, , 16F
"若沒打就是模糊比對",並不是喔,而是尋找及取代視窗如果
01/15 22:37, 16F

01/15 22:39, , 17F
"儲存格內容須完全相符"(勾選)時,若沒打時也是比對完全相
01/15 22:39, 17F

01/15 22:40, , 18F
01/15 22:40, 18F

01/15 22:44, , 19F
沒打並不一定預設就是以模糊比對
01/15 22:44, 19F

01/15 22:53, , 20F
另外xlPrevious 是向後尋找,應為向前或向上一個符合值吧
01/15 22:53, 20F

01/15 22:53, , 21F
01/15 22:53, 21F

01/17 04:02, , 22F
感謝s大,但我在使用上也覺得怪怪的
01/17 04:02, 22F

01/17 04:17, , 23F
想問一下 為什麼123的xlnext 不是1
01/17 04:17, 23F

01/17 04:17, , 24F

01/17 04:18, , 25F

01/17 04:19, , 26F

01/17 04:20, , 27F
這個問題 我也一直感覺像在迷霧裡面
01/17 04:20, 27F

01/17 04:22, , 28F
我在猜想,他是否用row(1)開始起算的
01/17 04:22, 28F

01/17 04:23, , 29F
但更詭異的是找空白"*" 非空白格他還是說 row(2)
01/17 04:23, 29F

01/17 04:26, , 30F

01/17 04:26, , 31F
眼神死=.=
01/17 04:26, 31F

01/17 04:28, , 32F
阿,那個找空白是說找最頭或最尾的"任何"值 在+1或-1
01/17 04:28, 32F

01/17 04:29, , 33F
但對於CCC 這個 他不管怎麼找都不會是1 xd 好難懂=m=
01/17 04:29, 33F

01/17 04:33, , 34F

01/17 04:33, , 35F

01/17 04:35, , 36F
因為我很常用這個寫法,但真的想找第一欄或列是沒辦法
01/17 04:35, 36F

01/17 04:35, , 37F
的,我外面會包個if,假如這行沒資料就不會啟用find
01/17 04:35, 37F

01/17 04:36, , 38F

01/17 04:37, , 39F

01/17 04:39, , 40F
程式都沒改
01/17 04:39, 40F

01/17 04:40, , 41F
使用上很奇妙
01/17 04:40, 41F

01/17 04:41, , 42F
後面的頭尾寫反了
01/17 04:41, 42F

01/17 04:41, , 43F
Msgbox的頭尾寫反了
01/17 04:41, 43F

01/17 07:08, , 44F
因為會配合參數after,而巨集內省略的話則搜尋會從範圍左
01/17 07:08, 44F

01/17 07:08, , 45F
上角的儲存格之後開始
01/17 07:08, 45F

01/17 07:27, , 46F

01/17 07:28, , 47F

01/17 07:30, , 48F
搜尋上會以after這個參數之前、之後
01/17 07:30, 48F

01/17 07:47, , 49F
因此如以range.find範圍內第一筆找非空白儲存格的話,可以
01/17 07:47, 49F

01/17 07:48, , 50F
after參數設為範圍最下方儲存格,searchdirection設為
01/17 07:48, 50F

01/17 07:48, , 51F
xlnext
01/17 07:48, 51F

01/17 15:56, , 52F
學到了!!!!!!!!!!!!!!!!!!!!!!!!!!!
01/17 15:56, 52F
文章代碼(AID): #1OUZWpJ4 (Office)
文章代碼(AID): #1OUZWpJ4 (Office)