Вот как это сделать в VBA:
Public Sub AddCarriage()
Dim intCOUNTER As Integer
Dim intCOUNTER2 As Integer
Dim intLASTROW As Integer
Dim intPCNUMBER As Integer
Dim strPCTEXT As String
Dim intLENGTH As Integer
Dim intPOS As Integer
Dim strFIRST As String
' Get the last row of postcodes containing data
intLASTROW = Range("A65536").End(xlUp).Row
' Get the postcode for the delivery address
strPCTEXT = Range("G1").Text
' Check if the postcode is all numeric (European?) or UK based
If IsNumeric(Range("G1").Text) Then
intPCNUMBER = Range("G1").Text
Else
' Separate the numbers from the letters in a UK postcode
intPOS = InStr(1, strPCTEXT, " ")
If intPOS > 0 Then
intLENGTH = intPOS - 1
strFIRST = Left(Range("G1").Text, intPOS - 1)
For intCOUNTER = 1 To intLENGTH
If IsNumeric(Mid(strFIRST, intCOUNTER, 1)) Then
strPCTEXT = Left(strFIRST, intCOUNTER - 1)
intPCNUMBER = Mid(strFIRST, intCOUNTER, (intLENGTH - intCOUNTER) + 1)
Exit For
End If
Next
Else
strPCTEXT = Range("G1").Text
End If
End If
For intCOUNTER = 1 To intLASTROW
If IsNumeric(Range("A" & intCOUNTER).Text) Then
For intCOUNTER2 = Range("A" & intCOUNTER).Text To Range("B" & intCOUNTER).Text
If intCOUNTER2 = intPCNUMBER Then Range("H1").Value = Range("E" & intCOUNTER).Value
Next
Else
If Left(Range("A" & intCOUNTER).Text, Len(strPCTEXT)) = strPCTEXT Then
For intCOUNTER2 = Mid(Range("A" & intCOUNTER).Text, Len(strPCTEXT) + 1, Len(intPCNUMBER)) To Mid(Range("B" & intCOUNTER).Text, Len(strPCTEXT) + 1, Len(intPCNUMBER))
If intCOUNTER2 = intPCNUMBER Then Range("H1").Value = Range("E" & intCOUNTER).Text
Next
End If
End If
Next
' Row E contains the delivery cost for that postcode range
' Cell "H1" is the cell that the delivery cost is to be entered in to
End Sub
Очевидно, что в моем примере стоимость доставки указана на том же листе, что и при вводе почтового индекса. Вам нужно будет добавить соответствующие поиски, чтобы сделать эту работу с тем, что у вас есть.