#3のWendy02です。
>Sheetに名前(地名)が付いてしまっていて
それは、#3の式じゃむりです。皆さんの式と、中身自体は変っていませんから、ひとつずつ、シートを読んでいるだけです。Char() というのは、あくまでも、A~Hという意味シート名を作り出すことです。
そこで、お使いになるか分りませんが、ユーザー定義関数を作ってみました。
=MyCountIf("シート名の初め:シート名の終わり!セル番地","○")
=IF(MyCountIf("sheetA:sheetH!R3C6","○") , "○", "×")
と、「" "」シート名を含めた範囲を、クォーテーションマークで括ります。
コードの取り付け方
Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、
貼り付けた後は、Alt + Q で、画面を閉じます。
後は、一般式と同じです。ただし、アドインにしてあげない限りは、そのブック内しか使用できません。
'<標準モジュール設定>
Function MyCountIf(範囲 As Variant, 検索値 As String) As Variant
'MyCountIf(シート範囲,セル,検索値)
Dim s_Range As String
Dim m_Range As String
Dim m_Find As String
Dim firstSh As String
Dim lastSh As String
Dim n1 As Integer
Dim n2 As Integer
Dim i1 As Integer
Dim i2 As Integer
Dim buf As Integer
Dim j As Integer
Dim k As Long
m_Find = 検索値
If TypeName(範囲) = "Range" Then
MyCountIf = WorksheetFunction.CountIf(範囲, m_Find): Exit Function
End If
If TypeName(範囲) = "String" Then
s_Range = 範囲
'区切り文字検索
n1 = InStr(s_Range, ":")
n2 = InStr(s_Range, "!")
Else
MyCountIf = CVErr(xlErrNA)
End If
If n1 > n2 Then
MyCountIf = WorksheetFunction.CountIf(Range(範囲), m_Find): Exit Function
End If
If n1 > 0 Then firstSh = Mid$(s_Range, 1, n1 - 1)
If n2 > 0 Then lastSh = Mid$(s_Range, n1 + 1, n2 - n1 - 1)
m_Range = Mid$(s_Range, n2 + 1)
i1 = ActiveWorkbook.Worksheets(firstSh).Index
i2 = ActiveWorkbook.Worksheets(lastSh).Index
If i1 > i2 Then buf = i1: i1 = i2: i2 = buf
For j = i1 To i2
k = k + WorksheetFunction.CountIf(Worksheets(j).Range(m_Range), m_Find)
Next j
MyCountIf = k
End Function
補足
Wendy02さん 親切な回答ありがとうございます。 あれから少しVBAの使用方法なり勉強したのですがわからなく、 どこに、何を標記いいのか?範囲、シートに何を書いて良いのか良くわかりませんでした。 具体的に書いてみました。 【シート 東京】 ーーーーーーーーーーーーーーーーーーー … H I J K L M N O 1 ↓ 文字列があったり空欄であったりする 6 ーーーーーーーーーーーーーーーーーーー 7 ○ ○ ○ ○ × × × × 8 ○ ○ ○ ○ ○ ○ × × 9 ○ ○ ○ ○ ○ ○ × × 10 空欄(種類分けの都合上) 11 空欄(種類分けの都合上) 12 ○ ○ ○ ○ ○ ○ ○ ○ … 501まで同様に空欄であったり○×が標記 ーーーーーーーーーーーーーーーーーーー 次のシートも同様に 【シート名 神奈川】 ーーーーーーーーーーーーーーーーーーー … H I J K L M N O 1 ↓ 数値、文字列、空欄であったりする 6 ーーーーーーーーーーーーーーーーーーー 7 × × × × ○ ○ ○ × 8 × × × × × × ○ ○ 9 × × × × × × ○ ○ 10 空欄(種類分けの都合上) 11 空欄(種類分けの都合上) 12 × × × × ○ ○ ○ ○ ↓ 501まで同様に空欄であったり○×が標記 ーーーーーーーーーーーーーーーーーーー といろいろな地名シートがあり、最後にいつでもシートが追加できるように 【シート ひな形】 ーーーーーーーーーーーーーーーーーーー … H I J K L M N O 1 ↓ 数値、文字列、空欄であったりする 6 ーーーーーーーーーーーーーーーーーーー 7 8 9 10 すべて空欄 11 12 ↓ 501 ーーーーーーーーーーーーーーーーーーー があります。 一番先頭のシートが全国を取りまとめるシートになっています 少なくとも一つでも○があったところは○をそれ以外は×と言うことです。 例えばシートが上記の東京と神奈川しかなかった場合、結果は以下のように表示される 【シート 全国合計】 ーーーーーーーーーーーーーーーーーーー … H I J K L M N O 1 ↓ 文字列があったり空欄であったりする 6 ーーーーーーーーーーーーーーーーーーー 7 ○ ○ ○ ○ ○ ○ ○ × 8 ○ ○ ○ ○ ○ ○ ○ ○ 9 ○ ○ ○ ○ ○ ○ ○ ○ 10 空欄(種類分けの都合上) 11 空欄(種類分けの都合上) 12 ○ ○ ○ ○ ○ ○ ○ ○ … 501まで同様に空欄であったり○×が標記 ーーーーーーーーーーーーーーーーーーー 長々とすいません。 もしお暇な人がいらしたら、教えてくださいm(_ _)m