Ideally, I want to do this with a straight Excel formula. I'm not at all familiar with VBScript or similar tools, nor do I have time to learn it for this project.
O método Range.Find do VBA existe apenas para essas tarefas. Seria uma pena não usá-lo. :)
Sintaxe
Range.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Precisamos apenas de 3 dos parâmetros para sua tarefa. Deixe o resto de fora
-
Intervalo : o intervalo em que pesquisar
-
O que: Os dados para pesquisar
-
LookAt: pode ser um xlWhole (correspondência completa) ou xlPart (correspondência parcial)
-
MatchCase: True para tornar a pesquisa sensível a maiúsculas e minúsculas. Falso para uma pesquisa insensível a maiúsculas e minúsculas
Um pequeno exemplo seria parecido com
Set result = Columns(C:E).find(what:=[A1], LookAt:=xlPart, MatchCase:=false)
Este código respeita suas condições adicionais, como
- Verifique os dados da coluna A e coluna B. Se um deles corresponder, retorne verdadeiro
- Retorna verdadeiro mesmo com correspondências parciais
- Ignorar maiúsculas ou minúsculas
- Retorna verdadeiro ou falso na coluna F
Sub SearchMatches()
For i = 2 To 5
On Error Resume Next
Set checkColA = Columns("C:E").Find(Cells(i, 1), , , xlPart, , , False)
Set checkColB = Columns("C:E").Find(Cells(i, 2), , , xlPart, , , False)
On Error GoTo 0
If checkColA Is Nothing And checkColB Is Nothing Then
Cells(i, 6) = False
Else
Cells(i, 6) = True
End If
Next i
End Sub