ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1573|回复: 7

[求助] 求助用VBA for循环+数组整理库存表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-2 15:17 | 显示全部楼层 |阅读模式
以下表 求大神用VBA for循环+数组整理成后面这个格式第一行是尺码

货号
COLOR
104
116
128
140
152
164
176
R802-5204
099
14
13
9
R802-5204
099
21
16
R802-5301
099
13
11
8
8
R802-5301
099
18
R802-5303
700
16
R802-5303
700
19
9
R802-5303
700
8
8
R802-5306
099
14
12
R802-5306
099
20
10
7
R802-5307
375
11
13
R802-5307
375
16
18
10
R802-5307
200
17
15
11
9
R802-5307
200
11
R802-5601
375
14
19
14
9
8
R802-5601
099
13
19
14
9
8
R802-5703
099
16
R802-5801
700
15
16
13
14
8
R802-5703
099
23
13
9


货号+尺码+颜色
数量
R802-5204099104
25
R802-5204099104
25
R802-5204099104
25
R802-5204099104
25
R802-5204099104
25
R802-5204099104
25
R802-5204099104
25


1.rar

9.17 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2018-8-2 15:41 | 显示全部楼层
'猜一个,好像你自己给自己挖了一个坑

Option Explicit

Sub test()
  Dim arr, i, j, t, n
  arr = Sheets("数据").[a1].CurrentRegion
  ReDim brr(1 To Rows.Count, 1 To 2)
  For i = 2 To UBound(arr, 1)
    t = arr(i, 1) & arr(i, 2)
    For j = 3 To UBound(arr, 2)
      If Len(arr(i, j)) Then
        n = n + 1
        brr(n, 1) = t & arr(1, j): brr(n, 2) = arr(i, j)
      End If
  Next j, i
  With Sheets("汇总").[d2] '输出位置自己修改
    .Resize(Rows.Count - 1, UBound(brr, 2)).ClearContents
    If n > 0 Then .Resize(n, UBound(brr, 2)) = brr
  End With
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-2 15:55 | 显示全部楼层
  1. Sub test()
  2.     Dim ar, br(), m&, n&, k&
  3.     ar = Worksheets("数据").UsedRange
  4.     For m = 2 To UBound(ar, 1)
  5.         For n = 3 To UBound(ar, 2)
  6.             If ar(m, n) <> "" Then
  7.                 k = k + 1
  8.                 ReDim Preserve br(1 To 2, 1 To k)
  9.                 br(1, k) = ar(m, 1) & ar(m, 2) & ar(1, n)
  10.                 br(2, k) = ar(m, n)
  11.             End If
  12.         Next
  13.     Next
  14.     Worksheets("汇总").[a2].Resize(k, 2) = Application.Transpose(br)
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-8-2 16:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一把小刀闯天下 发表于 2018-8-2 15:41
'猜一个,好像你自己给自己挖了一个坑

Option Explicit

你没有给自己挖坑,只是搬了个石头,准备砸脚趾,哈哈

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 16:23 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 16:24 | 显示全部楼层
microyip 发表于 2018-8-2 16:07
你没有给自己挖坑,只是搬了个石头,准备砸脚趾,哈哈

哪里是坑呢

TA的精华主题

TA的得分主题

发表于 2018-8-2 17:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好久不写了,参与一下:
  1. Sub 宏2()
  2.     Dim i, j, arr, d As Object
  3.     Application.ScreenUpdating = False
  4.     Set d = CreateObject("scripting.dictionary")
  5.     arr = Sheet1.[a1].CurrentRegion
  6.     For i = 2 To UBound(arr)
  7.         For j = 3 To UBound(arr, 2)
  8.             If arr(i, j) <> "" Then
  9.                 d(arr(i, 1) & arr(i, 2) & arr(1, j)) = d(arr(i, 1) & arr(i, 2) & arr(1, j)) + arr(i, j)
  10.             End If
  11.         Next j
  12.     Next i
  13.     With Sheets("汇总")
  14.         .[a1].CurrentRegion.Clear
  15.         .[a1] = "货号+尺码+颜色"
  16.         .[b1] = "数量"
  17.         .[a2].Resize(d.Count) = Application.Transpose(d.Keys)
  18.         .[b2].Resize(d.Count) = Application.Transpose(d.items)
  19.     End With
  20.     Set d = Nothing
  21.     Application.ScreenUpdating = True
  22.     MsgBox "汇总完毕!"
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 18:02 | 显示全部楼层

大神 追问下  如果货号+颜色+尺码相同的需要合并数量 需要怎么修改呢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 11:15 , Processed in 0.024076 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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