主题:VB问题!
圣域无敌
[专家分:60] 发布于 2008-01-14 15:10:00
K ,A,B,C,D ; K,A,B,C,D ; K,A,B,C,D
————————————————
0 ,1,0,0,0
3 ,0,0,1,0
10,0,0,0,1
10,0,0,0,1 ; 3,0,0,1,0
3 ,0,0,1,0 ; 0,1,0,0,0 ; 0,1,0,1,0
在一行中,不管A/B/C/D有几个,都算1个
统计A,B,C,D的个数? 大家有什么好方法没?
A、B、C、D的个数不可能大于行数!
;分组,可以有无限组
最后更新于:2008-01-14 15:26:00
回复列表 (共7个回复)
沙发
家人 [专家分:6760] 发布于 2008-01-14 15:17:00
没看明白
板凳
圣域无敌 [专家分:60] 发布于 2008-01-14 15:27:00
K ,A,B,C,D ; K,A,B,C,D ; K,A,B,C,D
————————————————
0 ,1,0,0,0
3 ,0,0,1,0
10,0,0,0,1
10,0,0,0,1 ; 3,0,0,1,0
3 ,0,0,1,0 ; 0,1,0,0,0 ; 0,1,0,1,0
在一行中,不管A/B/C/D有几个,都算1个
统计A,B,C,D的个数? 大家有什么好方法没?
A、B、C、D的个数不可能大于行数!
;分组,可以有无限组
3 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-14 16:10:00
设,你一共有n行,储存在字符串数组a(n-1)里;
设,你要测试的字符有m个,储存在b(m-1)里;
设,你想把结果放在整数数组n(m-1)里。
for i=0 to n-1
for j=0 to m-1
if instr(a(i),b(j)) then n(j)=n(j)+1
next j
next i
4 楼
圣域无敌 [专家分:60] 发布于 2008-01-14 16:35:00
没看懂~
5 楼
圣域无敌 [专家分:60] 发布于 2008-01-14 16:59:00
Public CountNum1 As Integer '别字
Public CountNum2 As Integer '录入错误
Public CountNum3 As Integer '遗漏
Public CountNum4 As Integer '其他 计算字段
Public ArrCountNum() As String '保存拆分内容
Public State As String '拆分内容后7位
Public State1, State2, State3, State4 As String '保存A B C D的值
'读取每条记录的值
'根据";"拆分,保存在ArrCountNum()中
'初始化CountNum1-4的值=0
'根据记录总数循环
'初始化State1-4的值="0"
'根据ArrCountNum()下标循环
'用State保存ArrCountNum(i)的后7位
'用State1-4分别保存A,B,C,D的值
'累加State1-4的值
'如果State1-4的值非0则累加CountNum1-4
'结束
RsC.MoveFirst
ArrCountNum = Split(RsC!checkstate, ";")
CountNum1 = 0: CountNum2 = 0: CountNum3 = 0: CountNum4 = 0
'For j = 0 To RsC.RecordCount - 1
While Not RsC.EOF
State1 = "0": State2 = "0": State3 = "0": State4 = "0"
For i = 0 To UBound(ArrCountNum)
State = Right(ArrCountNum(i), 7)
State1 = Left(State, 1)
'Debug.Print State1
State2 = Mid(State, 3, 1)
State3 = Mid(State, 5, 1)
State4 = Right(State, 1)
State1 = Int(State1) + Int(State1)
State1 = Int(State2) + Int(State2)
State1 = Int(State3) + Int(State3)
State1 = Int(State4) + Int(State4)
Next i
If Int(State1) Then CountNum1 = CountNum1 + 1
If Int(State2) Then CountNum2 = CountNum2 + 1
If Int(State3) Then CountNum3 = CountNum3 + 1
If Int(State4) Then CountNum4 = CountNum4 + 1
RsC.MoveNext
'Next j
Wend
RsC.Close
[color=FF0000]我是这样做的,但是不知道为什么不能得到想要的结果![/color]
6 楼
圣域无敌 [专家分:60] 发布于 2008-01-15 10:16:00
有人鸟我没?
7 楼
圣域无敌 [专家分:60] 发布于 2008-01-15 10:41:00
问题解决!!!
RsC.MoveFirst
CountNum1 = 0: CountNum2 = 0: CountNum3 = 0: CountNum4 = 0
For j = 0 To RsC.RecordCount - 1
ArrCountNum = Split(RsC!checkstate, ";")
'While Not RsC.EOF
State1 = 0: State2 = 0: State3 = 0: State4 = 0
For i = 0 To UBound(ArrCountNum)
Dim a
a = Split(ArrCountNum(i), ",")
Debug.Print ArrCountNum(i)
State1 = State1 Or a(1)
State2 = State2 Or a(2)
State3 = State3 Or a(3)
State4 = State4 Or a(4)
Next i
CountNum1 = CountNum1 + State1
CountNum2 = CountNum2 + State2
CountNum3 = CountNum3 + State3
CountNum4 = CountNum4 + State4
RsC.MoveNext
Next j
我来回复