Как использовать Application.match? - PullRequest
0 голосов
/ 22 апреля 2019

Я новичок в Excel VBA.

У меня есть следующие случайные столбцы:

Range("Y1").Value = "LITIGATE_PERSON_ADDRESS"
Range("Z1").Value = "LITIGATE_PERSON_CITY"
Range("AA1").Value = "LITIGATE_PERSON_TK"
Range("AB1").Value = "LITIGATE_PERSON_ADDRESS_TYPE"

Вот часть кода, которая используется для этих столбцов.


  Worksheets("MAIN_CONTROL").Cells(i, 25).Value = sourceADR

 sourceADR = Replace(sourceADR, "Attica", "")



 '...................................................................
  sourceADR = Replace(sourceADR, "-", " ")
  sourceADR = Replace(sourceADR, "  ", " ")
  sourceADR = Trim(sourceADR)

  auxC = sourceADR

Worksheets("MAIN_CONTROL").Cells(i, 26).Value = sourceADR
'..............................
  If (Len(sourceADR) < 1) Then GoTo aseAddr
'..............
 mainAddress = Split(sourceADR)

  addrAA = ""

Worksheets("MAIN_CONTROL").Cells(i, 24).Value = Str(UBound(mainAddress)) & "@@" & Str(LBound(mainAddress))


  For jA = UBound(mainAddress) To LBound(mainAddress) Step -1
 '......................................................


If (regex.Test(Trim(mainAddress(jA)))) Then

auxC = Replace(auxC, Trim(mainAddress(jA)), "")

 destws.Range("BT" & i).Value = Trim(mainAddress(jA))
 destws.Range("AA" & i).Value = Trim(mainAddress(jA))
 destws.Range("Z" & i).Value = addrAA

auxC = Trim(auxC)
 destws.Range("Y" & i).Value = auxC
'--------------------------------------------------------

'-------------------------------------------------------

GoTo aseAddr


 End If

auxC = Replace(auxC, Trim(mainAddress(jA)), "")
addrAA = mainAddress(jA) & " " & addrAA








'

 '.....................................................
 Next jA
 '.........................................................
  'destws.Range("Y" & i).Value = addrAA
'.....................
aseAddr:
'.................................


Моя проблема в том, что эти столбцы могут изменить порядок.Мне предложили использовать application.match, чтобы мой код мог следовать, но я не знаю, как поместить его в мой код.

Кто-нибудь может помочь?Заранее спасибо

1 Ответ

1 голос
/ 22 апреля 2019

Добро пожаловать на SO.

Как правило, вы можете использовать функцию Excel в VBA следующим образом:

application.WorksheetFunction.Match() 'where match() can be replaced by one of the available worksheet functions.

Аргументы функции работают почти так же, как и при использовании формулы вваш рабочий лист.

Функциональность соответствия подробно объяснена здесь

Так, например, предположим, что у вас есть массив, подобный следующему в ячейках A1:A13

enter image description here

И вы хотите найти местоположение «пятницы».Вы бы сделали это так:

Debug.Print Application.WorksheetFunction.Match("Friday", sht.Range("A1:A13"), 0)

И в результате вы получите 5.

Это должно в значительной степени охватить «Как использовать Application.Match ()».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...