Страницы: 1
RSS
Исключить пары вопрос - ответ, а комментарии без ответов пометить
 
Добрый день, друзья!
Дано: Есть таблицы, в которой Адресат - это тот, кто написал комментарий, Получатель - тот, кому оно адресовано.
Задача: Найти комментарии без ответа. То есть пары (a -> b; b -> a) считаются парой вопрос - ответ. Если a -> b это вопрос, то сразу же первая попавшаяся строка  b -> a автоматически считается ответом.
Нужно получить столбец "Результат", или сразу вывести комментарии без ответов.

Подскажите, пожалуйста, как это можно сделать. какой день уже ломаю голову.
 
если по примеру и
Цитата
Артур Идрисов написал:
то сразу же первая попавшаяся строка  b -> a
именно сразу, то
=--AND(OR(C3<>[@Адресат];B3<>[@Получатель]);OR(C1<>[@Адресат];B1<>[@Получатель]))
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
именно сразу, то
Первая попавшаяся может идти не прям следом, а может попасться через n-ое количество строк.

Возможно это можно как-нибудь через PQ или PP сделать?
 
Артур Идрисов, тогда пример не полный, а вот условие двоякое.
Если по принципу FiFo , то есть первый ответ закрывает первый вопрос, то одно а если именно цепочка беседы соблюдается, то тогда не понятно как определеить, или на оборот закрытым считается тот после которого следует ответ и если  
a -> b
b -> a тут все ок
а вот тут?
a -> b
a -> b
.....
b -> a
b -> a
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
a -> bb -> a тут все ок а вот тут?a -> ba -> b.....b -> ab -> a
Согласен, двояко....поэтому все формальности опускаем и считаем строго

a -> b - пара1
a -> b - пара2
.....
b -> a - пара 1
b -> a - пара 2
 
Доброе время суток
Цитата
Артур Идрисов написал:
Возможно это можно как-нибудь через PQ
Стековые задачи? Можно, но лучше не... Да и примера продуманного как не было, так и нет.

Updated. Если подумать, то как-то так
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    ren1 = Table.RenameColumns(Source,{{"ID комментария", "id1"}, {"Адресат", "a1"}, {"Получатель", "b1"}})[[id1], [a1], [b1]],
    ren2 = Table.RenameColumns(Source,{{"ID комментария", "id2"}, {"Адресат", "a2"}, {"Получатель", "b2"}})[[id2], [a2], [b2]],
    group1 = Table.Group(ren1, {"a1", "b1"}, {"temp", each Table.AddIndexColumn(_, "loc1")}),
    exp1 = Table.ExpandTableColumn(group1, "temp", {"id1", "loc1"}),
    group2 = Table.Group(ren2, {"a2", "b2"}, {"temp", each Table.AddIndexColumn(_, "loc2")}),
    exp2 = Table.ExpandTableColumn(group2, "temp", {"id2", "loc2"}),
    join = Table.Join(exp1, {"a1", "b1", "loc1"}, exp2, {"b2", "a2", "loc2"}, JoinKind.LeftOuter)[[id1], [loc2]],
    result = Table.Join(Source, {"ID комментария"}, join, {"id1"}),
    drop = Table.RemoveColumns(result,{"id1"}),
    return = Table.Sort(drop,{{"ID комментария", Order.Ascending}})
in
    return

P. S. Всегда удивляет, почему такая реакция - как получше пример сделать, так вроде и решение задачи уже не столь необходимое :)
Изменено: Андрей VG - 27.05.2020 15:35:23
 
Цитата
Андрей VG написал:
Если подумать, то как-то так

Благодарю, все работает!
Страницы: 1
Наверх