百度不让发链接,只好发代码了。 Option Explicit Sub 快递费() Dim i, j, k, m, found As Integer Dim d1, d2, d3 As Double For i = 2 To Sheets(1).[a65536].End(xlUp).Row '根据产品查单件重量,再乘以数量,得到总重 For j = 2 To Sheets(3).[a65536].End(xlUp).Row If Sheets(1).Cells(i, 6) = Sheets(3).Cells(j, 1) Then Sheets(1).Cells(i, 8) = CDbl(Sheets(1).Cells(i, 7)) * CDbl(Sheets(3).Cells(j, 2)) End If Next j Next i '根据表格1的第5列(快递公司)和第3列(省份)以及第8列(重量)在表格2种查找快递费 For i = 2 To Sheets(1).[a65536].End(xlUp).Row '表格1的订单总共这么多行 For j = 1 To Sheets(2).[a65536].End(xlUp).Row '在表格2中的第一列查找快递公司名称 If Sheets(2).Cells(j, 1) = Sheets(1).Cells(i, 5) Then Exit For Next j '退出循环时,j为快递公司所在行 found = 0 For k = 1 To 40 '最多40个省份、地区,这个可以根据情况进行修改 If Sheets(2).Cells(j + k, 2) = "" Then Exit For '到了空格行还没有找到,则不设立找到标志,直接退出循环 If Sheets(2).Cells(j + k, 2) = Sheets(1).Cells(i, 3) Then '找到了省份 found = 1 '设立找到标志 Exit For '退出循环,节约时间 End If Next k '如果found=1,则j+k行就是省份所在行,需要根据表格1的重量查找快递费 If found = 1 Then d1 = 0 '快递费 d2 = CDbl(Sheets(1).Cells(i, 8)) '重量 m = 0 '表格3快递费所在列 If d2 < 500 Then m = 3 If d2 >= 500 And d2 <= 999 Then m = 4 If d2 >= 1000 And d2 <= 1999 Then m = 5 If d2 >= 2000 And d2 <= 2999 Then m = 6 If d2 >= 3000 And d2 <= 3999 Then m = 7 If d2 >= 4000 And d2 <= 4999 Then m = 8 If d2 >= 5000 Then m = 9 d1 = CDbl(Sheets(2).Cells(j + k, m)) '查到快递费 Sheets(1).Cells(i, 9) = d1 '快递价格存到表格1的第9列第i行 Else Sheets(1).Cells(i, 9) = "没查到价格!" '没有找到,提醒用户进行检查 End If Next i End Sub