|
回复 augustiner
4 ?9 L- W6 }/ h' r* B1 E
: R! c6 L8 Z+ `' ~ B0 m0 u- f$ Q1 ^" C
这书的作者也太搞了把,说话有点逻辑没有?谁说用vba是为了去重复写已有的函数, ...
0 c/ ?& C5 C% X- A) g; T( C" m/ {- y q! \' P
举个例子: s- f k$ r6 H u- y8 o2 u; u3 `5 G/ K. u- `
7 u' S7 T6 y; `' g( ?5 [6 h: ]+ k+ n) o" f" ~: D比如我有两列数A,B,每列5000个数据,我要查找A列有,B列没有的数,并且输到C列中,你用excel函数怎么做? Q3 ~/ K/ u9 X5 k6 p$ I8 R+ E
) ~* s( U1 K' B _/ G- B8 T4 @8 V% F( ?5 v
2 O& n6 Y L) S好,你通过复制粘贴列,用vlookup查找,再通过复制粘贴列可以实现。2 c# m6 Y% a: Q+ o$ J1 \; P9 M4 T$ ]) `$ | I7 a* ~
+ `( ?/ S2 ~3 a3 Y0 P+ s- 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
1 L: a# X! J' c; ~* ?$ B# h0 |' W4 w2 n A
: 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# y/ D. ] p# D: T
" a$ d7 E! N+ [0 R2 ~. s+ @) @0 G! b
写几行基本的vba代码(因为本身就是基于最简单的basic语句),这些工作就在你喝杯咖啡聊个天的功夫自动完成了,比你累的两眼昏花,加班加点的干,最后发现两次结果竟然还不一样不知道要好多少倍。而很多类似的工作都是每周或者每月需要干的。
0 D0 S; T+ j1 A* V7 \
( c% m- P1 t$ O4 s ^9 ?styler 发表于 20.3.2010 15:06 ![]() " k' [# ~3 ]& l- g
' K6 l7 D% G0 V" \- I: [这个方法固然可行,但是执行效率不高,如果你有的不是5000条数据,而是50000条数据,这样二重循环就会变得相对较慢
% ?3 a5 \# M$ P: K/ P+ Q比较快的方法是,用excel对两列数据进行排序(sorting),然后编写vba 程序,直接顺序查找。' m' ]: Y9 ?: {& Q0 E# P
7 L% d4 G. S" o1 P我个人而言是同意楼主的观点的,如果想用好excel,首先要了解excel的功能,然后才是vba代码的编写,且不可本末倒置; X( l9 q! _9 D- Y0 v
我本人就是走入了误区,因为会写代码,所以对excel功能了解不全面(反正写代码都能完成),有的时候,事倍功半。
8 c/ t7 y& n7 }4 V& o% u% n(一家之言。。。。。) |
|