2017-02-08 9 views
2

questionsこれは尋ねられましたが、厳密にはそうではありません。非常に近いoneがありますが、その解決策は私のために働いていません。Excel SUMIFS複数の基準セルの値

私はカンマ区切りの値をセルに返す関数を持っています。私はこのセルの要素をSUMIFS関数に条件として渡したいと思います。これはoneのようなアプローチです。

私の試みは、以下描かれて:私はこれは何とか機能が細胞G8にあるものを理解していることを道に結びついていることを信じて

enter image description here

。それはいくつかの余分な引用符を追加しているようです。私は、数式バーを押しF9でG8を強調表示した場合は、私が手:

enter image description here

各基準のそれぞれの側に余分な引用符があります。

私はカスタムVBA関数のソリューションを公開していますが、私はワークシート関数として構築できるものを好むでしょう。条件は、リストボックスから要素を取り出すカスタムVBA関数から返され、余分なカンマを削除するための正規表現の作業を行います。選択できる要素の数は可変であるため、基準を複数のセルに分割する必要はありません。ありがとう。

+1

'{" Dog "、" Cat "}'文字列は_string_であり、配列ではありません。文字列を渡すことは、たとえ配列に似ていても配列ではない文字列なので、動作しません。コンマ区切りのリストをセルに返すVBA関数があるとします。配列を返すように変更して、 'SUMIFS'式で呼び出してください(リストをセルに戻すことを回避する) –

+0

Thanks @chrisneilsen。私が使用している関数は、答えの例2のものとよく似ています[ここ](http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft -excel-both-in-cell-and-loops)である。コレクションを返すために私は[ここ](http://stackoverflow.com/questions/1815980/excel-vba-function-returning-an-array)の例に従おうとしましたが、 '引数はオプションではありません'というエラーが表示されています私の出力に。どのように私の関数が必要に応じて配列を返すことを確認するための任意の考えですか? –

+0

あなたがコードを投稿し、私が助けることができる機能の説明を –

答えて

1

生コンマ区切りの条件がG6であると思われます。この条件を配列に分割してSUMIFSに送るだけでいいです。分割はVBAで利用できますが、Excelには公開されません。私たちが必要なのは、CSVの分割を行い少しUDFを書いて、私たちの式でそれを使用することです:

Function splitCSV(str As String) 
    splitCSV = Split(str, ",") 
End Function 

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

=SUM(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6))) 

EDIT

上記は配列式(Ctrl + Shift + Enter)です。これを通常の式にするにはSUMの代わりにSUMPRODUCTを使用できます。これにより、柔軟性が増し(通常の数式と配列の式)、「期待される」パフォーマンスが向上します。

=SUMPRODUCT(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6))) 
+1

@chris neilsonへのコメントの後にちょっと考えていたのですが、ちょっと、ちょっとだけ、セルを分割するVBA関数文字列を配列に変換する!? "あなたは私の心を読む。ありがとうございました!これはすばらしいことです。 –

+0

@NickCriswellそれは素晴らしいです。それが助けて嬉しい:) –

+1

ところで、この答えは私にモデレータのツールを与え、ありがとう! –

関連する問題