Function tree2Path(MainKey As Range, tree As Range, Optional separator$ = "\") As String
If (tree.Row + tree.Rows.Count - 1) = MainKey.Row Then tree2Path = MainKey: Exit Function
Dim a, r, c%, lc%, s$, ir&, ic%
a = tree.value: lc = tree.Columns.Count: ir = tree.Rows.Count
For c = lc To 1 Step -1
If a(ir, c) <> Empty Then s = a(ir, c): c = c - 1: Exit For
Next
If c > 0 Then
For r = ir - 1 To 1 Step -1
If a(r, c) <> Empty Then
s = a(r, c) & separator & s: c = c - 1: If c = 0 Then Exit For
Else
For ic = c - 1 To 1 Step -1
If a(r, ic) <> Empty Then Exit Function
Next
End If
Next
End If
tree2Path = IIf(s <> Empty, MainKey & separator, "") & s
End Function
Hay quá, tớ mò hàm mà không nối được.Bạn có thể tham khảo sử dụng hàm UDF tree2Path dưới đây:
Gõ tại ô J3 =tree2Path($A$3,$A3,$A$3:G3)
JavaScript:Function tree2Path(MainKey As Range, value As Range, tree As Range, Optional separator$ = "\") As String If value.Row = MainKey.Row Then tree2Path = MainKey: Exit Function Dim a, r, c%, lc%, s$, ir& a = tree: lc = tree.Columns.Count: ir = value.Row - tree.Row + 1 For c = lc To 1 Step -1 If a(ir, c) <> Empty Then s = a(ir, c): c = c - 1: Exit For Next If c > 0 Then For r = ir To 1 Step -1 If a(r, c) <> Empty Then s = a(r, c) & separator & s: c = c - 1: If c = 0 Then Exit For Next End If tree2Path = IIf(s <> Empty, MainKey & separator, "") & s End Function
Cảm ơn bác, em có làm theo hướng dẫn của bác nhưng lúc em copy hàm xuống dưới thì từ dòng 5 đổ đi trả về kết quả trắng bác ạ.Bạn có thể tham khảo sử dụng hàm UDF tree2Path dưới đây:
Gõ tại ô J3 =tree2Path($A$3,$A3,$A$3:G3)
JavaScript:Function tree2Path(MainKey As Range, value As Range, tree As Range, Optional separator$ = "\") As String If value.Row = MainKey.Row Then tree2Path = MainKey: Exit Function Dim a, r, c%, lc%, s$, ir&, ic% a = tree: lc = tree.Columns.Count: ir = value.Row - tree.Row + 1 For c = lc To 1 Step -1 If a(ir, c) <> Empty Then s = a(ir, c): c = c - 1: Exit For Next If c > 0 Then For r = ir To 1 Step -1 If a(r, c) <> Empty Then s = a(r, c) & separator & s: c = c - 1: If c = 0 Then Exit For Else For ic = lc To 1 Step -1 If a(r, ic) <> Empty Then Exit Function Next End If Next End If tree2Path = IIf(s <> Empty, MainKey & separator, "") & s End Function
Mã tôi thử bình thường, bạn chép lại mã xem lại lần nữa trên #2Cảm ơn bác, em có làm theo hướng dẫn của bác nhưng lúc em copy hàm xuống dưới thì từ dòng 5 đổ đi trả về kết quả trắng bác ạ.
J4=IFERROR(LOOKUP(2,1/LEN(OFFSET(A$3:A3,,MATCH("*",A4:G4,)-2)),J$3:J3),$J$3)&"\"&HLOOKUP("?*",A4:G4,1,)
Tuyệt vời, cảm ơn bác nhiềuSai thì nhận sai. Việc gì phải chối.
Mã:J4=IFERROR(LOOKUP(2,1/LEN(OFFSET(A$3:A3,,MATCH("*",A4:G4,)-2)),J$3:J3),$J$3)&"\"&HLOOKUP("?*",A4:G4,1,)