以下の式を使用して合計を計算しています。この式は、列「支払い済み」の下の同じ行に「はい」という文字列が書かれている値の合計のみを計算します。また、特定の背景色のセルを特定の範囲で検索し、指定した背景色のセルのみを含む範囲を返す独自の UDF も作成しました。
=SUMIF(SelectRangeByColour(O5;M5:M35);"Yes";SelectRangeByColour(O5;I5:I35))
(セミコロンについて混乱している場合は、私のコンピューターの言語がスウェーデン語であるため、これが Excel で使用される標準のリスト区切り記号です。コンマに変更しようとしましたが、それは役に立ちませんでした)
問題は、この特定のケースでは、最初の「SelectRangeByColour」関数が$M$5:$M$7;$M$15のような範囲を返し、2 番目の関数がこの範囲を返すことです: $I$5:$I$7 ;$I$15 . ただし、セミコロンは範囲内の値を区切るためだけでなく、関数SUMIFのさまざまな引数を区切るためにも使用されるため、関数はあまりにも多くの引数を受け取り、#VALUE !を出力します。エラー。
これは、SUMIF関数が最終的に解析しようとするものです。
=SUMIF($M$5:$M$7;$M$15;"Yes";$I$5:$I$7;$I$15)
したがって、$M$5:$M$7をメイン領域、$M$15を条件、$I$5:$I$7をオプションの合計領域、最後に$I$15を存在しない追加の引数と見なします。 .
ただし、SUMIF関数で$M$5:$M$7;$M$15をメイン領域として、「はい」を条件として、最後に$I$5:$I$7;$I$15を合計領域として解析する必要があります。どうすればこれを達成できますか?
以下は、UDF「SelectRangeByColour」のコードです。何らかの形で役立つ場合があります。
Function SelectRangeByColour(colourFilter As Range, rangeToSearch As Range) As Range
' Get the colour to filter by
colour = colourFilter.Interior.Color
' Initialize the finalRange to return from the function
Dim finalRange As Range
For Each cell In rangeToSearch
If cell.Interior.Color = colour Then
' If the finalRange is not empty, then add the current cell to it
If Not finalRange Is Nothing Then
Set finalRange = Union(finalRange, cell)
Else
' If final range is empty, set it equal to the current cell
Set finalRange = cell
End If
End If
Next
' In case nothing matches the given colour, set the range to the colour
' as not to display a #VALUE! error
If finalRange Is Nothing Then
Set finalRange = colourFilter
End If
Set SelectRangeByColour = finalRange
End Function