Excel:在单元格或线之间创建关系

时间:2019-06-24 10:19:21

标签: excel filter relationship

我有一张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行之后。

我该如何解决?

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语句。参见下面的图片:

enter image description here

答案 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
相关问题