|
回复 augustiner
$ n# ~, b8 Z' T% W( H; Y, t% o4 \# ?! U& b" E9 w8 x; Z; h" R
( ~4 f/ u7 F+ F. S8 x
这书的作者也太搞了把,说话有点逻辑没有?谁说用vba是为了去重复写已有的函数, ...2 j6 P( d M; k1 E: ~
8 e8 `! B4 ~& k% v* u8 ~5 ]$ T举个例子: s- f k$ r6 H u- y8 o2 u8 R5 k9 O3 b; b/ |! H0 w
" N8 `! n* R4 I( u! C6 h: ]+ k+ n) o" f" ~: D比如我有两列数A,B,每列5000个数据,我要查找A列有,B列没有的数,并且输到C列中,你用excel函数怎么做?
: A" u5 |6 V( p* u. D7 e) ~* s( U1 K' B _/ G- B8 T4 @8 V% F( ?5 v( |& Q8 E: _: {) I$ Q/ U
好,你通过复制粘贴列,用vlookup查找,再通过复制粘贴列可以实现。2 c# m6 Y% a: Q+ o$ J1 \& L. ~. z! t @! c* f
; k6 K1 p- L5 h3 T6 ^- 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& Y" }$ {" V8 H2 L) u' B' B
* |3 p/ H# ]3 h9 d& j/ P* m: 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
" v. P2 T) U3 Q7 y. B) n w% F" a$ d7 E! N+ [0 R% A0 j1 T. o( e* ^0 F- K: d
写几行基本的vba代码(因为本身就是基于最简单的basic语句),这些工作就在你喝杯咖啡聊个天的功夫自动完成了,比你累的两眼昏花,加班加点的干,最后发现两次结果竟然还不一样不知道要好多少倍。而很多类似的工作都是每周或者每月需要干的。
4 l% p* l3 i8 T% T, E5 m9 P* f
2 Q9 h" ^0 X% |, J7 q/ g9 ]styler 发表于 20.3.2010 15:06
9 F6 }6 i. Z, z. Y4 j4 v' Y
7 \( R9 ^" _/ S/ S; u+ p" R8 c# u这个方法固然可行,但是执行效率不高,如果你有的不是5000条数据,而是50000条数据,这样二重循环就会变得相对较慢
! C" T2 \$ [/ j) @: m4 o比较快的方法是,用excel对两列数据进行排序(sorting),然后编写vba 程序,直接顺序查找。
0 e+ n) K' ~: |6 h2 a% `. I- C7 s$ n9 t1 R1 R3 `! |9 _
我个人而言是同意楼主的观点的,如果想用好excel,首先要了解excel的功能,然后才是vba代码的编写,且不可本末倒置$ ]- q) u/ Q5 W) K! ]- a. n
我本人就是走入了误区,因为会写代码,所以对excel功能了解不全面(反正写代码都能完成),有的时候,事倍功半。! [# \1 t; y0 @8 i$ n$ ~
(一家之言。。。。。) |
|