1

以下の式を使用して合計を計算しています。この式は、列「支払い済み」の下の同じ行に「はい」という文字列が書かれている値の合計のみを計算します。また、特定の背景色のセルを特定の範囲で検索し、指定した背景色のセルのみを含む範囲を返す独自の 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
4

0 に答える 0