fieldset{padding:10px;}
请高手进来指导,如何用VBA实现多条件按列查询内容,谢谢!A表:登记姓名、性别,以及这些人在不同时候对某一问题的多个回答;B表:回答与得分的关系;C表:分别统计不同人所对应的a、b、c的个数,并算出总得分请教高手,怎么直接用VBA程序直接算出C表中“总得分”列的数据(不需要增加a个数、b个数、c个数这样的辅助列)?谢谢!附:A表:姓名性别不同回答张男a;b;c张女a;b李男c张男b张女a李男b;cB表:回答与得分关系表:回答对应得分a1b2c3C表:分别统计不同人所对应的a、b、c的个数,并算出总得分姓名性别总得分a个数b个数c个数张男8121张女4210李男8012——解决方案——————————————————–Sheet1为A表,Sheet2为B表,Sheet3内写代码(C表)VB code
Private Sub Worksheet_Activate() Dim i As Long, k As Long Dim s As String, n As Long Dim c k = 2: Rows("2:65530").ClearContents With Sheet1 .Rows("2:65530").Sort Key1:=.Range("A2"), Order1:=xlAscending, Key2:=.Range("B2"), Order2:=xlAscending '按姓名、性别排序 s = .[C2] '如果当前行和上一行姓名性别一样,就组合s,否则求总得分和abc的个数 For i = 3 To .[A65530].End(xlUp).Row + 1 If .Range("A" & i) = .Range("A" & i - 1) And .Range("B" & i) = .Range("B" & i - 1) Then s = s & ";" & .Range("C" & i) '组合成绩字符串 Else Cells(k, 1) = .Range("A" & i - 1) '姓名 Cells(k, 2) = .Range("B" & i - 1) '性别 s = LCase(s) For Each c In Split(s, ";") n = Asc(c) - Asc("a") + 1 '对应:a->1 b->2 c->3 Cells(k, n + 3) = Cells(k, n + 3) + 1 ' a b c 的个数 Cells(k, 3) = Cells(k, 3) + Sheet2.Cells(n + 1, 2) '求和 Next c k = k + 1: s = .Range("C" & i) End If Next i End WithEnd Sub结果:姓名 性别 总得分 a个数 b个数 c个数李 男 8 1 2张 男 8 1 2 1张 女 4 2 1击败不等于击倒,跌倒了,爬起来,想一想,为什么跌倒了,