|
回复 augustiner . B$ q* n9 B2 i$ o$ N" k* i/ }0 L8 S
: G* l) N# R5 d% \ ^1 O
( G1 D8 [8 Y$ N- ~& } 这书的作者也太搞了把,说话有点逻辑没有?谁说用vba是为了去重复写已有的函数, ...6 f, C/ E0 f, z- {
& g% u0 j" z3 u( x. A举个例子: s- f k$ r6 H u- y8 o2 u. u, d" Q0 ~. X4 \8 t
. D/ Z$ a6 j/ S6 h: ]+ k+ n) o" f" ~: D比如我有两列数A,B,每列5000个数据,我要查找A列有,B列没有的数,并且输到C列中,你用excel函数怎么做?
" l8 O; E5 L1 b$ g) ~* s( U1 K' B _/ G- B8 T4 @8 V% F( ?5 v
" H% y/ o0 [. l好,你通过复制粘贴列,用vlookup查找,再通过复制粘贴列可以实现。2 c# m6 Y% a: Q+ o$ J1 \8 F# g1 p3 m/ w$ K, p7 @( j
4 Q9 ]( D! \1 C6 n- b, ~5 V" ^* }" D/ y如果我这两列数是在两个工作表中,第一个工作表有包含A列在内的200列,第二个工作表只有B列,我同样需要找到A列有,B列没有的数,并且把a列所在表中的该数所在行的15,33,49,77,88,99,100,150....列的相应数字拷贝到B列所在表的相应行,你单纯用excel怎么做?有什么函数能减少这种纯体力劳动?如果两列数有3000个数据是相同的,你预计要或多长时间完成这个3000行的操作?% ?+ b8 f1 E7 }; G% S
$ O3 c1 l: l0 y1 `% c
5 X6 R& o9 [$ G7 F/ @5 H: C4 C( l" ?: h5 I9 X% D而这些我用cell(i,j)加两个for循环,一个if语句,核心代码不超过15行就可以搞定,不要太简单啊,而且永远不会出错。5分钟可以将这段代码讲清楚,可是5分钟想讲清楚=vlookup(,,,)怕是不容易把。0 U/ d% N! x$ k$ F1 Y0 v
" X9 U2 P; l0 \: g" a$ d7 E! N+ [0 R; K( ]' f N J3 v5 Z% @
写几行基本的vba代码(因为本身就是基于最简单的basic语句),这些工作就在你喝杯咖啡聊个天的功夫自动完成了,比你累的两眼昏花,加班加点的干,最后发现两次结果竟然还不一样不知道要好多少倍。而很多类似的工作都是每周或者每月需要干的。3 r0 S) _2 `/ B+ x7 c/ a- T# }
% X* J, R4 ?6 {* istyler 发表于 20.3.2010 15:06 ![]() * o2 x9 b6 ^& r' {" E
3 ?0 W$ E" B: f. H
这个方法固然可行,但是执行效率不高,如果你有的不是5000条数据,而是50000条数据,这样二重循环就会变得相对较慢
# T8 N$ b2 r8 m( m K比较快的方法是,用excel对两列数据进行排序(sorting),然后编写vba 程序,直接顺序查找。, F' C& y* p k2 W/ O
5 t" c2 {1 j! J4 Q# |0 @
我个人而言是同意楼主的观点的,如果想用好excel,首先要了解excel的功能,然后才是vba代码的编写,且不可本末倒置
% b1 l' W/ e9 [5 E我本人就是走入了误区,因为会写代码,所以对excel功能了解不全面(反正写代码都能完成),有的时候,事倍功半。
; i2 j5 }$ k" e: Y" O; w/ C- r(一家之言。。。。。) |
|