他のブックの複数シートの〇記号の串刺し
エクセルで次のような表のデータが1ヶ月分、31日分あり ます。すなわち31枚のシートに同じ表で中の○× の内容が違うデータがあります。〇×は単純に「まる」「ばつ」と入力して変換したものです。
ア イ ウ エ オ
(1) 〇 × × 〇 〇
(2) 〇 × 〇 〇 ×
(3) × 〇 〇 〇 ×
(4) 〇 〇 × × 〇
そして〇をゼロ、×を1と数えて、 31枚のシートの〇と×を集計して他のブックの
同じ表に集計の結果を示したい のです。 例えばこんな感じで他のブックのシート
の同一の表に計算結果を表示したいです。
ア イ ウ エ オ
(1) 7 4 5 0 0
(2) 8 5 0 2 2
(3) 1 1 0 1 0
(4) 0 0 4 6 8
31枚のシートの〇と×を数値に 変換し、それを串刺し集計した いのです。
countifは串刺し集計 で使えないので
次のようなユーザ定義関数を教えて戴き、同じブックの32枚目のシートの同じ表に
集計が可能となり誠に教えて戴いた方には感謝する次第では御座いますが、
他のブックの同一の表に集計するには、ユーザ定義関数の記述をどのようにすれば
よろしいでしょうか。宜しくお願い致します。
Public Function CountIfAcross(シート区間先頭セル As Range, シート区間後尾セル As Range, 検索条件 As String)
Dim sRef As String, sRefE As String, c As Range, cnt As Long, i As Long
sRef = シート区間先頭セル.Address(0, 0)
sRefE = シート区間後尾セル.Address(0, 0)
If sRefE <> sRef Then sRef = sRef & ":" & sRefE
For i = シート区間先頭セル.Worksheet.Index To シート区間後尾セル.Worksheet.Index
For Each c In Sheets(i).Range(sRef)
If c.Text Like 検索条件 Then cnt = cnt + 1
Next
Next i
CountIfAcross = cnt
End Function
普通のExcel関数のように、
=CountIfAcross(Sheet1!B2,Sheet31!B2,"×")
=CountIfAcross('#1'!B2,'#31'!B2,"×")
等の様に
シート区間先頭セル、シート区間後尾セル、検索条件
を指定してカウントした数を返します。