请问excel怎么搞个库存数据库?
作者:卡卷网发布时间:2025-05-18 22:07浏览数量:17次评论数量:0次
使用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
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:知乎上有没有双女主的小说?
- 下一篇:有哪些好看的仙侠小说?
相关推荐

你 发表评论:
欢迎