この問題を解決する良い方法が見つかりません。できるだけ問題を要約してみたいと思います。
私は、OLAP キューブ内を移動するために Hyperion Essbase Excel アドインを使用しています。ここで実現しようとしているのは、特定のラベルをディメンションの値にマッピングすることです。このディメンション内には複数のレベルのデータ グループがあるため、1 つの子ノードに複数のレベルの親が存在する可能性があります。メンバーが何になるかは事前にわかりますが、メンバーは毎月変更される可能性があり、欠落しているメンバーを見つけるのは面倒な作業になる可能性があるため、親メンバーを使用してそのメンバーを拡大表示します。ただし、1 つの親内に複数の異なるラベルが存在する可能性があります。私は、VLOOKUP() を使用してこれを実現し、現在の行がテーブル内に見つからない場合は、1 行下に移動してその数式をドラッグします。これにより、次のような望ましくない効果が生じます。
一緒になるものに番号を付けました。例でわかるように、要素「24566」は親「FD120465」にも存在します。結果として、同じグループ内でそれより前に見つかったすべての要素は「経費 B」にマッピングされますが、目標の結果は、すべての子要素が「経費 D」にマッピングされ、「24566」はマッピングされないことです。この例で使用した式は次のとおりです。
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,0), D12)
これに対処する方法はいくつか思いつきましたが、どれも気に入ったものではありません。子要素のみを参照する数式と親要素のみを参照する数式を 2 つ作成できます。子要素を最初に配置すると、グループに間違ったラベルが配置されても問題ありません (オレンジ色の部分では「24566」は「経費 D」とラベル付けされます)。また、この方法には、作業が増えるという欠点もあります (数式 1 と数式 2 を使用する領域を定義し、手動で作業を行うか、VBA で過剰に処理する必要があります...)。
もう 1 つの方法は、すべての子要素を取り出し、適切なマッピングでテーブルに配置することです。問題は、親要素に含まれる項目が毎月増減し、マッピングが変わる可能性がある (頻繁に変更されることはないはずですが) ため、すべての子要素を管理するのが面倒になることです。私が提供したサンプルは、私が持っているもの (親要素に 15 ~ 20 個の子要素) に比べて非常に小さいものです。
これは、最も欠点の少ない解決策に落ち着く前に、この課題に私が試みている最後の試みです。この問題を解決する明白な(あるいはそれほど明白ではない)方法はあるでしょうか?きれいに?
ありがとう !
答え1
これは、あなたが私が予想しているものを望んでいて、私が予想しているところから始めている場合に有効です。(データから結果を得るための最良の方法とは限りませんが、少なくとも何が必要かを明確にするのに役立ちます。)
すべての子に親が存在するようにヘルパー列を追加します (存在すると仮定)。
B11=IF(LEFT(C11,2)="FD",C11,B12) (必要に応じてコピー)
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,FALSE),VLOOKUP(B11,$C$3:$D$8,2,FALSE))
(D11 では、必要なだけコピーされます)。
表の下部 2 つの項目にタイプミスが含まれていると想定しました。