Excel: 重み付けされたセルをカウントする

Excel: 重み付けされたセルをカウントする

私は Excel スプレッドシートを持っていて、それが私のタイムテーブルになっています。つまり、いくつかのタスクがあり、ほとんどの場合、セルが接続されています。20 個のセルを接続する場合もあれば、2 個だけの場合もあります。

各セルは 1 時間なので、計量したセル数をカウントしたいと考えました。つまり、セルが 1 つしかない場合は 1 としてカウントし、3 つ接続している場合は 3 としてカウントします。したがって、例の画像では、セル数は S1: 3、S2: 4、S3:2、S4:6 となります。

長い間探していましたが、問題を解決できる関数が見つかりませんでした。私が見つけた最良の関数は ですが=countif(B4:H19, "Subject1")、ここでは 3 つの連結されたセルに基づくセルが 1 つとしてカウントされます。この問題の解決を手伝っていただけますか?

ご回答をよろしくお願いいたします!

答え1

実際、共有していただいたスクリーンショットには結合セルと非結合セルの両方が含まれているため、この問題には数式ではなく VBA マクロが必要です。

ここに画像の説明を入力してください


   Function MergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells = True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        MergedCellCount = n
        
    End Function

    Function unMergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells <> True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        unMergedCellCount = n
        
End Function

使い方:

  • どちらかを押すAlt+F11またはTABを選択してR右クリックしてメニューからiewコード。

  • オピ &これらの VBA マクロを使用します。

  • プレスAlt+Qシートに戻ります。

  • 次に、ワークブックをマクロ有効ファイルとして保存します*.xlsm

  • この数式をセルに入力してK2下方向に塗りつぶします。

    =MergedCellCount(H$2:H$17,J2)+unMergedCellCount(H$2:H$17,J2)

  • 必要に応じてセル参照を調整します。

関連情報