今天,在工作的时候,一朋友提出了一个需求,在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中调用即可