Excel精英培训网

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

[已解决]实现类似分类汇总的效果

[复制链接]
发表于 2022-2-16 15:53 | 显示全部楼层 |阅读模式
各位老师:
  将sheet2中的明细,分类转置移动到sheet1中。明细中的种类数量不确定,移动需要去重,附件为示例,请教各位老师,感谢。
sheet1
姓名型号1型号2型号3型号4型号5型号6型号7型号8型号9
张三产品1产品2
李四产品1产品3产品5
王五产品1产品2
赵六产品1产品2
刘七产品2产品7产品8产品3

sheet2
姓名型号
张三产品1
张三产品2
李四产品1
李四产品1
李四产品3
李四产品5
王五产品1
王五产品2
赵六产品1
赵六产品1
赵六产品2
刘七产品2
刘七产品2
刘七产品7
刘七产品8
刘七产品3


最佳答案
2022-2-16 18:49
  1. Sub text()
  2. Dim i As Integer, j As Integer, arr, brr, crr(1 To 10000, 1 To 2), k As Integer
  3. arr = Sheet1.Range("b2:j6")
  4. brr = Sheet1.Range("a2:a6")
  5. For i = 1 To UBound(brr)
  6. For j = 1 To UBound(arr, 2)
  7. If arr(i, j) = "" Then
  8. Else
  9. k = k + 1
  10. crr(k, 1) = brr(i, 1)
  11. crr(k, 2) = arr(i, j)
  12. End If
  13. Next j
  14. Next i
  15. Sheet2.Range("a2").Resize(k, 2) = crr
  16. End Sub

复制代码

示例.zip

8.95 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2022-2-16 22:37 | 显示全部楼层
可能是我问题描述的不够准确,未能收到完全符合效果的答案,自己绊绊磕磕的写了一个,供大家参考指正。

示例13.zip

15.91 KB, 下载次数: 0

回复

使用道具 举报

发表于 2022-2-16 16:27 | 显示全部楼层
示例.zip (14.89 KB, 下载次数: 7)

评分

参与人数 1学分 +2 收起 理由
zhangchenld + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-2-16 17:07 | 显示全部楼层
excel用户1116 发表于 2022-2-16 16:27
就当前附件,测试一个!!

数据行数多了以后提示内存溢出,改了brr的列数后,无法统计到所有的产品,基本只能统计一个两个,麻烦在帮忙看一下,感谢。
回复

使用道具 举报

发表于 2022-2-16 18:49 | 显示全部楼层    本楼为最佳答案   
  1. Sub text()
  2. Dim i As Integer, j As Integer, arr, brr, crr(1 To 10000, 1 To 2), k As Integer
  3. arr = Sheet1.Range("b2:j6")
  4. brr = Sheet1.Range("a2:a6")
  5. For i = 1 To UBound(brr)
  6. For j = 1 To UBound(arr, 2)
  7. If arr(i, j) = "" Then
  8. Else
  9. k = k + 1
  10. crr(k, 1) = brr(i, 1)
  11. crr(k, 2) = arr(i, j)
  12. End If
  13. Next j
  14. Next i
  15. Sheet2.Range("a2").Resize(k, 2) = crr
  16. End Sub

复制代码

1645008478(1).jpg

示例.zip

30.84 KB, 下载次数: 8

评分

参与人数 1学分 +2 收起 理由
zhangchenld + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-2-16 20:11 | 显示全部楼层

好像反了,是从sheet2往sheet1统计
回复

使用道具 举报

发表于 2022-2-17 09:48 | 显示全部楼层
zhangchenld 发表于 2022-2-16 20:11
好像反了,是从sheet2往sheet1统计

那就更加简单了,可以用公式就很简单的解决了。
汇总表的B2单元格输入公式: =XLOOKUP($A2&SUBSTITUTE(B$1,"型号","产品",1),明细表!$A:$A&明细表!$B:$B,明细表!$B:$B,"")

或者VBA代码:
  1. Sub demo()
  2. Dim i As Integer, j As Integer, k As Integer, arr, brr
  3.     arr = Sheet1.Range("a2:a" & Sheet1.Cells(Rows.Count, 1).End(xlUp).Row)
  4.     brr = Sheet2.Range("a2:b" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row)
  5.     ReDim crr(1 To UBound(arr), 1 To 9)
  6.     For i = 1 To UBound(arr)
  7.         For j = 1 To 9
  8.             For k = 1 To UBound(brr)
  9.                 If arr(i, 1) = brr(k, 1) And brr(k, 2) = "产品" & j Then
  10.                     crr(i, j) = brr(k, 2)
  11.                     Exit For
  12.                 End If
  13.             Next k
  14.         Next j
  15.     Next i
  16.     Sheet1.Range("b2").Resize(UBound(crr), UBound(crr, 2)) = crr
  17. End Sub
复制代码


1645061767(1).jpg

示例.zip

16.24 KB, 下载次数: 7

回复

使用道具 举报

发表于 2022-2-22 15:23 | 显示全部楼层

版主大神,,帮我看看这个问题。
http://www.excelpx.com/forum.php ... d=466460&extra=
这是帖子的地址
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 08:25 , Processed in 0.641734 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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