/ / Excel 2003のSUMIFSソースコードおよび列で計算する機能-Excel、Excel-VBA、VBA

SUMIFSのソースコードはExcel 2003のためのもので、列を計算する機能は - excel、excel-vba、vba

オリジナルを探していますか? excelシートで使用するSUMIFSのソースコード(2003年と2007年の両方。ここに理由があります。

  • 2003はSUMIFSメソッドをサポートしていません
  • SUMIFSがある場合、列の周りの式(YEAR()など)を利用できません。

たとえば、答えを計算したいセルA1の日付のYEAR値と範囲L:Lの日付値を一致させます。 YEAR(L:L)を使用できないため、これは機能しません。したがって、L:LのYEAR値で別の列M:Mを作成する必要があります。

したがって、コードをさらにアップグレードできるソースが必要です

= SUMIFS(ANSWERS; L:L; "="&YEAR(A1))<=これは動作します

= SUMIFS(ANSWERS; YEAR(L:L); "="&YEAR(A1))<=これはしません

どうもありがとう

これらの質問を参照して: Excel 2003でのSUMIFSの置き換え SUMIFSのVBAコード?

回答:

回答№1は2

元のコード、つまりC ++とExcel内部の一部を見つけることはできないと思います。それが正しければ、Microsoftから提供されたとしても、それはあまり役に立ちません。

一般的に、私は使用することをお勧めします =SUMIF(), =SUMIFS() および定義する文字列を取るその他の関数テストの条件:他のこととは別に、「値が遅くなるのではないかと心配している」少なくともXL2007(現在入手可能なものすべて)では、これは必ずしも真実ではないことがわかりました(以下のコメントを参照)。

一般的に、配列関数の方がずっと幸せです。たとえば、これはExcel 2003と2007の両方で動作するはずです。

=SUMPRODUCT(--(YEAR(L:L)=YEAR(A1)),ANSWERS)

これは同じ答えを得ます:

{=SUM(IF(YEAR(L:L)=YEAR(A1),ANSWERS,0))}

後者の場合、中括弧なしで式を入力します({ そして、 })Control + Shift + Enterを使用して確認し、Excelに配列式であることを伝えます。

最初の例では、ブール値の結果のリストを作成します YEAR(L:L)=YEAR(A1) double-negativeを使用して1と0の配列に変換します。それから SUMPRODUCT 残りの世話をします。このバージョンには以下が必要です ANSWERS と同じ次元を持っています L:L、つまり、列全体(または L サイズに制約があります)。

2番目では、Excelは各エントリを実行します L:L。その年がA1の年と一致する場合、対応する ANSWERS 値が使用されます。それ以外の場合はゼロです。この式は、寸法の違いにより寛容であるように見えますが、まだ注意が必要です。