今天,在工作的时候,一朋友提出了一个需求,在excel中根据物流单位的报价计算物流单位的总费用
| 序号 | 箱数 | 重量kg | 到站 | 佳怡物流 | 兔兔快运 |
| 1 | 3 | 140.5 | 临沂 | ||
| 2 | 56 | 260.7 | 莱西 | ||
| 3 | 15 | 78 | 莱阳 | ||
| 4 | 2 | 90 | 潍坊 | ||
| 5 | 9 | 45 | 商河 | ||
| 6 | 8 | 67 | 济阳 | ||
| 7 | 11 | 18 | 枣庄 |
为了描述方便,假设佳怡物流每公斤0.6元,兔兔快运每公斤0.7,莱阳兔兔快运因为某种原因不发货,佳怡能发货,保费兔兔快运每箱0.8元,佳怡每箱1元;我们计算报价公式
重量*X元/公斤+箱数*保费+其他费用
我首先将所有物流单位的报价根据某种格式都导到了sqlserver某个表中,然后写了一个存储过程,在excel中用alt+F11打开vba编程写了一个过程,返回总费用
Sub doSumFee()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim connStr As String, sqlStr As String
On Error Resume Next
connStr = "Provider=SQLOLEDB;Server=sql数据库名称或者IP,1433;Database=数据库名称;Uid=用户名;Pwd=密码;"
'MsgBox connStr
conn.Open connStr
Dim rowxh As Integer, colhx As Integer, ws As Worksheet
'sheet页的名称
Set ws = Sheets("sheet1")
'行数
For rowxh = 2 To 7
'列数
For colhx = 5 To 6
sqlStr = "exec proSelectWldwBj '" & ws.Cells(rowxh, 4).Value & "'," & ws.Cells(rowxh, 3).Value & "," & ws.Cells(rowxh, 2).Value & ", '" & ws.Cells(1, colhx).Value & "';"
'MsgBox sqlStr
rs.Open sqlStr, conn, adOpenStatic, adLockBatchOptimistic
'MsgBox rs.Fields(0).Value
ws.Cells(rowxh, colhx).Value = rs.Fields(0).Value
rs.Close
Set rs = Nothing
Next
Next
conn.Close
Set conn = Nothing
End Sub
然后再在excel中调用即可
本文介绍了一种使用Excel结合VBA及SQL Server存储过程的方法来计算物流费用的过程。具体包括了如何编写VBA代码调用SQL Server中的存储过程,并通过特定公式计算不同物流公司针对不同条件的总费用。
808

被折叠的 条评论
为什么被折叠?



