Excel精英培训网

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

[已解决]求各位大神帮忙

[复制链接]
发表于 2022-5-16 10:17 | 显示全部楼层 |阅读模式
附件中我需要对SHEET1的数据按Sheet2中1行的条件进行归类整合,数据量比较大用数据透视+公式很不方便,求大神帮忙弄个VB 仓存整合.zip (10.09 KB, 下载次数: 6)
发表于 2022-5-16 14:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hasyh2008 于 2022-5-16 15:35 编辑

不知道你的意思是不是这样的。

Sub tongji()
  Dim D1, D2, D3, It1, It2, It3, K
  Dim Arr, Brr
  Dim Rc%, X%
  Set D1 = CreateObject("scripting.dictionary")
  Set D2 = CreateObject("scripting.dictionary")
  Set D3 = CreateObject("scripting.dictionary")
  Sheet2.Range("A4:D10000")=""
  Arr = Sheet1.Range("A1").CurrentRegion
  For X = 2 To UBound(Arr)
    D1(Arr(X, 2)) = D1(Arr(X, 2)) + 1
    D2(Arr(X, 2)) = D2(Arr(X, 2)) + Arr(X, 6)
    D3(Arr(X, 2)) = D3(Arr(X, 2)) + Arr(X, 1) & "/" & Arr(X, 4) & "/" & Arr(X, 6) & "、"
  Next X
  K = D1.keys
  It1 = D1.items
  It2 = D2.items
  It3 = D3.items
  With Sheet2
    .Cells(4, 1).Resize(UBound(K) + 1, 1) = Application.Transpose(K)
    .Cells(4, 2).Resize(UBound(K) + 1, 1) = Application.Transpose(It1)
    .Cells(4, 3).Resize(UBound(K) + 1, 1) = Application.Transpose(It2)
    .Cells(4, 4).Resize(UBound(K) + 1, 1) = Application.Transpose(It3)
    Rc = .Cells(Rows.Count, 1).End(xlUp).Row
    For X = Rc To 4 Step -1
      If .Cells(X, 2) * 1 < .Cells(1, 2) Or .Cells(X, 3) * 1 < .Cells(1, 4) Then
        Rows(X).Delete
      End If
    Next X
  End With
End Sub

仓库库存整合(20220516).rar

20.38 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2022-5-16 15:49 | 显示全部楼层
hasyh2008 发表于 2022-5-16 14:28
不知道你的意思是不是这样的。

Sub tongji()

是啊,十分感谢
回复

使用道具 举报

发表于 2022-5-16 18:43 | 显示全部楼层
本帖最后由 hasyh2008 于 2022-5-16 18:45 编辑
  1. <div class="blockcode"><blockquote>Sub tongji()
  2.   Dim D1, D2, D3, It1, It2, It3, K, I%
  3.   Dim Arr, Brr(1 To 1000, 1 To 4)
  4.   Dim Rc%, X%
  5.   Set D1 = CreateObject("scripting.dictionary")
  6.   Set D2 = CreateObject("scripting.dictionary")
  7.   Set D3 = CreateObject("scripting.dictionary")
  8.   Sheet2.Range("A4:D1000") = ""
  9.   Arr = Sheet1.Range("A1").CurrentRegion
  10.   For X = 2 To UBound(Arr)
  11.     D1(Arr(X, 2)) = D1(Arr(X, 2)) + 1
  12.     D2(Arr(X, 2)) = D2(Arr(X, 2)) + Arr(X, 6)
  13.     D3(Arr(X, 2)) = D3(Arr(X, 2)) + Arr(X, 1) & "/" & Arr(X, 4) & "/" & Arr(X, 6) & "、"
  14.   Next X
  15.   K = D1.keys
  16.   It1 = D1.items
  17.   It2 = D2.items
  18.   It3 = D3.items
  19.   I = 1
  20.   With Sheet2
  21.     For X = 0 To UBound(K)
  22.       If It1(X) > .Cells(1, 2) And It2(X) > .Cells(1, 4) Then
  23.         Brr(I, 1) = K(X): Brr(I, 2) = It1(X)
  24.         Brr(I, 3) = It2(X): Brr(I, 4) = It3(X)
  25.         I = I + 1
  26.       End If
  27.     Next X
  28.     .Range("A4").Resize(I, 4) = Brr
  29.   End With
  30. End Sub
复制代码

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 18:28 , Processed in 0.268097 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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