Local $sFilePath1 = FileOpenDialog("选择导入电子表格文件", @ScriptDir & "", "Microsoft Excel 工作薄 (*.xls)", 1 + 2 + 4)
$oexcel=ObjCreate("excel.application") ;创建excel进程
$oexcel.visible=False ;隐藏进程界面,可以提高处理速度
$wb=$oexcel.workbooks.open($sFilePath1) ;打开选定工作簿
$arr=$wb.worksheets(1).usedrange.value ;提取选定工作簿第一个工作表内容到数组,au3在这里比较奇怪,得到的数组行列顺序与excel里是反的,这点需要注意
Dim $result[2][Round((UBound($arr,2)+1)/2)] ;定义结果数组
$n=0 ;初始化结果数组列号起始值
For $i=0 To UBound($arr,2)-1 Step 2 ;每两列一个处理过程,循环处理目标数组,写入结果数组
$result[0][$n]=$arr[0][$i]
If $i<UBound($arr,2) Then $result[1][$n]=$arr[0][$i+1]
$n+=1
Next
$wb.worksheets(2).range("a1").resize(UBound($result,2),UBound($result)).value=$result ;结果数组写入工作簿第二个工作表
$wb.close(true) ;保存并关闭工作簿(参数true代表保存)
$oexcel.quit ;退出excel进程
MsgBox(0,"","处理完成!")
这个可以试一下啦,有注释,应该比较容易理解,没用udf |