Формула Excel для поиска в одной ячейке и замены текста в другой ячейке - PullRequest
1 голос
/ 13 марта 2019

Я искал во всем и нашел много постов, которые почти то, что мне нужно, но ничего не совсем верно. Надеюсь, кто-то здесь может помочь.

У меня есть два столбца данных, столбец H содержит имена брокеров (Broker1, Broker2 и т. Д.). Столбец I содержит название компании, которую они представляют (ABC, BBC и т. Д.). Эти связи часто меняются, поэтому я ищу способ настроить формулу или макрос для быстрых изменений. По сути, я хочу сказать: «Если ячейка I2 содержит компанию ABC, измените H2 на Broker2».

Кажется, что все функции замены и замены сосредоточены вокруг замены всего Broker1 на Broker2, но я должен быть в состоянии внести это изменение, только когда вовлечена определенная компания. Broker2 может представлять 20 компаний, поэтому я должен иметь возможность ограничить поиск и замену определенными элементами данных.

Надеюсь, все это имеет смысл, заранее спасибо за помощь!

Добавление деталей: Итак, пример из реальной жизни. Компания под названием Elite представляет компанию Kellogg's. H2 = "Elite" и I2 = "Kellogg's". Однако Kellogg's может перейти в другую компанию под названием Core. Поэтому мне нужно искать I2: I200, и там, где мы найдем "Kellogg's", заменить H на "Core". Так что, если I78 = "Kellogg's" Мне нужно изменить H78 на "Core". Проблема в том, что Elite может представлять 20 других компаний, которые не двигаются, поэтому я не могу полностью заменить Elite на Core в моем списке, только при очень определенных обстоятельствах

1 Ответ

0 голосов
/ 13 марта 2019

Rep Change

Excel

Вы можете создать уникальный список названий компаний и добавить представителей. Тогда вы можете использовать формулу INDEX/MATCH в репрезентативном столбце (H), что-то вроде этого:

enter image description here

Тогда вы можете изменить Elite только в одном месте (M7), и он автоматически изменится во всех ячейках столбца H, например, H4.

1020 * VBA * Если вам это нужно для однократных операций, может пригодиться следующий код. Настройте константы в соответствии с вашими потребностями. Sub RepChange() Const Company As String = "Kellog's" Const Representer As String = "Elite" Const NewRepresenter As String = "Core" Const cSheet As Variant = "Sheet1" Const cColRep As Variant = "H" Const cColComp As Variant = "I" Const cFR As Long = 2 Dim LR As Long Dim i As Long With ThisWorkbook.Worksheets(cSheet) LR = .Columns(cColComp).Cells(.Rows.Count).End(xlUp).Row For i = cFR To LR If StrComp(.Cells(i, cColComp), Company, vbTextCompare) = 0 And _ StrComp(.Cells(i, cColRep), Representer, vbTextCompare) _ = 0 Then .Cells(i, cColRep) = NewRepresenter Next End With MsgBox "Operation finished successfully.", vbInformation, "Success" End Sub StrComp с vbTextCompare используется, чтобы избежать чувствительности к регистру, то есть AA = Aa = aa. Или вы можете использовать это: Sub RepChange2(Company As String, Representer As String, _ NewRepresenter As String) Const cSheet As Variant = "Sheet1" Const cColRep As Variant = "H" Const cColComp As Variant = "I" Const cFR As Long = 2 Dim LR As Long Dim i As Long With ThisWorkbook.Worksheets(cSheet) LR = .Columns(cColComp).Cells(.Rows.Count).End(xlUp).Row For i = cFR To LR If StrComp(.Cells(i, cColComp), Company, vbTextCompare) = 0 And _ StrComp(.Cells(i, cColRep), Representer, vbTextCompare) _ = 0 Then .Cells(i, cColRep) = NewRepresenter Next End With End Sub , где вы можете написать даже несколько операторов в такой подстановке, как эта: Sub Kellogs() RepChange2 "Kellog's", "Elite", "Core" End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...