我有一张CSV数据表。这些线可以按顺序关联。我需要针对两者之间的关系进行过滤。
Example table:
Type Result Test name
1: main ok something
2: main ok very important
3: sub nok unimportant
4: main ok unimportant
5: sub not unimportant
6: sub ok unimportant
我想过滤第2行,因为它是一项重要的任务,已通过“ ok”测试,但有一个相关的子任务为“ nok”。 第3行分配给最后一个主要任务,即第2行。除了在主任务下方的子任务之外,没有其他关系。
总结一下: 我要过滤所有“不正确”的子任务,但前提是将它们分配给“非常重要”的主任务。第3行属于第2行,因为它位于第2行之后。
我该如何解决?
答案 0 :(得分:1)
这就是我的处理方法。在第4列中添加一个公式(我们将其命名为D列,未在图片中显示)。 D2单元格中的公式为:
==IF(A1="main", IF(C1="very important", IF(A2="sub",IF(B2="nok", TRUE,FALSE))))
这将为上一行中“ main”和“非常重要”,当前行中“ sub”和“ nok”的所有任务创建TRUE语句。参见下面的图片:
答案 1 :(得分:0)
我的解决方案如下:
还有两个附加的列用于处理“ RelevantMain”和“ PossibleRelevantSub”,在结果列“ RelevantSub”上。每一列均由一个宏函数填充。
Public Function getRelevantMain(typ As String, gt As String)
matchesType = isEq(typ, "main")
Dim conditionsGT As Variant
conditions = Array("important values")
matches = matchesList(gt, conditions)
getRelevantMain = getRet(matchesType = True And matches = True)
End Function
Public Function getPossibleRelevantAdd(typ As String, prevRelMain As String, prevPossRelAdd As String)
isAdd = isEq(typ, "add")
prevWasRelMain = prevRelMain = "x"
prevWasPossRelAdd = prevPossRelAdd = "x"
prevWasRelevant = prevWasRelMain Or prevWasPossRelAdd
getPossibleRelevantAdd = getRet(isAdd And prevWasRelevant)
End Function
Public Function getRelevantAdd(possRelAdd As String, rating As String)
Dim conditionsRating As Variant
conditionsRating = Array("nok types")
matchesRating = matchesList(rating, conditionsRating)
thisIsPossRelAdd = possRelAdd = "x"
getRelevantAdd = getRet(thisIsPossRelAdd And matchesRating)
End Function