2017-01-10 7 views
1

下の例のA列とB列のようにGoogleシートに階層データがある場合、C列の対応するセルをA1の "親"値とBの列の "子"の値です。つまり、たとえばC8の式は、A6の値5を見つけるまで列Aの上を検索し、 B8で明らかにGoogleスプレッドシートで階層データを操作する

Example Sheet

私は列Aのすべての行に「親」の値を入れすることを避けるためにしようとしているあなたがこれを行うことができます

答えて

1

ArrayFormulasで私の記憶を振り回してジョギングした後、私は望む結果を得る方法を考え出しました。ここで私が使用している式です:

=ArrayFormula(index($B$2:$B2,MAX(IF(ISNUMBER($B$2:$B2),ROW($B$2:$B2)))-1,1)) 

(注:行1は見出しが含まれています)

編集:私は、このソリューションに到着したかの説明:

通常、IF(ISNUMBER(セル) )、ROW(セル)はそれぞれTRUE/FALSEまたは行番号を返します。代わりに配列式とセル範囲を入力として使用すると、TRUE/FALSE値のリストと入力範囲内の各セルについて評価される行番号が得られます。その周りにMAXをラップすると、IF(ISNUMBER())がTRUEでROW()によって返された行番号が最高で、その範囲の下から効果的に検索する2つのリストの位置が返されます。

検索対象の範囲(この場合は$ B $ 2)の最初の要素の絶対参照は、式を他のセルにドラッグするときに同じ開始位置に固定された範囲を保持しますが、範囲の下限この場合は$ B2)は、垂直方向に大きくなります。

最後に、INDEXは、目的の値を返すために、入力範囲、上記で返された行番号(ヘッダーのため-1行)、列位置(1列しかないので1)をとります。

0

一つの方法は、列Bの各値を関連付けることであろうAの値を別のテーブルで参照するために使用できるカテゴリまたはキーを使用して、これは幾分抽象化されているので、A列の値をすべての行に入れなくても変更できますが、空のセルはありません。

すなわち

screenshot

ルックアップテーブル:列Cにおいて

screenshot

= VLOOKUP($A1, <range for category lookup table>, 2, 0) * $B1 

(そして、この式はダウン充填することができる)

また

More on VLOOKUP in Google Sheets here

私はあなたが、カラムA、またはそれらの線に沿って何かで最後の非空の行を見つけるために、式を使用できると仮定し、これはあなたのデータを構造化する適切な方法よりもハックの詳細です。テーブルは実際にあなたが示したような階層的な方法で使用するようには設計されていません。しかし、彼らは私が提案したようなテクニックを使って階層的なデータを簡単に表現することができます。

+1

ありがとう、私はそれを見落としたとは思わない。私のデータには既にそのようなカテゴリーがあります。どうもありがとう! –

+0

ようこそ。 :D – shim

+0

あなたが回答に満足している場合は、それを合格とマークすることを忘れないでください。 – shim