Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2629|回复: 2

[已解决]如何求出各班各等級的數量

[复制链接]
发表于 2011-10-26 16:40 | 显示全部楼层 |阅读模式
請教老師
有一個以下的表
班別        姓名        1月
A        a        甲
A        b        乙
A        c        甲
A        d         乙
B        e        丙
B        f        丙
B        g        甲
C        h        丙
C        i        乙
C        j        甲
C        k        丙
如果用函數SUMPRODUCT的方式可以求出以下的結果
班別        甲        乙        丙
A        2        2        0
B        1        0        2
C        1        1        1
但如果用vba應該如何寫比較好?
因我不希望用range("m1")= "=sumproduct..........." 的方式
最佳答案
2011-10-26 19:12
本帖最后由 爱疯 于 2011-10-26 19:17 编辑
  1. Sub test()
  2.     Dim A, B, i%, j%, k%
  3.     With Sheets("sheet1")
  4.         A = .Range("a1:C" & .Range("a65536").End(xlUp).Row)
  5.     End With
  6.     With Sheets("sheet2")
  7.         B = .Range("a1:d" & .Range("a65536").End(xlUp).Row)
  8.     End With
  9.     For i = 2 To UBound(B)
  10.         For j = 2 To UBound(B, 2)
  11.             B(i, j) = 0
  12.             For k = 2 To UBound(A)
  13.                 If A(k, 1) = B(i, 1) And A(k, 3) = B(1, j) Then
  14.                     B(i, j) = B(i, j) + 1
  15.                 End If
  16.             Next k
  17.         Next j
  18.     Next i
  19.     Sheets("sheet2").Cells(1, 1).Resize(UBound(B), UBound(B, 2)) = B
  20. End Sub
复制代码
工作簿2.rar (9.59 KB, 下载次数: 15)
发表于 2011-10-26 19:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2011-10-26 19:17 编辑
  1. Sub test()
  2.     Dim A, B, i%, j%, k%
  3.     With Sheets("sheet1")
  4.         A = .Range("a1:C" & .Range("a65536").End(xlUp).Row)
  5.     End With
  6.     With Sheets("sheet2")
  7.         B = .Range("a1:d" & .Range("a65536").End(xlUp).Row)
  8.     End With
  9.     For i = 2 To UBound(B)
  10.         For j = 2 To UBound(B, 2)
  11.             B(i, j) = 0
  12.             For k = 2 To UBound(A)
  13.                 If A(k, 1) = B(i, 1) And A(k, 3) = B(1, j) Then
  14.                     B(i, j) = B(i, j) + 1
  15.                 End If
  16.             Next k
  17.         Next j
  18.     Next i
  19.     Sheets("sheet2").Cells(1, 1).Resize(UBound(B), UBound(B, 2)) = B
  20. End Sub
复制代码
工作簿2.rar (9.59 KB, 下载次数: 15)
回复

使用道具 举报

 楼主| 发表于 2011-10-26 19:25 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 13:11 , Processed in 0.338715 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表