2016-12-09 8 views
1

見出しタイプ1、サブ見出しタイプ2、サブサブ見出しタイプ3のリストを作成します。昇順で見出しが増えます。例えばここでExcelの見出し、サブ見出し、サブ見出しのリストを作成

Outcome 1 
Output 1.1 
Activity 1.1.1 
Activity 1.1.2 
Output 1.2 
Activity 1.2.1 
Activity 1.2.2 
Activity 1.2.3 
Outcome 2 
Output 2.1 
Activity 2.1.1 
etc 

は私の式である - 複雑なIFのネストされた文であることを得る: 'アウトカム'、 '出力'、 'Activity' のいずれかのリストから選択し、列1の

IF([@Column1]="","", 
IF([@Column1]="Outcome", "Outcome " & COUNTIF(tbOOA[[#Headers],[Column1]]:[@Column1], [@Column1]), 
IF([@Column1]="Output","Output "& COUNTIF(tbOOA[[#Headers],[Column1]]:[@Column1],"Outcome") ***&"."&*** COUNTIF(tbOOA[[#Headers],[Column1]]:[@Column1],[@Column1]), 
"Activity " & "serious help"))) 

第2列では、適切な数値を計算します。出力1.2

行が空の場合は何も表示されません。 - Fine

If it is "Outcome", count from the header until current row for the number of instances of "Outcome". - Fine  
Else if it is "Output", count the number of "Outcome"s there are. - Fine  
This is where it falls apart. Trying to calculate the number after the "." (bold and italic) 

「出力」のインスタンス数はカウントする必要がありますが、新しい「結果」があるたびに1にリセットする必要があります。

私は従うことをしようとしているロジックは次のとおりです。

(# of "Outputs" from the table header until the current row) minus 
(# of "Outputs" from the table header until the last instance of "Outcome") 

私は、行数を計算する時にいくつかの試みを試みたが、すべてが問題となっていました。

ロジックはアクティビティと同じですが、論理式はさらに複雑になりますが、レベル2をソートするまではこれを始めるのは気にしません。

誰も同じような問題や解決策を知っていますか?

答えて

1

隠しヘルパー列を使用している場合は、数式を管理しやすくなります。列Aを使用して、「結果」、「出力」、および「活動」データを保持します。

Outcomeの数値を扱うカラムB、Outputの数値を扱うカラムC、Activityの数値を扱うカラムDを使用します。 B1C1の列

E.で一緒に最終結果をマージし、D1、手動で最初の値(10、及び0)に書き込みます。

すると、次のようにB2から始まるフィルダウン:

=IF(A2="Outcome",B1+1,B1) 

これはあなたがあなたの次の結果を発見した場合にのみ、インクリメントすることによって動作します。

以下でC2からダウンフィル:

=IF(A2="Outcome",0,IF(A2="Output",C1+1,C1)) 

をこれはあなたの次の出力を発見した場合にのみ、インクリメントすることによって動作します。新しい結果があれば0にリセットされます。

はその後

=IF(OR(A3="Outcome",A3="Output"),0,IF(A3="Activity",D2+1,D2)) 

D2からフィルダウンこれは、前の式と非常に似ていますが、転帰または出力にリセットされます。

最後に、D4に、文字列CONCATENATE操作である

=B1&IF(C1>0,"."&C1&IF(D1>0,"."&D1,""),"") 

&と一緒にすべてをマージ。内側の値が0であるかどうかをチェックすることによって、.と、次の番号がゼロでない場合は次の番号のみを連結します。

+0

ありがとう、Choirbean。私はちょうど解決策を見つけたので、この疑問を投稿したことを忘れてしまった。私の解決策は、1つの大きな醜い数式にあります - http://stackoverflow.com/questions/43863296/dynamic-multi-level-numbered-list-using-excel-formula –

+0

私もあなたの提案を試して、それもうまくいきます「アウトカム」、「アウトプット」、「アクティビティ」も若干変更されています。私はテーブルでそれを使用する必要があるので、テーブルの見出しは異なる必要があり、最初の結果が選択された後にリセットされるので、0、-1および-2を使用して数字でなければなりません。 IF [@ [ - 1]]> 0、 "。"& IF "([@ [選択レベル]] =" " [@ [ - 1]]&IF([@ - 2]]> 0、 "。"&[@ [ - 2]]、 ")、" ") –

+0

ああ、うわー - 単一レベルの式は本当に、大きくて醜い!私は正しいと思った数式をデバッグしなければならない1つのひどい経験のために、ヘルパー列を使って物事を単純にする傾向があり、4画面幅でした。それはとても不必要に痛いものでした!それ以来、私はヘルパーコラムについてかなり宗教的になってきました。私の列が互いに隣り合っている必要があるときは、補助柱を側に押します。 –

関連する問題