-1

Мне нужно знать, как получить Excel, чтобы понять области почтового кода.

У меня есть начальный почтовый индекс, например, A2, конец диапазона в B2 и диапазон цен для этой области в B3, как я могу получить формулу для проверки почтового индекса в диапазоне и вывести правильный диапазон цен от B3 до завершить цены? Vlookup понимает только начальный почтовый индекс, и если он не соответствует 100% с имеющимся почтовым индексом, он просто ничего не приносит. Какую формулу я могу использовать для решения такой проблемы?

1 ответ1

0

Вот как это сделать в 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

Очевидно, что в моем примере стоимость доставки указана на том же листе, что и при вводе почтового индекса. Вам нужно будет добавить соответствующие поиски, чтобы сделать эту работу с тем, что у вас есть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .