#include <Excel.au3>
#include <Array.au3>
Global $sFilePath = @ScriptDir & "\_myIniLtest.ini"
Local $vara = @ScriptDir & "\test.xlsx"
$oExcel = ObjCreate("excel.application")
$oExcel.visible = 0;True
$oWorkbook = $oExcel.workbooks.open($vara)
with $oWorkbook.worksheets("Sheet1")
$arr=.range("a1").currentregion.value
$arr = .application.transpose($arr) ;转置
.parent.close(false)
EndWith
;_ArrayDisplay($arr)
$str=''
For $i = 1 To UBound($arr)-1
If stringright($arr[$i],1) = '0' Then
$str &=$arr[$i] &'|'
Else
$str &=$arr[$i] &','
EndIf
next
$str=stringleft($str,stringlen($str)-1);去除尾部的,号 ;才发现更简单的写法:StringTrimRight($c, 1) ; 删除字符串右起 1个字符.!!!!
$brr=StringSplit($str,'|')
for $i= 1 to UBound($brr)-1
IniWrite($sFilePath, "单号分组", "分组" & $i, $brr[$i])
Next
floor6ggg 发表于 2019-11-21 14:44
您这个方法效率确实很高,分组不满足我的需求呢,我要求是10个一组,剩余的分成一组。 本帖最后由 floor6ggg 于 2019-11-21 16:17 编辑
取巧的写法,按照A列数据末位为0来进行分组,应该是可以实现10个为一组,余下为一组。 floor6ggg 发表于 2019-11-21 16:15
取巧的写法,按照A列数据末位为0来进行分组,应该是可以实现10个为一组,余下为一组。
A列数据没有规则,所以不行的,具体麻烦看下新上传的附件,谢谢! 本帖最后由 floor6ggg 于 2019-11-21 16:57 编辑
风过无痕 发表于 2019-11-21 16:28
A列数据没有规则,所以不行的,具体麻烦看下新上传的附件,谢谢!
没有规律的话,那就上面的代码是真的不适合了。。。。只能老老实实的计数10个,没得取巧了。。。:face (32):
将判断末位为0的那一句,更改成计数达到10个的时候。。。。。这样的话和其他大大的代码就没有多大区别了。。。
本帖最后由 chzj589 于 2019-11-21 18:11 编辑
风过无痕 发表于 2019-11-21 16:05
您这个方法效率确实很高,分组不满足我的需求呢,我要求是10个一组,剩余的分成一组。
优点:速度快。
#AutoIt3Wrapper_UseX64 = n
#include <Excel.au3>
Global $sFilePath = @ScriptDir & "\testA.txt"
Local $vara = @ScriptDir & "\快递单号.xlsx"
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & $vara & ";Extended Properties='Excel 12.0'")
$aArray = $addfld.Execute("SELECT * FROM ").GetRows
Local $iRowsA = UBound($aArray, $UBOUND_ROWS)
;_ArrayDisplay($aArray, "显示")
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("SELECT * FROM ")
$sResult1 = $RS.Fields(1).value
Dim $a = 2, $b = 1, $c
For $i = 2 To $iRowsA
$sResult = $RS.Fields(1).value
$RS.movenext
$c &= $sResult & ","
Local $sString = StringTrimRight($c, 1)
If $a = 11 Then
IniWrite($sFilePath, "快递单号", "分组" & $b, $sString)
$a = 1
$c = ""
$b += 1
EndIf
If $i = $iRowsA Then IniWrite($sFilePath, "快递单号", "分组" & $b, $sString)
$a += 1
Next
MsgBox(0, $iRowsA&"行", "写入完成", 1)
$RS.close
$addfld.Close
chzj589 发表于 2019-11-21 17:40
优点:速度快。
#AutoIt3Wrapper_UseX64 = n
大赞!好强的access!
思路不够宽,还真没想过从access着手。。。。。 chzj589 发表于 2019-11-21 17:40
优点:速度快。
这执行效率,给跪了!
问题事件简述:
双十一快递没揽收包裹,导致店铺被罚,1W+多条记录让我去查揽收时间,我搞到今早2点,也没弄明白思路,今天早上醒了就去网上找了VBA,再用AU3处理,最后在10点之前,领导去见客户的时候弄出来了。 风过无痕 发表于 2019-11-21 18:58
这执行效率,给跪了!
问题事件简述:
双十一快递没揽收包裹,导致店铺被罚,1W+多条记录让我去查揽收时 ...
把Excel文件当作数据库,设定编号或日期,搞个查询不就简单了
我也来占个位 好东西,先Mark一下。学习中
页:
1
[2]