,b,SUBSEP);print b[1]%%t,b[2]}}")<第三季零配件质汇总\0001.txt >零配质统\0001.txt
************************
注:下面这个应该是彩票统计用的,试用打不开,但统计结果表达型式是我需要的类型。
VB使用Function函数统计次数...2012年01月03日 星期二 下午 8:52模块代码:
Function unique(data) '去掉数组重复
If Not IsArray(data) Then
data = Array()
End If
Dim dic, i
Set dic = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(data)
If Not dic.Exists("_" & data(i)) Then
dic.Add "_" & data(i), data(i)
End If
Next
unique = dic.Items
Set dic = Nothing
End Function
Sub Sort(ByRef arr) '数字升序排序
Dim i, j, t
For i = 0 To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) > arr(j) Then
t = arr(i)
arr(i) = arr(j)
arr(j) = t
End If
Next
Next
End Sub
Function tongji(allmastr) '统计函数
On Error Resume Next
Dim ma_arr: ma_arr = Split(allmastr, ",")
Dim manum2(50) '保存1-49对应的个数
Dim i, i2, j
For i = 0 To UBound(manum2)
manum2(i) = 0
Next
For i = 0 To UBound(ma_arr) '累加统计个数
i2 = CInt(ma_arr(i))
manum2(i2) = manum2(i2) + 1
Next
'获取次数列表
Dim numarr1(50)
For i = 1 To 49
numarr1(i) = manum2(i)
Next
'去掉重复次数
Dim numarr
numarr = unique(numarr1)
'次数从低到高排序
Sort numarr
Dim tjstr: tjstr = "结果统计如下:" & vbCrLf
For i = 1 To UBound(numarr)
Dim ci: ci = numarr(i)
Dim cistr
If ci < 10 Then
cistr = "〖0" & ci & "次〗:"
Else
cistr = "〖" & ci & "次〗:"
End If
Dim mashu: mashu = 0
For j = 1 To 49
If manum2(j) = ci Then
mashu = mashu + 1
If j < 10 Then j = "0" & j
cistr = cistr & j & ","
End If
Next
cistr = cistr & "(共" & mashu & "个)" & vbCrLf
tjstr = tjstr & cistr
Next
tongji = tjstr
End Function
Private Sub Command1_Click()
Text2.Text = tongji(Text1.Text)
End Sub
例如:11,12,13,14,15,12,13,14,15,11,15,14,11,13
统计结果如下:
结果统计如下:
〖00次〗:01,02,03,04,05,06,07,08,09,10,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,(共44个)
〖02次〗:12,(共1个)
〖03次〗:11,13,14,15,(共4个)
作者: apang 时间: 2013-8-15 16:45
- @echo off
- for /l %%a in (101 1 190) do set ".%%a=100"
- pushd "D:\第三季检零配件汇总\"
- for %%i in (*.txt) do (
- setlocal enabledelayedexpansion
- for /f "tokens=2delims=:" %%a in (%%i) do (
- for %%b in (%%a) do set /a .1%%b+=1
- )
- for /f "tokens=1,2delims==." %%a in ('set .') do (
- set "a=%%a" & set _%%b=!_%%b!,!a:~1!
- )
- (for /f "tokens=1,2delims==_" %%a in ('set _') do (
- set "a=%%a" & set "b=%%b"
- echo,〖%%~ni.!a:~1!次〗:!b:~1!
- ))>"D:\零配质统\%%~ni_.txt"
- endlocal
- )
- pause
复制代码
作者: a000000_82 时间: 2013-8-15 17:12
先谢谢apang !!
刚试用了一下,
〖0001.00次〗:01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90
只出了这结果,请帮忙再改改。
作者: apang 时间: 2013-8-15 17:27
回复 3# a000000_82
我测试可以的,把你的 0001.txt 样本附件传上来看看
作者: a000000_82 时间: 2013-8-15 18:20
apang:
对不起,是我错了,看了你的回复,我检查了一下我测试的样本,才发现我试用的数据没有重复才出现那种情况,
从新用有重复数据测试很正常,十分抱嫌!!再说声对不起你了。
第一行少了下面一段,拜托再调整下,这行是准备所有文本合并作分隔及再提取不同次数用。
0001结果统计如下:
〖0001.02次〗:17,27,53,
〖0001.03次〗:09,12,18,25,26,43,48
谢谢
作者: terse 时间: 2013-8-15 19:39
本帖最后由 terse 于 2013-8-15 20:49 编辑
没完全测试
去掉多余变量- @echo off
- set files=零配质统
- pushd "D:\第三季检零配件汇总\"
- md "%files%" 2>nul
- for %%i in (*.txt) do (
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims=:" %%a in (%%i) do (
- for %%b in (%%a) do set /a #%%b+=1
- )
- for /L %%a in (0,1,90) do (
- set "str=0%%a"
- for %%b in ("!str:~-2!") do (
- (for /f %%c in ("!#%%~b!") do set $%%c=!$%%c!%%~b;)||set $0=!$0!%%~b;
- )
- )
- (echo %%~ni结果统计如下:
- for /L %%a in (0,1,90) do if defined $%%a (
- set str=0%%a
- echo 〖%%~ni.!str:~-2!次〗:!$%%a!
- ))>"!files!\%%i"
- endlocal
- )
- pause
复制代码
作者: a000000_82 时间: 2013-8-15 20:20
很好用,谢谢apang 、terse ,两位大神帮忙!!
另外评分24小时内只能评一个,terse的评分明天给加上。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |