VBA: Como substituir todo o valor da célula do Excel por seu conteúdo?

2

Eu tenho uma planilha do Excel com alguns nomes em uma célula. Pode haver um nome por célula como vários nomes em uma célula.

Por exemplo: A célula A5 contém "Joe", a célula BD54 contém "Joe; Harry; Molly", a célula YY1 contém "Harry; Butch".

O que eu quero alcançar é substituir os valores de todas as células que contêm "Joe" ou "Molly" por "1", independentemente do que mais esteja nessas células, e as células contendo apenas "Harry" ou "Butch" ser substituído por "0" se não contiver "Joe" ou "Molly". Por exemplo acima, o resultado deve ser o seguinte: A5 contém "1", BD54 contém "1", YY1 contém "0".

Eu sou um novato total no VBA - vocês, senhores, por favor, assis com isso? Eu suspeito que Cells.Replace deve ser usado aqui, no entanto, não sei como passar uma lista de nomes para ele

Dim Findtext As String
 Dim Replacetext As String
 Findtext = "Joe","Molly"
 Replacetext = "1"
 Findtext = "Harry","Butch"
 Replacetext = "0"
 Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:=xlPart, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False 
    
por Volkodav2003 26.09.2014 / 11:05

1 resposta

0

Você está no caminho certo, mas pode fazer algo assim, usando instr -

Sub test()
Dim check1 As Integer
Dim check2 As Integer
Dim find1 As String
find1 = "a"
Dim find2 As String
find2 = "b"
For Each c In Range("A:A")
    check1 = InStr(1, c, find1, 1)
    check2 = InStr(1, c, find2, 1)
        If check1 > 0 Then
            c.Value = 1
        End If
        If check2 > 0 Then
            c.Value = 2
        End If
Next

End Sub

Basicamente, ele procura na célula a posição da string de pesquisa. Se não encontrar, reverte para 0 . Portanto, se encontrar, os inteiros check1 ou check2 serão > 0. Se encontrar as duas strings, ele será revertido para a segunda (ou última) if integer.

    
por 26.09.2014 / 14:13