Excel精英培训网

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

[已解决]请高手帮忙!

[复制链接]
发表于 2015-9-26 08:15 | 显示全部楼层 |阅读模式
想做一个库存汇总表,正常维护表单的 入库和出库,汇总表最好全部自动生成。
由于品种繁多,每新增一个品种都要在汇总表中增加
避免出错,想看看汇总表的品名能不能根据入库的品名自动生成
请高手帮忙!谢谢!!!
最佳答案
2015-9-27 12:48
quemy 发表于 2015-9-26 10:31
我这个幼儿菜鸟实在看不懂,搞不定,大侠能给个附件吗?谢谢

每一次从其他表格跳转到库存表时,会自动刷新结果。
详见附件: 库存明细表1.rar (13.1 KB, 下载次数: 10)

库存明细表1.rar

2.89 KB, 下载次数: 10

发表于 2015-9-26 10:03 | 显示全部楼层
  1. Sub shuaxin()
  2.     Dim ir%, arr, d, a%, brr(1 To 9999, 1 To 4), k%, m%
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With Sheet1
  5.         ir = .Range("b" & Cells.Rows.Count).End(xlUp).Row
  6.         arr = .Range("b2:c" & ir).Value
  7.         For k = 1 To UBound(arr, 1)
  8.             If d.Exists(arr(k, 1)) = False Then
  9.                 a = a + 1
  10.                 d(arr(k, 1)) = a
  11.                 brr(a, 1) = arr(k, 1)
  12.                 brr(a, 2) = arr(k, 2)
  13.             Else
  14.                 m = d.Item(arr(k, 1))
  15.                 brr(m, 2) = brr(m, 2) + arr(k, 2)
  16.             End If
  17.         Next k
  18.     End With
  19.     With Sheet2
  20.         ir = .Range("a" & Cells.Rows.Count).End(xlUp).Row
  21.         arr = .Range("a2:b" & ir).Value
  22.         For k = 1 To UBound(arr, 1)
  23.             If d.Exists(arr(k, 1)) = False Then
  24.                 a = a + 1
  25.                 d(arr(k, 1)) = a
  26.                 brr(a, 1) = arr(k, 1)
  27.                 brr(a, 3) = arr(k, 2)
  28.             Else
  29.                 m = d.Item(arr(k, 1))
  30.                 brr(m, 3) = brr(m, 3) + arr(k, 2)
  31.             End If
  32.         Next k
  33.     End With
  34.     For k = 1 To a
  35.     brr(k, 4) = brr(k, 2) - brr(k, 3)
  36.     Next k
  37.     Sheet3.Range("a2").Resize(a, 4) = brr
  38.     MsgBox "刷新完成", , "如有疑问,详询群号OFFICE之家-2群 39212411 入群验证:EXCEL"
  39. End Sub
复制代码
回复

使用道具 举报

发表于 2015-9-26 10:18 | 显示全部楼层
附件

库存明细表1.rar

7.35 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2015-9-26 10:23 | 显示全部楼层
baksy 发表于 2015-9-26 10:18
附件

谢谢,由于品种繁多,能将列的有效区域优化成整列的吗?
=INDEX(入库!B$1:B$999,MIN(IF(COUNTIF(汇总!A$1:A1,入库!B$2:B$99)=0,ROW($2:$99),999)))&""

回复

使用道具 举报

 楼主| 发表于 2015-9-26 10:31 | 显示全部楼层
wp8680 发表于 2015-9-26 10:03

我这个幼儿菜鸟实在看不懂,搞不定,大侠能给个附件吗?谢谢
回复

使用道具 举报

发表于 2015-9-26 10:37 | 显示全部楼层
本帖最后由 baksy 于 2015-9-26 10:38 编辑
quemy 发表于 2015-9-26 10:23
谢谢,由于品种繁多,能将列的有效区域优化成整列的吗?
=INDEX(入库!B$1:B$999,MIN(IF(COUNTIF(汇总!A$ ...

公式中的99和999进行调整即可。
调整99为大于品种数量,999取大于前面数值(原99)即可。
公式编辑后三键回车(点击公式编辑栏中的任意位置,按住 shift、ctrl 两个键,然后敲enter键 )。
回复

使用道具 举报

发表于 2015-9-27 12:48 | 显示全部楼层    本楼为最佳答案   
quemy 发表于 2015-9-26 10:31
我这个幼儿菜鸟实在看不懂,搞不定,大侠能给个附件吗?谢谢

每一次从其他表格跳转到库存表时,会自动刷新结果。
详见附件: 库存明细表1.rar (13.1 KB, 下载次数: 10)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 23:50 , Processed in 0.289593 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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