|
回复 augustiner * X Y! }' ] X' R
" U2 d }- x7 a2 r7 f" t. j* [8 K2 S# f3 X9 E& v
这书的作者也太搞了把,说话有点逻辑没有?谁说用vba是为了去重复写已有的函数, ...
* W" I3 y X# O* L- m8 b7 h3 R; `1 U& I5 c3 `
举个例子: s- f k$ r6 H u- y8 o2 u6 E6 V Q! d- U
1 w. W, m* t7 h9 L, n3 g, q6 h: ]+ k+ n) o" f" ~: D比如我有两列数A,B,每列5000个数据,我要查找A列有,B列没有的数,并且输到C列中,你用excel函数怎么做?
! ?- l j) N( \3 _) ~* s( U1 K' B _/ G- B8 T4 @8 V% F( ?5 v
5 V6 [0 R/ j8 r好,你通过复制粘贴列,用vlookup查找,再通过复制粘贴列可以实现。2 c# m6 Y% a: Q+ o$ J1 \* F: h: X3 E% u& Z2 |) _0 K
?1 W" F; w7 ?7 S1 Q6 o/ l A
- 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! ?, R# Z& |. V$ i b/ z9 p* }* \7 @
/ n8 b* i ]. F* Y& d4 I: 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: `! L0 V2 f8 O7 D0 z0 q! x: O
" a$ d7 E! N+ [0 R
+ L4 m# h$ g6 J; S写几行基本的vba代码(因为本身就是基于最简单的basic语句),这些工作就在你喝杯咖啡聊个天的功夫自动完成了,比你累的两眼昏花,加班加点的干,最后发现两次结果竟然还不一样不知道要好多少倍。而很多类似的工作都是每周或者每月需要干的。& m. k6 x$ }) `8 p* K K0 ^
1 j* b/ F. @" I# K1 T R/ Istyler 发表于 20.3.2010 15:06 ![]()
. @8 d, o# ?0 d9 {) {: ?6 R, \+ Q$ e6 Z! Q
这个方法固然可行,但是执行效率不高,如果你有的不是5000条数据,而是50000条数据,这样二重循环就会变得相对较慢; J+ c% N4 H# E1 O+ ~# c
比较快的方法是,用excel对两列数据进行排序(sorting),然后编写vba 程序,直接顺序查找。9 @* k! @6 N$ b, \5 w% m" X
+ h2 u5 f9 R& s5 F6 m( [7 I1 h
我个人而言是同意楼主的观点的,如果想用好excel,首先要了解excel的功能,然后才是vba代码的编写,且不可本末倒置7 H* f$ L) U/ J( D( C$ F1 F3 F- Y
我本人就是走入了误区,因为会写代码,所以对excel功能了解不全面(反正写代码都能完成),有的时候,事倍功半。0 p* {3 O, r9 F
(一家之言。。。。。) |
|