excel里sheet1的ambass栏要填,site栏是key。和sheet2 sheet3有一对一关系,最后从sheet3得出ambass填入sheet1。纯表操作用sql来做非常方便,整个方法跑下来只需要3秒就跑完了,没有VBA众多循环判断关系,简单的select update两句即可。
需要注意的重点:
- vba里外连接异常困难,3个表或以上的内加外连接难以实现。我尝试了很久最终还是放弃了,用回简单的内连接,增加sql语句数,一样可以实现。
- excel里为空的单元格,既不是null,也不是'',也不是' ',也没有字符串长度,也没有类型,我不能选中它们,大神们有办法请告知
- VBA里不可用delete语句,真要delete只能曲线救国,用update set栏位为null
select语句的输出:
strsql1 = "select distinct A.[Site],C.[CA] from [Sheet1$] A ,[location$] C where A.[Site]=C.[Local]"
Set Rst = Conn.Execute(strsql1) --rst为执行sql之后的表
Sheets("Output").Range("A2").CopyFromRecordset Rst --把rst输出到sheet(output)里,A2单元格开始,关键字CopyFromRecordset
update语句则更简单,只要执行就好:
Set Rst = Conn.