Прочитайте один рабочий лист и загрузите данные в другой, но не просто как ссылку

Прочитайте один рабочий лист и загрузите данные в другой, но не просто как ссылку

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

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

"\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

Вы на правильном пути, учитывая оператор 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)

Связанный контент