>で、これを別の部分に入れ込んだ所、思った通りの結果(表示が0のまま)になりませんでした。下記が入れ込んだ式です。
との事ですが、
=SUMPRODUCT((INDIRECT("アラーム履歴一覧!"&"B3:B"&COUNTA(アラーム履歴一覧!$B:$B)+1)=$B5)*(LEFT(INDIRECT("アラーム履歴一覧!"&"E3:E"&COUNTA(アラーム履歴一覧!$E:$E)+1),LEN($I$1))=$I$1))
という関数の中には、回答No.1様の御回答の肝である
アラーム履歴一覧!$D$2:$D$100=IF(Sheet2!C$4="",アラーム履歴一覧!$D$2:$D$100,Shee2!C$4)
という部分が全く反映されておりませんから、「これを別の部分に入れ込んだ」事にはなっておりません。
もしかしますと、最初の御質問の関数である
=SUMPRODUCT((アラーム履歴一覧!$B$2:$B$100=Sheet2!$B5)*(アラーム履歴一覧!$C$2:$C$100=Sheet2!C$3)*(アラーム履歴一覧!$D$2:$D$100=Sheet2!C$4)*(アラーム履歴一覧!$E$2:$E$100=Sheet2!$D$1))
という関数の中における
アラーム履歴一覧!$E$2:$E$100=Sheet2!$D$1
という条件を、Sheet2!$D$1の代わりに$I$1(Sheet2のI1セルではなく、その関数が入力されているシートのI1セル)を使用して、アラーム履歴一覧シートのE列に入力されている文字列の中で、$I$2セルと同じ文字列から始まっているもの、という条件に変更したいという事なのでしょうか?
又、それと同時に、Sheet2!$B5やSheet2!C$3、Sheet2!C$4という箇所に関しても、参照先のセルを、Sheet2のセルではなく、その関数が入力されているシートのセルに変更したいという事なのでしょうか?
それでしたら、次の様な関数となります。
=SUMPRODUCT((アラーム履歴一覧!$B$2:INDEX(アラーム履歴一覧!$B:$B,MAX(IF(COUNTIF(アラーム履歴一覧!$B:$B,"*?"),MATCH(CHAR(1),アラーム履歴一覧!$B:$B,-1),ROW(アラーム履歴一覧!$B$2)),IF(COUNT(アラーム履歴一覧!$B:$B),MATCH(9E+307,アラーム履歴一覧!$B:$B),ROW(アラーム履歴一覧!$B$2))))=$B5)*(アラーム履歴一覧!$C$2:INDEX(アラーム履歴一覧!$C:$C,MAX(IF(COUNTIF(アラーム履歴一覧!$B:$B,"*?"),MATCH(CHAR(1),アラーム履歴一覧!$B:$B,-1),ROW(アラーム履歴一覧!$B$2)),IF(COUNT(アラーム履歴一覧!$B:$B),MATCH(9E+307,アラーム履歴一覧!$B:$B),ROW(アラーム履歴一覧!$B$2))))=C$3)*((アラーム履歴一覧!$D$2:INDEX(アラーム履歴一覧!$D:$D,MAX(IF(COUNTIF(アラーム履歴一覧!$B:$B,"*?"),MATCH(CHAR(1),アラーム履歴一覧!$B:$B,-1),ROW(アラーム履歴一覧!$B$2)),IF(COUNT(アラーム履歴一覧!$B:$B),MATCH(9E+307,アラーム履歴一覧!$B:$B),ROW(アラーム履歴一覧!$B$2))))=C$4)+(C$4="")>0)*(LEFT(アラーム履歴一覧!$E$2:INDEX(アラーム履歴一覧!$E:$E,MAX(IF(COUNTIF(アラーム履歴一覧!$B:$B,"*?"),MATCH(CHAR(1),アラーム履歴一覧!$B:$B,-1),ROW(アラーム履歴一覧!$B$2)),IF(COUNT(アラーム履歴一覧!$B:$B),MATCH(9E+307,アラーム履歴一覧!$B:$B),ROW(アラーム履歴一覧!$B$2)))),LEN($I$1))=$I$1))
但し、これでは関数の長さがExcel2003に入力可能な長さ超えておりますから、このままではExcel2003で使用する事は出来ないと思います。(Excel2007以降なら入力可能)
そこで、適当なセルを作業用のセルとして使用する事にして、そのセル(ここでは仮にアラーム履歴一覧のG1セルとします)に次の様な関数を、まず入力して下さい。
=MAX(IF(COUNTIF(アラーム履歴一覧!$B:$B,"*?"),MATCH(CHAR(1),アラーム履歴一覧!$B:$B,-1),ROW(アラーム履歴一覧!$B$2)),IF(COUNT(アラーム履歴一覧!$B:$B),MATCH(9E+307,アラーム履歴一覧!$B:$B),ROW(アラーム履歴一覧!$B$2)))
その上で、カウントする関数を次の様なものとして下さい。
=SUMPRODUCT((INDIRECT("アラーム履歴一覧!B2:B"&アラーム履歴一覧!$G$1)=$B5)*(INDIRECT("アラーム履歴一覧!C2:C"&アラーム履歴一覧!$G$1)=C$3)*((INDIRECT("アラーム履歴一覧!D2:D"&アラーム履歴一覧!$G$1)=C$4)+(C$4="")>0)*(LEFT(INDIRECT("アラーム履歴一覧!E2:E"&アラーム履歴一覧!$G$1),LEN($I$1))=$I$1))
お礼
返事が遅くなってすみません。 さっそく貼り付けてみた所、他の条件が無視されて、D列に入力されている個数が表示されました。自分が思ったような事はNo.1さんの式で実現されています。