Formula:
=IFERROR(--SORT(CHOOSE({1,2,3},FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,XLOOKUP(FILTERXML(SUBSTITUTE(CONCAT(REPT("</m><m>"&UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m")),TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))),"/m","x",1)&"</m></x>","//m"),F7:F16,IF(E7:E16,E7:E16,"A"),"A"),REPT(A7:A16,NOT(COUNTIFS(E7:E16,A7:A16))))&"</m></x>","//m"),FILTERXML(SUBSTITUTE(CONCAT(REPT("</m><m>"&UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m")),TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))),"/m","x",1)&"</m></x>","//m"),XLOOKUP(FILTERXML(SUBSTITUTE(CONCAT(REPT("</m><m>"&UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m")),TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))),"/m","x",1)&"</m></x>","//m")&"."&MMULT((FILTERXML(SUBSTITUTE(CONCAT(REPT("</m><m>"&UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m")),TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))),"/m","x",1)&"</m></x>","//m")=TRANSPOSE(FILTERXML(SUBSTITUTE(CONCAT(REPT("</m><m>"&UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m")),TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))),"/m","x",1)&"</m></x>","//m")))*(SEQUENCE(SUM(--TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1")))>TRANSPOSE(SEQUENCE(SUM(--TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1"))))),SEQUENCE(SUM(--TEXT(COUNTIFS(J7:J16,UNIQUE(FILTERXML("<x><m>"&TEXTJOIN("</m><m>",,F7:F16,IF(K7:K16,IF(J7:J16,J7:J16,"C"),""))&"</m></x>","//m"))),"0;;1")))^0),IF(K7:K16,IF(J7:J16,J7:J16,"C"),"")&"."&MMULT((IF(K7:K16,IF(J7:J16,J7:J16,"C"),"")=TRANSPOSE(IF(K7:K16,IF(J7:J16,J7:J16,"C"),"")))*(SEQUENCE(ROWS(K7:K16))>TRANSPOSE(SEQUENCE(ROWS(K7:K16)))),SEQUENCE(ROWS(K7:K16))^0),K7:K16,"")),{1,2,3}),"")
let
T1 = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
T2 = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
T3 = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
T12 = Table.ExpandTableColumn(Table.NestedJoin(Table.SelectColumns(T1,"A"),"A",Table.SelectColumns(T2,{"A","B"}),"A","AA",JoinKind.FullOuter), "AA", {"A", "B"}, {"A.1", "B"}),
AA = Table.AddColumn(T12, "AA", each if [A] = null then [A.1] else [A]),
Replaced1 = Table.ReplaceValue(AA,null,19999,Replacer.ReplaceValue,{"B","AA"}),
T23 = Table.ExpandTableColumn( Table.NestedJoin(Table.SelectColumns(Replaced1,{"AA","B"}),"B", Table.SelectColumns(T3,{"B","C"}),"B","CC",JoinKind.FullOuter), "CC", {"B", "C"}, {"B.1", "C"}),
BB = Table.AddColumn(T23, "BB", each if [B]=null then [B.1] else [B]),
SelectCol = Table.SelectColumns(BB,{"AA", "BB", "C"}),
Replaced2 = Table.ReplaceValue(SelectCol,null,19999,Replacer.ReplaceValue,{"AA", "BB", "C"}),
Sorted = Table.Sort(Replaced2,{{"AA", Order.Ascending}, {"BB", Order.Ascending}, {"C", Order.Ascending}}),
Replaced3 = Table.ReplaceValue(Sorted,19999,null,Replacer.ReplaceValue,{"AA", "BB", "C"})
in
Replaced3
Bookmarks