2016-08-15 7 views
0

Excelのテンプレートを作成しようとしていますが、ユーザーが「アカウントプロファイル」タブにデータをコピーすると、その内容を含む最後の行が計算され、この値が式他のシートに。この式は、データとの最後の行を計算します。Excelの範囲で使用する値を計算する

=LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A)) 

これは私が範囲参照として結果を使用しようとするとトラブルが出たとき、正常に動作します:私は私の式が行2から反復処理したい - >行(値

=COUNTIF('Account Data'!$N$2:$N$991,A8) 

「991」)LOOKUP、私は範囲が常に正しくなるようにLOOKUP式の結果で置き換えることを望みます。私は簡単な方法があると確信していますが、私はしばらく試してみましたが、構文が何であるべきかを理解できません。

答えて

1

スコットは、あなただけのコラムを参照して直接COUNTIFを使用しなければならない権利です。しかし、これは不自然な例か何かである場合には、これはあなたがそれをあなたが説明した方法にしてください方法です:

=COUNTIF(INDIRECT("'Account Data'!$N$2:$N$" & LOOKUP(2,1/('Account Data'!A:A<>""), ROW('Account Data'!A:A))), A8) 

を見て重要な部分がINDIRECT("'Account Data'!$N$2:$N$" & LAST_ROW_NUMBER)です。 INDIRECT関数は、文字列をセル参照として解釈する方法です。 "Some text" & VARIABLE_NAMEは、変数からこのようなテキスト文字列を作成する方法です:&記号を使用してそれらを連結します。

+0

ありがとうございます!配列関数の範囲を動的に変更する簡単な方法はありますか?この回避策を使用する必要はありますか? –

+2

FWIW INDIRECTは、それが参照するデータが変更されたかどうかにかかわらず、再計算するたびに再計算されるという揮発性関数です。 INDEX/MATCHなどの非揮発性関数は、基になるデータが変更されたときにのみ再計算されます。これは、1つまたは2つの間接的な数式を気付かない場合、列を入力するとExcelの計算時間が遅くなることを意味します。 @MikeHawk –

+1

@MikeHawk Scottの方法で動的に変更すると何が問題になりましたか?それは速く、安全で、理解できるものです。あなたの直接の質問に答えるだけでしたが、彼はあなたにより良い代替方法を教えました。 – Mikegrann

1

COUNTIFは配列式ではないため、完全な列参照を損なうことなく使用できます。

=COUNTIF('Account Data'!$N:$N,A8) 

しかし、あなたが本当にダイナミックレンジを望むならば、INDEX/MATCHを使用します。

=COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,MATCH(1E+99,'Account Data'!A:A)),A8) 

これは番号を持っている列Aの最後のセルを検索します。列Aにテキストが入力されている場合は、1E+99"ZZZ"に置き換えます。

あなたはその後、LOOKUPを使用したい場合は

=COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A))),A8) 
関連する問題