2016-07-30 15 views
0

可変範囲のExcelシートのデータの範囲を参照したいと考えています。今月のデータの意味は80行ですが、来月は100行になる可能性があります。だから、私はちょうど可変範囲の範囲を参照するメソッドが必要でした。その方法を次の式で使用できるように -可変範囲の参照方法

=SUMPRODUCT(Allocation_Updt!$J$2:$J$83*((RIGHT(Allocation_Updt!$F$2:$F$83,6)+0)=$E62))/100 

ここで83はデータシートの最後の行です。次回に変更することができます。それを10000(私のデータの最大限の限界)に設定するとエラーになります。

答えて

1

使用、

match(1e99, Allocation_Updt!$J:$J) 

...列の最後の番号や日付の行番号を検索します。 J83の最後の値では、次の3つのレンジのすべての参照は同じものにしている

Allocation_Updt!$J$2:$J$83 
Allocation_Updt!$J$2:index(Allocation_Updt!J:J, match(1e99, Allocation_Updt!$J:$J)) 
index(Allocation_Updt!J:J, 2)):index(Allocation_Updt!J:J, match(1e99, Allocation_Updt!$J:$J)) 

だからあなたSUMPRODUCT function動的に必要とされる正確に何に限定することができ

=SUMPRODUCT(Allocation_Updt!$J$2:index(Allocation_Updt!$J:$J, match(1e99, Allocation_Updt!$J:$J))*((RIGHT(Allocation_Updt!$F$2:index(Allocation_Updt!$F:$F, match(1e99, Allocation_Updt!$J:$J)),6)+0)=$E62))/100 

なお、最後の行列Jの番号は、列Fと列Jの両方で最後に有効なエントリを取得するために使用されます。

SUMPRODUCTの不名誉な性質を考えると、

=sumifs(Allocation_Updt!$J:$J, Allocation_Updt!$F:$F, "*"&$E62)/100 

これは具体的には「右端の6文字の一致」ではありません。それは「E62で終わる」マッチです。あなた自身のデータに関するいくつかのテストは、これが実行可能な選択肢であるかどうかをすぐに証明します。それはより効率的で、より寛容であり、ペナルティなしで完全な列参照を使用することができます。

+0

実際には、E62の値をRIGHT(...、56)ではなくテキストの数値に変換することがあります。 SUMPRODUCTは、数値に変換できないテキスト上で簡単にチョークしますが、実際にはテキストに変換できない数値はありません。 – Jeeped

+0

upnotesのトンとあなたに好きです。どちらのソリューションもうまく動作します。 –

2

データの範囲を表に変換してみます。自動的に各列に名前が適用されます。これらの列名は列内のデータを参照するために使用でき、そのデータ範囲は今後も動的になります。

+0

申し訳ありませんが、データレイアウトを変更することはできません –

関連する問題