• 締切済み

EXCEL ブック全体で条件計算方法

説明下手なので具体的に質問します。 sheetA sheetB sheetC ・・・ sheetHと 様式は同じで、入力されている文字が違うbookがあります。 あるセル(R3C6)に各sheet毎に○か×が書いてあります。 少なくとも一つでも○があった場合は○、 一つも○がなかった場合は×を sheetZにまとめて判定結果を出す場合 sheetZにはどのような関数を書けば良いのでしょうか? イメージ的にはこんな感じなんですが・・・ sheetZ(R3C6) =IF(sheetA:sheetH!R3C6="○", "○", "×") これだとすべてのsheetで○じゃないといけない?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#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

MORICK
質問者

補足

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

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 COUNTIF と配列の組み合わせが使えるのではないでしょうか? =IF(SUMPRODUCT(COUNTIF(INDIRECT("Sheet"&CHAR(ROW(R65:R72))&"!R3C6",0),"○"))>0,"○","×") SheetHまでなら、CHAR(ROW(R65:R72) の部分は、R72 です。

MORICK
質問者

お礼

ありがとうございます。 Sheetに名前(地名)が付いてしまっていて・・・ 結構難しい式で・・・ (INDIRECT('東京:大阪'!"R3C6",0), に変えてもできないです・・・(汗 ROWとかCHARがあるのを初めて知りました。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

元の"○", "×"のセルに○なら1,×なら0を入力して(置換で置き換えても可) 表示形式をユーザー定義で [=1]"○";"×" とします。 これなら =IF(SUM(sheetA:sheetH!R3C6), "○", "×") でお望みのようになります。 上記以外 =IF(ISNUMBER(FIND("○",SheetA!R3C6&SheetB!R3C6&...&SheetH!R3C6)),"○","×") のような方法もあります。

MORICK
質問者

お礼

ありがとうございます! これでいってみます

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.1

コツコツと…? SheetZ(R3C6) =IF(OR(SheetA!RC="○",SheetB!RC="○",…,SheetH!RC="○"),"○","×")

MORICK
質問者

お礼

ありがとうございます。 やっぱりコツコツとやるしかないんですかね・・・orz

すると、全ての回答が全文表示されます。

関連するQ&A