原问题:如何将文本中指定列的数值累加求得合计数?
huahua0919 朋友提供的代码附后,可以满足需求并且计算速度也很快。
但在实测中发现在某列数据计算出现问题时无法查找原因所在,
比如下面的样本,第五行和第十三行,合计第七列时会导致报错,
如果文本中数据量很大,极难查找问题到底出现在哪一行。
特再次求助:修改代码使遇到错误时,能显示出是哪行出现了错误。
样本.txt
1|0757 | 合同 | 其它 | 殷晏 | 200837015029392 | 4000.0 |
2|0752 | 合同 | 经济原因 | 葛宝 | 200000026251 | 10232.35 |
3|2810 | 合同 | 经济原因 | 王传 | 2002810000013079 | 479.0 |
4|2810 | 合同 | 经济原因 | 王传 | 20028000013079 | 479.0 |
5|2810 | 合同 | 经济原因 | 王传 | 200231000013079dashan |
6|2810 | 合同 | 经济原因 | 王传 | 200237281000013079 | 23.72 |
7|2810 | 合同 | 经济原因 | 王传 | 200237810000013079 | 260.28 |
8|0808 | 合同 | 经济原因 | 梁汝 | 2005300005411 | 280.0 |
9|1104 | 合同 | 其它 | 张成 | 2008374015010838 | 1630.0 |
10|1104 | 合同 | 其它 | 张成 | 200830015010838 | 36.0 |
11|1104 | 合同 | 其它 | 张成 | 200837015010845 | 10.0 |
12|1104 | 合同 | 其它 | 张成 | 20083715010845 | 10.0 |
13|1104 | 合同 | 其它 | 张成 | 20083602015010845 | 四湖 |
=======================================
huahua0919 朋友提供的代码, 经 HAT 帮忙现修改如下:
@echo off
@title 求某列数据的合计数
echo.
echo.
set /p file= 请将要处理的文本拖放到这里:
echo.
echo 请输入您准备合计计算的数值位于第几列。
echo.
set /p lie= 待合计的数据在文本中所处的列为:
set /a lie-=1
set file=%file:"=%
echo.
cls
echo.
echo.
echo.
echo 正在计算,请稍候......
echo.
echo.
echo.
echo.
cd.>temp.vbs
>temp.vbs echo dim sum
>>temp.vbs echo sum=0
>>temp.vbs echo set Fso=createobject^("scripting.filesystemobject"^)
>>temp.vbs echo set fs=Fso.opentextfile^("%file%",1^)
>>temp.vbs echo Do While fs.atEndOfLine ^<^> true
>>temp.vbs echo x=split^(fs.readline,"|"^)
>>temp.vbs echo sum=sum+x^(%lie%^)
>>temp.vbs echo loop
>>temp.vbs echo wscript.echo " 所选列数据合计为:"^&Formatnumber(sum,2)
cscript//nologo temp.vbs
echo.
@del temp.vbs>nul2>nul
echo.
echo.
pause
[ Last edited by youaoyi on 2008-9-13 at 10:57 PM ]
huahua0919 朋友提供的代码附后,可以满足需求并且计算速度也很快。
但在实测中发现在某列数据计算出现问题时无法查找原因所在,
比如下面的样本,第五行和第十三行,合计第七列时会导致报错,
如果文本中数据量很大,极难查找问题到底出现在哪一行。
特再次求助:修改代码使遇到错误时,能显示出是哪行出现了错误。
样本.txt
1|0757 | 合同 | 其它 | 殷晏 | 200837015029392 | 4000.0 |
2|0752 | 合同 | 经济原因 | 葛宝 | 200000026251 | 10232.35 |
3|2810 | 合同 | 经济原因 | 王传 | 2002810000013079 | 479.0 |
4|2810 | 合同 | 经济原因 | 王传 | 20028000013079 | 479.0 |
5|2810 | 合同 | 经济原因 | 王传 | 200231000013079dashan |
6|2810 | 合同 | 经济原因 | 王传 | 200237281000013079 | 23.72 |
7|2810 | 合同 | 经济原因 | 王传 | 200237810000013079 | 260.28 |
8|0808 | 合同 | 经济原因 | 梁汝 | 2005300005411 | 280.0 |
9|1104 | 合同 | 其它 | 张成 | 2008374015010838 | 1630.0 |
10|1104 | 合同 | 其它 | 张成 | 200830015010838 | 36.0 |
11|1104 | 合同 | 其它 | 张成 | 200837015010845 | 10.0 |
12|1104 | 合同 | 其它 | 张成 | 20083715010845 | 10.0 |
13|1104 | 合同 | 其它 | 张成 | 20083602015010845 | 四湖 |
=======================================
huahua0919 朋友提供的代码, 经 HAT 帮忙现修改如下:
@echo off
@title 求某列数据的合计数
echo.
echo.
set /p file= 请将要处理的文本拖放到这里:
echo.
echo 请输入您准备合计计算的数值位于第几列。
echo.
set /p lie= 待合计的数据在文本中所处的列为:
set /a lie-=1
set file=%file:"=%
echo.
cls
echo.
echo.
echo.
echo 正在计算,请稍候......
echo.
echo.
echo.
echo.
cd.>temp.vbs
>temp.vbs echo dim sum
>>temp.vbs echo sum=0
>>temp.vbs echo set Fso=createobject^("scripting.filesystemobject"^)
>>temp.vbs echo set fs=Fso.opentextfile^("%file%",1^)
>>temp.vbs echo Do While fs.atEndOfLine ^<^> true
>>temp.vbs echo x=split^(fs.readline,"|"^)
>>temp.vbs echo sum=sum+x^(%lie%^)
>>temp.vbs echo loop
>>temp.vbs echo wscript.echo " 所选列数据合计为:"^&Formatnumber(sum,2)
cscript//nologo temp.vbs
echo.
@del temp.vbs>nul2>nul
echo.
echo.
pause
[ Last edited by youaoyi on 2008-9-13 at 10:57 PM ]

