У меня есть список активов и атрибутов оборудования, который является дампом необработанных данных из базы данных. Среди атрибутов, таких как состояние оборудования (например, работает, в режиме ожидания и т.д.) Или уровень масла, он также включает в себя такие вещи, как заголовки и заполнители в виде отдельной строки записи. Вот с чем я работаю с точки зрения данных.

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

"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\BU-1002\P-1866A"

То, что я буду проверять, будет частью этой текстовой строки "DE-OILING D". Это может включать в себя сотни записей, и, извлекая записи только с тем частичным текстом, я не буду извлекать другие сотни записей, которые мне не нужны.

Теперь я надеюсь, что это возможно с помощью функции. Я знаю, что могу подсчитать количество этих записей в этом списке данных с помощью оператора COUNTSIF (эта формула работает для меня "= COUNTIF ('DBASE SHEET'!B:B, A4)"). Так что я знаю, что это можно обнаружить, но я не могу понять, как вытащить другие поля данных, проверив текст «De-Oiling D» в качестве условного аргумента, а затем сослаться на другие данные на основе что критерии.

Я пробовал index() , indirect() и vlookup() и это либо что-то совершенно другое или, возможно, сочетание этих функций. В любом случае я не могу заставить формулу работать.

Теперь вот другая морщина. После того, как я обнаружил указанную запись, которую я хочу перенести на новую рабочую таблицу, я хочу иметь возможность создать список новых данных, но без целого ряда пустых строк.

Записать образец, используя | в качестве разделителей клеток:

|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | NULL            |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | RUNNING STATUS  |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | OIL LEVEL       |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING C\P-1370 | SUCTION PRESSURE|
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | NULL            |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | RUNNING STATUS  |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1470 | OIL LEVEL       |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | NULL            |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | RUNNING STATUS  |
|\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D\P-1570 | OIL LEVEL       |

В качестве вывода я хотел бы получить следующее без пробелов и прочего:

|DE-OILING C | P-1370 | RUNNING STATUS  |
|DE-OILING C | P-1370 | OIL LEVEL       |
|DE-OILING C | P-1370 | SUCTION PRESSURE|
|DE-OILING D | P-1470 | RUNNING STATUS  |
|DE-OILING D | P-1470 | OIL LEVEL       |
|DE-OILING D | P-1570 | RUNNING STATUS  |
|DE-OILING D | P-1570 | OIL LEVEL       |

1 ответ1

1

Вы находитесь на правильном пути, рассматривая оператор COUNTIFS(). Обрабатывайте текстовую строку так же, как при сравнении чисел, используя> и <квалификаторы, чтобы проверить, начинается ли каждая строка с искомого раздела.

=COUNTIFS('DBASE SHEET'!B:B,">"&A4,'DBASE SHEET'!B:B,"<"&A5)

где А4 содержит ваш

"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D"

и А5 содержит

"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING E"

Если вам нужна динамическая формула для автоматического заполнения A5, попробуйте

=LEFT(A4,LEN(A4)-1)&CHAR(CODE(RIGHT(A4,1))+1)

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