回复 9# kevinch
kevinch你好恕我愚昧,字典对象看了这里的教程贴后还不是非常明白什么意思。是不是我们创建了数据组引用Dictionary对象变量如这里$dic.exits($arr)那么$arr数组的项目和key就存储在字典里面了?
我的理解是这样的。
;数据库里面是这样的
a00000001 pbx.netease.com
a00000002 192.168.130.11
a00000003 oa.netease.com
a00000004 vsp.netease.com
a00000005 her.x.netease.com
a00000006 webcgi.163.com
a00000007 csxy.163.com
a00000008 xyw.163.com
a00000009 xy2.163.com
a00000010 cms.netease.com
a00000011 xy3.163.com
a00000012 xyq.163.com
a00000013 pk.163.com
a00000014 dt.163.com
a00000015 wh.163.com
a00000016 dt2.163.com
a00000017 itown.163.com
a00000018 tk.163.com
..... ......$wb=$oexcel.workbooks.open(@ScriptDir&"\数据库.xlsx")
For $ws In $wb.worksheets
With $ws
$r=.cells(.rows.count,1).end(3).row
If $r>1 Then
$arr=.range("a1").resize($r,2).value;这个语句$arr的数组的对象就是上面的项目。
For $n=0 To UBound($arr,2)-1 ;UBound($arr,2)-1项目数量减1
If $dic.exists($arr[1][$n]) Then ;字典对象存在$arr[1][$n],如这里$n=2 ;$arr[1][0]=pbx.netease.com;$arr[1][1]=192.168.130.11
$dic($arr[1][$n])=$dic($arr[1][$n])&@CRLF&$arr[0][$n];执行了这个语句后$arr[1][0]=pbx.netease.com&@CRLF&a00000001;$arr[1][1]=192.168.130.11&@CRLF&a00000002
Else
$dic($arr[1][$n])=$arr[0][$n];那既然$arr[1][$n]都不为“”这一条语句还会执行么?
EndIf
Next
EndIf
EndWith
Next
$wb=$oexcel.workbooks.open(@ScriptDir&"\需对比文档.xlsx")
:对比文档
fs06
post.travel.163.com
news.163.com
blog.163.com
fs06
csc3-2004-crl.verisign.com
crl.verisign.com
csc3-2004-crl.verisign.com
crl.verisign.com
fs06
www.ne2008.com
post.travel.163.com
news.163.com
blog.163.com
img.nie.163.com
cs.nie.163.com
cs.nie.163.com
img.nie.163.com
cs.nie.163.com
fs06
For $ws In $wb.worksheets
With $ws
$r=.cells(.rows.count,1).end(3).row
If $r>1 Then
$arr=.range("a1").resize($r,1).value;这里$arr的数据是$arr[0]=fs06;$arr[1]=post.travel.163.com;$arr[2]=news.163.com
For $n=0 To UBound($arr,2)-1;请问这里$arr是一维数组的话这里为什么UBound($arr,2)?
If $dic.exists($arr[0][$n]) Then;字典对象数据库数组$arr[0][0]=a00000001;$arr[0][1]=a00000002;$arr[0][2]=a00000003
$arr[0][$n]=$dic($arr[0][$n]);这里是否把字典对象数据组$arr[0][0]=a00000001;$arr[0][1]=a00000002;$arr[0][2]=a00000003赋给$arr[0][0]=fs06;$arr[0][1]=post.travel.163.com?
Else
$arr[0][$n]=""
EndIf
Next
.range("b1").resize($r,1).value=$arr;最后这个$arr的对比结果是怎么样的呢?
.columns.autofit
.rows.autofit
EndIf
EndWith
Next
不好意思本人基础浅薄,期待您的回答!! |