Questão Pesquise duas colunas no Microsoft excel 2013 e defina o valor de uma terceira coluna com um valor específico


Eu quero procurar um texto específico que é o firstname_lastname por exemplo John_Smith dentro worksheetA. WorksheetA tem uma coluna firstname e outra coluna lastname. Então, depois de saber qual linha tem o primeiro nome e sobrenome que eu procurei, quero definir o valor de célula na mesma linha com um valor específico.

Por exemplo, se esta for minha planilha:

Firstname     Lastname     Found
Matt          Damon        No
Smith         Andrew       No
John          Smith        No
Tom           Mark         No

e minha palavra de pesquisa é John_Smith o resultado será

Firstname     Lastname     Found
Matt          Damon        No
Smith         Andrew       No
John          Smith        Yes
Tom           Mark         No

Qualquer conselho, por favor, como isso pode ser feito no Excel VBA?


0


origem


Bem-vindo ao superusuário. Nós não somos um serviço de escrita de scripts. Esperamos que os usuários nos digam o que tentaram até agora (incluindo o código que estão usando) e onde estão presos, para que possamos ajudar com problemas específicos. Perguntas que só pedem código são muito amplas e provavelmente serão colocar em espera ou fechado. Por favor leia Como faço uma boa pergunta?. - DavidPostill♦
A maneira mais simples de fazer isso é provavelmente com uma coluna auxiliar. Combine primeiro e último nome em uma nova coluna e pesquise lá. - fixer1234


Respostas:


Este código deve funcionar:

Public Sub searchfullname()
    fullname = InputBox("Input first and last name separated by _")
    namesarray = Split(fullname, "_")
    i = 2
    dataintable = True
    result = "No"
    m = ActiveSheet.Cells(i, 1)
    If m = "" Then dataintable = False
    While dataintable = True
        result = "No"
        If m = namesarray(0) Then
            n = ActiveSheet.Cells(i, 2)
            If n = namesarray(1) Then
                result = "Yes"
            End If
        End If
        ActiveSheet.Cells(i, 3) = result
        i = i + 1
        m = ActiveSheet.Cells(i, 1)
        If m = "" Then dataintable = False
    Wend
End Sub

1