[Excel] كيفية إلحاق الخلايا بشكل متكرر؟



Answers

إليك حل فبا فونكتيون.

Option Explicit
Public Function ResValue(id As Long, table As Range, indexID As Integer, indexParentID As Integer, indexValue As Integer) As String

Dim strTmp As String, idTmp As Long
idTmp = id
ResValue = ""
Do While idTmp <> 0
    strTmp = Application.WorksheetFunction.Index(table.Columns(indexValue), Application.WorksheetFunction.Match(idTmp, table.Columns(indexID), 0))
    ResValue = strTmp & ResValue
    idTmp = Application.WorksheetFunction.Index(table.Columns(indexParentID), Application.WorksheetFunction.Match(strTmp, table.Columns(indexValue), 0))
Loop
ResValue = Application.WorksheetFunction.Index(table.Columns(indexValue), Application.WorksheetFunction.Match(0, table.Columns(indexID), 0)) & ResValue
End Function

يمكنك استخدام ResValue(id, table, indexID, indexParentID, indexValue) في ورقة العمل الآن لإنشاء القيم التي تم حلها.

ملاحظات:

  • id هو معرف تريد إنشاء قيمة حل ل.
  • table هو عنوان الجدول بأكمله (باستثناء عمود القيمة التي تم حلها).
  • كل وسيطة مؤشر هي فهرس العمود النسبي لكل حقل. على سبيل المثال، المعرفات في العمود الأول من الجدول، لذلك indexID = 1، و بارنتيدس في العمود الثاني، لذلك indexParentID = 2.

في جدول العينة، ستقوم بإدخال ما يلي في D3 (الخلية الأولى للقيم التي تم حلها):

=ResValue(A3,$A$3:$C$8,1,2,3)

وبعد ذلك يمكنك ملء هذه الصيغة أسفل العمود.

Question

لدي ورقة إكسيل تبدو كالتالي:

  |A     B           C                      D
-----------------------------------------------------------------------------------
1 |ID    PARENTID    VALUE                  RESOLVED VALUE (how to generate this?)
===================================================================================
2 |0     0           /root                  /root
3 |1     0           /one                   /root/one
4 |2     0           /two                   /root/two
5 |3     0           /three                 /root/three
6 |4     3           /child-one-of-three    /root/three/child-one-of-three
7 |5     3           /child-two-of-three    /root/three/child-two-of-three

يحتوي كل صف على ID و PARENTID . أريد إنشاء محتوى العمود الأخير، ريسولفد فالو بواسطة إلحاق ريسوورسيفلي فالو من كل صف.

كيف يمكنني القيام بذلك في إكسيل؟