2014-11-15 4 views
1

У меня есть странная проблема Excel, которая дает мне блок разума. В основном, это то, что у меня есть:Формула Excel - если содержит текст, текст результата

Столбец А содержит строки текста, в которых содержатся имена компаний и куча другой информации. Я бы хотел снять эти имена. У меня есть список имен, которые я ищу.

**Contractor** 
CompanyA 
CompanyB 
CompanyC 
CompanyD 

И строки, как это:

CompanyA REQ# G-FMR-036 PT 2 
CompanyA Pad AN Structural Steel() 
COMPANYC REQ# 54 
CompanyA REQ# G-FMR-049 

То, что я хотел бы формула для возврата в зависимости от названия компании появится в этой строке. Моя первая мысль была гигантская вложенная формула IFs и SEARCHes, но я знаю, что должен быть лучший способ.

+0

вы застряли, используя excel? –

+0

Да, иначе это было бы намного проще. Я бы предпочел сделать это без VBA, но это будет мой следующий курс действий. – idalsin

+0

Ваша история показывает некоторый интерес к python, можем ли мы использовать это? –

ответ

2

Со списком для поиска в A1: A4 и список названий компаний в B1: B4, это array formula, вошел с CtrlСдвигВведите сделает это:

=INDEX($B$1:$B$4,MATCH(TRUE,ISNUMBER(SEARCH($B$1:$B$4,A1)),0)) 
0

Это то, что я создал до сих пор, хотя я полагаю, что должен быть лучший способ, чем вложенные формулы типа whoa. Я имею в виду, это работает, но это заставляет меня хотеть плакать.

=IF(ISNUMBER(SEARCH(T$3,B3)),"CompanyA",IF(ISNUMBER(SEARCH(T$4,B3)),"CompanyB",IF(ISNUMBER(SEARCH(T$5,B3)),"CompanyC",IF(ISNUMBER(SEARCH(T$6,B3)),"CompanyD","Other")))) 
1

Немного ляпа, но лучше, чем вложенный МСФ:

Я объясняю для примера вы дали выше (4 компании); вы должны уметь выяснить, как это расширить.

В колонке А есть свои строки, которые включают названия компаний и дополнительные материалы. Предположим, что A1 имеет название столбца, а ваши 4 строки находятся в A2, A3, A4, A5.

В ячейках C1, D1, E1, F1 есть «чистые» четыре названия компаний.

В C2 имеют следующую формулу:

=IF(ISERROR(FIND(UPPER(C$1), UPPER($A2))),"",C$1) 

Затем скопировать ячейку C2 для всех ячеек C2: F5. Формула будет автоматически обновляться, чтобы соответствовать каждой ячейке.

Затем в ячейку Н2 имеют следующую формулу:

=C2&D2&E2&F2 

, а затем копировать/вставить его в H3, H4, H5.

В колонке H вы получите то, что ищете.

Конечно, это предполагает, что в каждой ячейке в столбце A имеется только одно подходящее название компании, а имена точно (с учетом чувствительности к регистру) совпадают с названиями компаний в ячейках C1: F1.

1

I что некоторые названия компаний содержат пробелы, в противном случае вы могли бы просто использовать:

=left(a1,find(" ",a1)-1) 

Если вам нужно сравнить cont листы строки против списка компаний, а затем список в названном диапазоне «CompanyList»; одна запись в строке; вы могли бы попробовать что-то вроде:

=IFERROR(LOOKUP(2,1/ISNUMBER(SEARCH(CompanyList&"*",A1)),CompanyList),"Not in List") 

Однако, если некоторые имена похожи, вам необходимо обратить внимание на порядок в списке, так как формула возвращает последний элемент, который соответствует. Поэтому вы хотите поместить самую длинную строку в список компаний последним.

Смежные вопросы