0

私はExcelで次の機能を持っています:

=SUMIF($H$2:$H$500;CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);$C$2:$C$500)

この例では、列 N 行 2 にあります。この関数を列にプルダウンするマクロがあります。

この関数では、セル H2 から H500 までのすべてを考慮します。

$H$2:$H$500

C2~C500

$C$2:$C$500

C500 & H500 = LastRow、この数値を手動で入力しましたが、エントリの量がこの数値を超えるとカウントされず、結果が正しくありません。

数値 1 を含むセル R2 があり、別のファイルから見つけた LastRow に従って変化します。これは自動的に更新されます。

入力した静的な数値である 500 という数値を、セル R2 の数値 (値) に従って変化させたいと考えています。より柔軟にするため。

セル R2 の値が 1 から 300 に変更された場合、この例の数値 500 は、セル R2 からこの 300 に変更する必要があります。この関数を変更すると、セル R2 の数値が 500 ではなく 1 であるため、500 ではなく 1 になることがわかります。

次のようになります。

=SUMIF($H$2:$H$**R2**;CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);$C$2:$C$**R2**)

関数で $500 を選択したときにセル R2 を選択しようとしましたが、代わりに H2 と R2 の間の範囲が選択として表示されますが、これは私が望むものではありません。

R2 の値によって定義される行数の多かれ少なかれ、H 列のみを静止させたいと思います。

誰かがこれに対する解決策を持っていることを願っています。

よろしくお願いします。

4

2 に答える 2

1

この場合、INDIRECT() を使用してアドレスを作成できます。

=SUMIF(INDIRECT("$H$2:$H$" & TEXT($R$2, "#####"));CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);INDIRECT("$H$2:$H$" & TEXT($R$2, "#####"))
于 2012-08-02T10:29:01.283 に答える
0

OFFSET関数を使用して、必要なものを提供できます。OFFSET選択したパラメータに基づいて範囲を返します。この場合OFFSET、 cell に基づいて返される行数を指定できますR2

ここに Microsoftの良い例があるので、ここでは繰り返しません。

式は次のようになります。

=SUMIF(OFFSET(Sheet1!$H$2;0;0;Sheet1!$R$2-1;1);CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);OFFSET(Sheet1!$C$2;0;0;Sheet1!$R$2-1;1))

行の開始を H2 と C2 にそれぞれハードコーディングしていることに注意してください。したがって、これらが移動する場合は、調整 (つまり、-1の部分Sheet1!$R$2-1) がケースに適していることを確認する必要があります。

于 2012-08-02T10:27:31.977 に答える