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

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

卡卷网1年前 (2025-05-18)每日看点309

使用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

分享给朋友:

相关文章

怎么免费看电视地方台和央视台?

怎么免费看电视地方台和央视台?

免费看央视和地方台,办法当然有,而且太多了,我怕你挑花了眼用不过来…… 首先题主需要明确一点,你家的电视需要是基于安卓系统的智能电视,能安装第三方安卓电视软件。比如小米电视、雷鸟电视等等;如果不是,你至少需要购置一个电视盒子,比如小米电视盒…

普通人一部手机用多久?

普通人一部手机用多久?

各位知友,你们的现在的手机用了多久了呢? 回看国外分析机构 TechInsights的报告,目前大家的用机周期是越来越长了,在国内,也达到了「40个月」,就是很多人至少三年半才会换一次手机。 仔细想想,不对呀,现在新机不是一直出吗?…

有哪些网站,一旦知道,你就离不开了?

有哪些网站,一旦知道,你就离不开了?

这六个网站,一旦用过,基本上是离不开了。都是我超爱的一些网站,基本上每天都用。 1 地图生成器 第一个,我要给大家推荐的是地图生成器。可以下载到各省,各市,各县的svg格式的地图素材。 这些素材导入PPT中都是可以编辑的。 可以单独更改颜色…

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

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

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

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1. 稻盛和夫说过: “改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。 2. 早睡早起,坚持运动 保持旺盛的精力,…

为什么原来说 7 nm 是半导体工艺的极限,但现在又被突破了?

10年前我们觉得65nm工艺是极限,因为到了65nm节点二氧化硅绝缘层漏电已经不可容忍。所以工业界搞出了HKMG,用high-k介质取代了二氧化硅,传统的多晶硅-二氧化硅-单晶硅结构变成了金属-highK-单晶硅结构。 5年前我们觉得22n…

发表评论

访客

看不清,换一张

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