Corretamente, usando a função de correspondência do Excel para encontrar uma correspondência parcial

3

Eu estou tentando desesperadamente fazer com que meu excel faça o que eu quero. Eu quero encontrar uma seqüência de caracteres que está escrita na coluna B1 na minha coluna A1 para A5. Minha string na coluna B2 deve ser pesquisada em A1: A5 também.

Exemplo:

______________
|  A    |  B  |
|_______|_____|
|       |     |
| 13234 | 12  |
|_______|_____|
|       |     |
| 15485 | 13  |
|_______|_____|
|       |     |
| 13234 | 23  |
|_______|_____|
|       |     |
| 78165 | 132 |
|_______|_____|

e agora a saída em C1 a C5 seria:

C1 = no match
C2 = A1,A3
C3 = A1,A3
C4 = A1,A3

Eu tentei usar a função match da seguinte forma:

=MATCH (A1, A1:A5, 0)

seguindo a sintaxe tirada daqui:

link

    
por RayofCommand 17.12.2015 / 11:25

1 resposta

1

Considere o seguinte U ser D efinado F unção (UDF) :

Public Function WhereIs(rIn As Range, rList As Range) As String
   Dim s1 As String, r As Range
   Dim s2 As String
   WhereIs = ""
   s1 = rIn.Text

   For Each r In rList
      s2 = r.Text
      If InStr(1, s2, s1) > 0 Then
         If WhereIs = "" Then
            WhereIs = r.Address(0, 0)
         Else
            WhereIs = WhereIs & "," & r.Address(0, 0)
         End If
      End If
   Next r

   If WhereIs = "" Then WhereIs = "no match"
End Function

em que o primeiro argumento é o valor procurado e o segundo argumento é a lista.

FunçõesDefinidaspeloUsuário(UDFs)sãomuitofáceisdeinstalareusar:

  1. ALT-F11exibeajaneladoVBE
  2. ALT-IALT-Mabreumnovomódulo
  3. coleascoisasefecheajaneladoVBE

Sevocêsalvarapastadetrabalho,aUDFserásalvacomela.SevocêestiverusandoumaversãodoExcelposteriora2003,deverásalvaroarquivocomo.xlsmemvezde.xlsx

PararemoveroUDF:

  1. abrirajaneladoVBEcomoacima
  2. limpeocódigo
  3. fecheajaneladoVBE

ParausaroUDFdoExcel:

=WhereIs(B1,A1:A4)

Parasabermaissobremacrosemgeral,consulte:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 17.12.2015 / 15:56