VB如何对listview中的数据有条件的求和

比如在listview1中各列(前三列)的数据分别是语文90数学96英语88物理93数学86语文89语文99英语97现在我需要做的是将这三列的数据分别按照前面的科目为条件... 比如在listview1中各列(前三列)的数据分别是
语文 90
数学 96
英语 88
物理 93
数学 86
语文 89
语文 99
英语 97

现在我需要做的是将这三列的数据分别按照前面的科目为条件对后面分数进行汇总,并显示在另一个listview2中(第一列为科目,第二列为各个科目分数的汇总。要求:同一个科目只能显示一个),如下:
语文 278
英语 185
物理 93
数学 182

请问该怎么弄?先谢谢了!
展开
 我来答
veket的小号
2013-06-17 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3977万
展开全部
Dim a(1 To 8, 1 To 2) As String
Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim m As Integer
    Dim total As Integer
    m = 1
    For i = 1 To ListView1.ListItems.Count
        For j = 1 To i - 1
            If ListView1.ListItems(j) = ListView1.ListItems(i) Then
                Exit For
            End If
        Next
        If j = i Then
            ListView2.ListItems.Add , , ListView1.ListItems(i)
            total = 0
            For k = 1 To ListView1.ListItems.Count
                If ListView1.ListItems(k) = ListView2.ListItems(m) Then
                    total = total + ListView1.ListItems(k).SubItems(1)
                End If
            Next
            ListView2.ListItems(m).ListSubItems.Add 1, , total
            m = m + 1
        End If
    Next
End Sub
Private Sub Form_Load()
    a(1, 1) = "语文": a(1, 2) = 90
    a(2, 1) = "数学": a(2, 2) = 96
    a(3, 1) = "英语": a(3, 2) = 88
    a(4, 1) = "物理": a(4, 2) = 93
    a(5, 1) = "数学": a(5, 2) = 86
    a(6, 1) = "语文": a(6, 2) = 89
    a(7, 1) = "语文": a(7, 2) = 99
    a(8, 1) = "英语": a(8, 2) = 97
    
    Dim i As Integer
    For i = 1 To 8
        ListView1.ListItems.Add , , a(i, 1)
        ListView1.ListItems(i).ListSubItems.Add 1, , a(i, 2)
    Next
End Sub

详见附件

效果图

更多追问追答
追问
谢谢你这么好的耐心和回答!顺便问题下:假如在分数栏的右边还有一栏数值也需要求和的话,该这么修改代码?
追答
你就不能 .....先把我写的仔细分析分析.........看懂....举一反三.......
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式