Индекс поиска Excel и строка соответствия - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь найти строку и вернуть только часть текста в строке

enter image description here

Я использую эту формулу

=IFERROR(IF(SEARCH("LineItem #",B16),INDEX($B19:$B34,MATCH("*"&"Thermal Requirement"&"*",$B19:$B34,0))),"")

, который возвращает полную строку. Есть ли способ выделить часть ряда. например, просто вытяните U-Factor = 0.35 из строки.

Я знаю, что могу сделать это с помощью вспомогательного столбца, но я хочу сделать все это в одном столбце, если это возможно.

1 Ответ

1 голос
/ 21 февраля 2020

Если у вас есть версия Excel, которая поддерживает массивы Dynami c, вы можете использовать комбинацию Filter и FilterXML вместо формулы Index, чтобы отфильтровать только биты U-фактора

Формула в E17 (Разлив в E17:E18 для данных этого примера)

=FILTERXML("<h><a>"&SUBSTITUTE(FILTER(B19:B30,LEFT(B19:B30,19)="Thermal Requirement"),",","</a><a>")&"</a></h>","//a[contains(text(),""U-Factor"")]")```

или поместите условия поиска в отдельные ячейки

=FILTERXML("<h><a>"&SUBSTITUTE(FILTER(B19:B30,LEFT(B19:B30,LEN(E9))=E9),",","</a><a>")&"</a></h>","//a[contains(text(),""" & E10 & """)]")

enter image description here

Обратите внимание, что если в диапазоне данных имеется более 1 строки «Требования к температуре», это приведет к разливу


Как это работает

Прервано и ссылается на изображение ниже:

Внутренняя Filter возвращает диапазон разлива, состоящий только из строк "Требования к теплу"

=FILTER(B19:B30,LEFT(B19:B30,LEN(E9))=E9)

Этот диапазон разлива затем форматируется как XML

="<h><a>"&SUBSTITUTE(G17#,",","</a><a>")&"</a></h>"

Затем фильтруется XML для возврата узлов "U-Factor"

=FILTERXML(H17#,"//a[contains(text(),""" & E10 & """)]")

enter image description here

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