4

次のような Excel シートがあります。

  |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ます。RESOLVED VALUE各行の を再帰的に追加して、最後の列のコンテンツを生成したいと考えていますVALUE

Excelでこれを行うにはどうすればよいですか?

4

2 に答える 2

3

データがセル A3 から始まると仮定します。

=IF(B4=A4,C4,VLOOKUP(B4,$A$3:$D$5,4)&C4)

$A$3:$D$5データ配列のサイズに拡張する必要があります。

于 2012-04-12T13:49:14.470 に答える
1

これがVBA関数ソリューションです。

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解決された値を生成する ID です。
  • tableテーブル全体のアドレスです (解決された値の列を除く)。
  • 各インデックス引数は、各フィールドの相対列インデックスです。たとえば、ID はテーブルの最初の列にあるのでindexID= 1、ParentID は 2 番目の列にあるのでindexParentID= 2 です。

サンプル テーブルでは、D3(解決された値の最初のセル) に次のように入力します。

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

そして、この数式を列に入力できます。

ここに画像の説明を入力

于 2012-04-12T14:30:28.827 に答える