2

У меня есть таблица Excel с некоторыми именами в ячейках. В одной ячейке может быть как одно имя, так и несколько имен в одной ячейке.

Например: ячейка A5 содержит "Джо", ячейка BD54 содержит «Джо; Гарри; Молли», ячейка YY1 содержит «Гарри; Бутч».

Чего я хочу добиться, так это заменить значения всех ячеек, содержащих "Джо" или "Молли", на "1", независимо от того, что еще находится в этих ячейках, а "celss", который содержит только "Гарри" или "Бутч", будет заменен на "0", если он не содержит "Джо" или "Молли". Например, результат должен быть следующим: A5 содержит "1", BD54 содержит "1", YY1 содержит "0".

Я абсолютный новичок в VBA - не могли бы вы, господа, помочь с этим? Я подозреваю, что Клетки.Заменить следует использовать здесь, однако я не уверен, как передать ему список имен

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 

1 ответ1

0

Вы на правильном пути, но вместо этого вы можете сделать что-то вроде этого, используя 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

По сути, он ищет в ячейке положение строки поиска. Если он не находит его, он возвращается к 0 . Так что, если он найдет его, целые числа check1 или check2 будут> 0. Если он найдет обе строки, он вернется ко второй (или последней), if целое число.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .