Excel: создание отношений между ячейками или линиями - PullRequest
0 голосов
/ 24 июня 2019

У меня есть таблица данных 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, потому что это важная задача, которая была проверена «хорошо», но у нее есть связанная подзадача, которая была«нок».Строка 3 назначена последней основной задаче, которая является строкой 2. Нет никакой другой связи, кроме подзадачи, стоящей под основной задачей.

Подводя итог: я хочу отфильтровать все подзадачи, которые 'nok ', но только если они назначены главной задаче, которая является' очень важной '.Строка 3 принадлежит строке 2, потому что она следует за строкой 2.

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Так вот, как бы я это сделал.Добавьте формулу к 4-му столбцу (назовем его столбцом D, который не показан на рисунке).Формула в ячейке D2 будет выглядеть следующим образом:

==IF(A1="main", IF(C1="very important", IF(A2="sub",IF(B2="nok", TRUE,FALSE))))

Это создаст ИСТИННЫЙ оператор для всех задач, которые являются «основными» и «очень важными» в предыдущей строке, «sub» и «nok» втекущий рядСмотри картинку ниже:

enter image description here

0 голосов
/ 28 июня 2019

Мое решение теперь следующее:

Есть два дополнительных столбца для обработки «RelevantMain» и «возможныйRelevantSub» и столбца для результата «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
...