kevinch 发表于 2011-8-8 15:46:38

#include <Array.au3>

Local $sFilepath = "d:\rm.xls"
Local $oExcel = ObjGet($sFilepath)
Local $aName

If @error = 1 Then
      MsgBox(0, "错误!", "无法创建对象!")
      Exit
ElseIf @error = 2 Then
      MsgBox(0, "错误!", "文件不存在!")
      Exit
EndIf

$o_Dic = ObjCreate("scripting.dictionary")
With $oExcel.activesheet
      For $o_Rng In .range("a2", .cells(.rows.count, 1).end(3))
                If $o_Dic.exists($o_Rng.value) Then
                        $o_Dic($o_Rng.value) = $o_Dic($o_Rng.value) + 1
                Else
                        $o_Dic($o_Rng.value)=1
                EndIf
      Next
EndWith
$oExcel.close(false)
ReDim $aName[$o_Dic.count]
$a_Arr=$o_Dic.keys
   For $i=0 To UBound($a_Arr)-1
      $aName[$i] = $a_Arr[$i]
      $aName[$i] = $o_Dic($a_Arr[$i])
   Next
_ArrayDisplay($aName)这个可以了

kuku645 发表于 2012-8-4 19:27:19

如果我要跟多个条件怎么改?

pchome2000 发表于 2012-8-4 19:42:12

学习心态来学习下 前辈的经验

pchome2000 发表于 2012-8-4 19:42:22

学习心态来学习下 前辈的经验            {:face (327):}

ipmitool 发表于 2014-8-11 17:32:59


想問高手, 以您這個為例, 我如果左邊的excel表要變成右邊這樣, 該怎麼做呢? 就是...
甲: a, b, c, d
乙: e, f
丙: g, h
丁: j
要變成右邊的歸類好的樣子, 是否可以辦到呢? 謝謝謝謝

h20040606 发表于 2014-8-11 19:36:29

没有看明白啊

ipmitool 发表于 2014-8-12 09:19:24

簡單的說, 就是讀出
甲有 a, b, c, d
乙有 e, f
丙有 g, h
丁有 j

kevinch 发表于 2014-8-12 16:45:16

本帖最后由 kevinch 于 2014-8-12 17:07 编辑

回复 22# ipmitool
可以处理,方法有点另类,你用下面代码试下,源文档命名为test.xls放到程序目录下$oexcel=ObjGet(@ScriptDir&"\test.xls")
$arr=$oexcel.activesheet.usedrange.value
$oexcel.close(False)
If IsArray($arr) Then
        $dic=ObjCreate("scripting.dictionary")
        $dic2=ObjCreate("scripting.dictionary")
        For $n=0 To UBound($arr,2)-1
                If $dic.exists($arr[$n]) Then
                        $dic($arr[$n])=$dic($arr[$n])&"<td>"&$arr[$n]&"</td>"
                        $dic2($arr[$n])=$dic2($arr[$n])+1
                Else
                        $dic($arr[$n])="<td>"&$arr[$n]&"</td>"
                        $dic2($arr[$n])=1
                EndIf
        Next
        $str="<table><tr><td>"&$dic.count&"</td><td>"&UBound($arr,2)&"</td></tr>"
        $arr=$dic.keys
        For $n=0 To UBound($arr)-1
                $str&="<tr><td>"&$arr[$n]&"</td><td>"&$dic2($arr[$n])&"</td>"&StringRegExpReplace($dic($arr[$n]),"(?is)(<\/td\>[\s\S]*?\<\/td\>[\s\S]*?\<\/td\>)","$1</tr><tr><td></td><td></td>")&"</tr>"
        Next
        $str&="</table>"
        $oexcel=ObjCreate("excel.application")
        $oexcel.visible=True
        $wb=$oexcel.workbooks.add
        With $wb.activesheet
                ClipPut($str)
                .paste(.range("a1"))
        EndWith
EndIf

ipmitool 发表于 2014-8-13 08:10:17

天啊, 太屌了吧, 好強喔~~謝謝你!

ipmitool 发表于 2014-8-13 11:24:16

不過...我真的看不懂高手的思維...能不能幫忙加註解啊?~呵呵...

deaph 发表于 2014-12-22 14:26:54

学习了,感谢分享,收藏下

44003434 发表于 2014-12-24 19:35:14

读取EXCEL中的人名,统计重复人名的数量,记录在二维数组里【已解决】

aiwen0092 发表于 2015-1-6 06:56:18

哈哈,过来看看
页: 1 [2]
查看完整版本: 读取EXCEL中的人名,统计重复人名的数量,记录在二维数组里【已解决】