У меня есть список активов и атрибутов оборудования, который представляет собой необработанный дамп данных из базы данных. Помимо атрибутов, таких как состояние оборудования (например, работает, в режиме ожидания и т. д.) или уровень масла, он также включает такие вещи, как заголовки и заполнители в виде отдельной строки записи. Вот с чем я работаю в плане данных.
Что я хотел бы сделать с этими данными, так это заполнить другой лист этой информацией, выбрав ее на основе частичной текстовой строки среди других критериев. Вот пример того, что будет содержать ячейка, которую я проверяю.
"\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)