当前位置:首页 > 每日看点

请问excel怎么搞个库存数据库?

卡卷网11个月前 (05-18)每日看点249

使用Excel做库存的动态管理,核心难点是出入库数据轧差,动态计算库存。下边是我之前写的一篇文章,里边提供了解决这一类的问题的思路,希望对你有帮助,附上代码。

库存动态管理表的设计思路和实现

Sub 存货盘点() Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet Dim lastRow1 As Long, lastRow2 As Long Dim arr1 As Variant, arr2() As Variant Dim i As Long, j As Long Dim result As Collection Dim arr2Values As Variant ' 设置工作表 Set ws1 = ThisWorkbook.Sheets("02入库单") Set ws2 = ThisWorkbook.Sheets("04单品出库单") Set ws3 = ThisWorkbook.Sheets("05库存商品") Set ws4 = ThisWorkbook.Sheets("03单品费用表") ' 找到每个工作表中A列最后一个非空单元格的行号 lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row ' 清空ws3的A列内容 ws3.Range("A2:A9999").ClearContents ' 将数据存入数组 arr1 = ws1.Range("A2:A" & lastRow1).Value ' 如果数组2不为空,则将其存入arr2 If lastRow2 >= 1 Then arr2Values = ws2.Range("A2:A" & lastRow2).Value If lastRow2 = 2 Then ' 如果只有一个元素,将其转换为二维数组 ReDim arr2(1 To 1, 1 To 1) arr2(1, 1) = arr2Values Else ' 否则,直接赋值 arr2 = arr2Values End If End If ' 创建一个集合来存储不重复的元素 Set result = New Collection ' 遍历数组1,检查数组2中是否有重复的元素 For i = 1 To UBound(arr1, 1) Dim isDuplicate As Boolean isDuplicate = False If lastRow2 >= 1 Then For j = 1 To UBound(arr2, 1) If arr1(i, 1) = arr2(j, 1) Then isDuplicate = True Exit For End If Next j End If If Not isDuplicate Then result.Add arr1(i, 1) End If Next i ' 将结果集合输出到表04的A2单元格开始的位置 'If result.Count > 0 Then ' Dim resultArray() As Variant ' ReDim resultArray(1 To result.Count, 1 To 1) ' For i = 1 To result.Count ' resultArray(i, 1) = result(i) ' Next i ' ws3.Range("A2").Resize(UBound(resultArray, 1), 1).Value = resultArray 'Else ' ws3.Range("A2").Value = "No unique items" 'End If If result.Count > 0 Then Dim resultArray() As Variant ReDim resultArray(1 To result.Count, 1 To 13) ' 假设您想要获取12列信息 For i = 1 To result.Count ' 在库存清单中查找编码 Dim foundCell As Range Set foundCell = ws1.Columns("A:A").Find(What:=result(i), LookIn:=xlValues, LookAt:=xlWhole) ' 如果找到了编码,获取其他列的信息 If Not foundCell Is Nothing Then For j = 1 To 12 ' 假设您想要获取从B列到M列的信息 resultArray(i, j) = foundCell.Offset(0, j - 1).Value Next j ' 在单品费用表中查找第13项的信息 Dim foundCellSupplier As Range Set foundCellSupplier = ws4.Columns("A:A").Find(What:=result(i), LookIn:=xlValues, LookAt:=xlWhole) If Not foundCellSupplier Is Nothing Then resultArray(i, 13) = foundCellSupplier.Offset(0, 8).Value ' 假设供应商信息在第二列 Else resultArray(i, 13) = "没有额外费用" End If Else ' 如果没有找到编码,可以设置一个错误值或者跳过 resultArray(i, 0) = "编码未找到" End If Next i ' 将结果数组输出到表04的A2单元格开始的位置 ws3.Range("A2").Resize(UBound(resultArray, 1), UBound(resultArray, 2)).Value = resultArray Else ws3.Range("A2").Value = "No unique items" End If End Sub

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/05/13191.html

分享给朋友:

相关文章

是什么让你抛弃了 Windows 而转向 Mac?

是什么让你抛弃了 Windows 而转向 Mac?

别的不说,这玩意儿是真抗造啊,我这2012年买的MacBook Pro,依然在用…… 这台电脑我博士最后两年用来写代码(只写不运行,运行要上集群)和写论文,工作之后就变成生活和娱乐了,因为我一直用架子和外接键盘(颈椎不好)所以电脑看…

只有我一个人后悔升级鸿蒙next吗?

只有我一个人后悔升级鸿蒙next吗?

我有一台mate 60 pro,第一时间升级了“纯血鸿蒙”。 虽然功能并不完善,甚至有些简陋,但是我非常~非常不后悔升级鸿蒙next系统。 因为.... 这就是一款“大型养成系游戏“,给我平淡的生活提供了源源不断的情绪价值。 我每天特别…

报名的网课分期付款怎么退?

你在你分期付款的订单下面有客服电话,直接打电话描述一下你的问题,你可以告诉他你是被恶意绑定的,在不了解有退学条件这一说的情况下报的课程,可能遇到消费者诈骗了,不承认有退学金,说是霸王条款,诈骗消费者,你若分期了先把自动续费关了,别让自己个人…

荣耀magic 7 首发的应该都收到货了,感觉怎么样?

8号入手magic7,跟mate40pro比。 优点:1、电池真耐用,充电块,华为电池也是新换的但是明显荣耀耐用;2、系统明显快多了,mate40pro下半年开始卡的不行,实在受不了了。3、声音、震动效果提升明显,指纹反应灵敏很多。 缺点:…

如何做电商行业?

如何做电商行业?

“如何做电商*开网店”跟“如何找老婆”一样,没概况条件、没明确标准,就是扯犊子。 我把话题具体一点说: 具备“两三万”启动资金、掌握“选品+上架优化”基础技能,小则月入三五千、多则上万。跟摆地摊一样,有进货的钱、也不怕苦不怕累、稍微有点生意…

PHP承载百万/天 访问量需要用到什么技术?

当年做一个百万PV的商城,也不过是两台2c4g的阿里云虚机罢了(其实一台就够,另外一台主要的逼着大家一定开发的时候一定要有负载均衡和横向扩容的意识)。当时框架还是Thinkphp3.2,框架提高运行效率的开关全打开,标准的lnmp模式,单机…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。