我有一份设备资产和属性列表,这是从数据库中转储的原始数据。在设备状态(如运行、待机等)或油位等属性中,它还包括标题和占位符等作为单独的记录行。这就是我在数据方面处理的内容。
我想用这些数据填充另一张表,方法是根据部分文本行和其他标准选择该信息。以下是我正在检查的单元格所包含内容的示例。
"\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)
A4 包含你的
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING D"
并且 A5 包含
"\Hierarchy\P2 PROCESS DE-OIL\DE-OIL\DE-OILING E"
如果你需要一个动态公式来自动填充 A5,请尝试
=LEFT(A4,LEN(A4)-1)&CHAR(CODE(RIGHT(A4,1))+1)