オリジナルを探していますか? 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
値が使用されます。それ以外の場合はゼロです。この式は、寸法の違いにより寛容であるように見えますが、まだ注意が必要です。