|
回复 augustiner 4 P& ?# R2 P% a9 F4 Y) P7 ]7 T* }
7 H( c; k% S7 W4 K
2 m( q7 h; [9 P# L ] 这书的作者也太搞了把,说话有点逻辑没有?谁说用vba是为了去重复写已有的函数, ..." F4 G5 }- x8 s7 e0 k& E& D
: ~7 H" l$ V! E% |/ R3 P举个例子: s- f k$ r6 H u- y8 o2 u5 t$ Z! H$ F) i5 S
2 n. M; X: p. R/ v* B6 h: ]+ k+ n) o" f" ~: D比如我有两列数A,B,每列5000个数据,我要查找A列有,B列没有的数,并且输到C列中,你用excel函数怎么做?
, s/ o h; `2 S" h# Z% z) ~* s( U1 K' B _/ G- B8 T4 @8 V% F( ?5 v
/ n; n7 Z& z( A9 t* N+ z好,你通过复制粘贴列,用vlookup查找,再通过复制粘贴列可以实现。2 c# m6 Y% a: Q+ o$ J1 \; {% B+ k1 @) ]4 Z4 o; [
% ~( K `. v. k1 }! R# u6 r7 Y+ Z- 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
. N/ l- F7 g* C
Z; Q* A2 W4 y O) Y" ^: 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
* z0 ~$ W* P# O3 }2 y9 i" a$ d7 E! N+ [0 R
+ t' K( A/ W# r& I写几行基本的vba代码(因为本身就是基于最简单的basic语句),这些工作就在你喝杯咖啡聊个天的功夫自动完成了,比你累的两眼昏花,加班加点的干,最后发现两次结果竟然还不一样不知道要好多少倍。而很多类似的工作都是每周或者每月需要干的。
" S/ @9 {# Q! z# Q% n, ^0 l1 C" ^ G/ p- A8 `+ }3 @
styler 发表于 20.3.2010 15:06
2 `1 @9 i& ]6 P2 l+ V
9 Y3 {% S% c2 D8 T这个方法固然可行,但是执行效率不高,如果你有的不是5000条数据,而是50000条数据,这样二重循环就会变得相对较慢
% D4 p) V# n, W8 r' G比较快的方法是,用excel对两列数据进行排序(sorting),然后编写vba 程序,直接顺序查找。) \2 j/ ^% `% \- S& Z" A' z
1 f" l# H6 E- k: g5 G6 a我个人而言是同意楼主的观点的,如果想用好excel,首先要了解excel的功能,然后才是vba代码的编写,且不可本末倒置( e, X+ j, a: |3 B
我本人就是走入了误区,因为会写代码,所以对excel功能了解不全面(反正写代码都能完成),有的时候,事倍功半。
1 {* Q. M. X" @" L+ I# F9 L" h(一家之言。。。。。) |
|