作者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/cn.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