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

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

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

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

分享给朋友:

相关文章

2024,java开发,已经炸了吗?

炸的透透的了,坐标南京。 一月底,一个好哥们,双休朝九晚六不加班18K,被裁。 入职不到两年,算是工资和年终奖才赔了6.5W左右。 上周五新公司入职,周六开始加班。现在每周134加班到晚上八点,好像薪资还不如以前高。三月上旬,另一个好哥们,…

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

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

离线可否搭建 GitLab 环境?

离线可否搭建 GitLab 环境?

背景:为什么要使用GitLab CI/CD? 统一工作流程:GitLab CI/CD 为开发、测试和运维团队提供了一个统一的工作流程。开发人员提交代码后,测试人员可以清楚地看到代码的构建和测试情况,运维人员也可以了解软件的部署进度。例如,在…

讲真,家庭真的需要一台NAS吗?

讲真,家庭真的需要一台NAS吗?

要想回答这个问题,讲一个故事大家都能明白了,至于需要不需要,大家可以自己判断。 现在的家庭,一般都会有很多家具,比如 鞋柜,用来放鞋 衣柜,用来放衣服 书架,用来放书。 还有碗柜,床头柜等等。 当然,没有上述东西的家庭也存在,但是这些家…

一台 NAS 可以带来什么好处?

一台 NAS 可以带来什么好处?

家里只有一台HP Gen8,一开始只想搞搞黑群晖,做小姐姐别墅。后来反反复复的折腾了很多。CPU换了1265L,内存加到16G,硬盘4个16T,改线SSD引导,足够我使用了。 下面列举一下现在在用的服务,底层使用的PVE。 1、黑群晖:…

如何实现内网穿透?

如何实现内网穿透?

NAS党福音:近乎零成本优雅地实现家庭网络异地组网(一)家庭移动宽带无公网IPv4,但经过一顿检测发现为NAT1型,有望实现大内网穿透,规划方案:Tailscale(客户端)+Headscale(服务端)+Derp(中继)+Cloudfla…

发表评论

访客

看不清,换一张

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