- ベストアンサー
COUNTIFの使い方
現在、COUNTIF関数を使ってC列に数字が入ったときにB列に1,2,3・・・と項番を表示するようにしています(関数(1))。 関数(1) B4=IF($C4<=0,"",COUNTIF($C$4:$C4,">0")) この関数を応用して、C列に数字は入っていて、さらにN列またはO列に数字がが入ったときにB列に1,2,3・・・と項番を表示するようにしたいのですがうまくいきません(関数(2))。 関数(2) B4=IF(OR($N4<>"",$O4<>""),IF($C4<=0,"",COUNTIF($C$4:$C4,">0")),"") 恐らく、COUNTIF関数のところがおかしいとは思うのですが、よくわかりません。 どなたかご教授下さい。よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#2です。補足に提示された数式からC列に「0」と「#N/A」を表示させたくないんだな~と読み取りましたので、IF関数をもう一つネストさせた数式を提示します。C4セル以下に =IF(ISERROR(VLOOKUP(G4,Sheet2!$H$5:$I$200,2,FALSE)),"",IF(VLOOKUP(G4,Sheet2!$H$5:$I$200,2,FALSE)=0,"",VLOOKUP(G4,Sheet2!$H$5:$I$200,2,FALSE))) B4セル =IF(AND(C4<>"",OR(N4<>"",O4<>"")),1,"") #1さんの数式 B5セル以下 =IF(AND(C5<>"",OR(N5<>"",O5<>"")),COUNT($B$4:$B4)+1,"") #2で提示した数式 G、H、I列に空白セルが存在しなければ、ISERROR関数だけで、IF関数のネストは不要になるかも。。。
その他の回答 (6)
- izmlz
- ベストアンサー率55% (67/120)
=IF(COUNT(C4)*COUNT(N4:O4),SUMPRODUCT(ISNUMBER($C$4:C4)*((ISNUMBER($O$4:O4)+ISNUMBER($N$4:N4))>0)),"") ↑でどうでしょうか?
お礼
お礼が遅くなりました。 結局自分でいろいろやったところ、 A列は =IF(AND($C4>0,$C4<>""),COUNTIF($C$4:$C4,">0"),"") B列は =IF(AND($C4>0,$C4<>"",OR($N4<>"",$O4<>"")),COUNTIF($B$3:$B3,">0")+1,"") としました。 皆様のご教授のおかげで目的を達成することができました。 ありがとうございました。
- n4330
- ベストアンサー率24% (215/872)
大体やりたい事が判りました。 =IF(AND(C4>0,OR(N4<>"",O4<>"")),SUMPRODUCT(ISNUMBER($C4:C4)*((ISNUMBER($O4:O4)+ISNUMBER($N4:N4))>0)),"") これで何とかなりませんか?
お礼
お礼が遅くなりました。 結局自分でいろいろやったところ、 A列は =IF(AND($C4>0,$C4<>""),COUNTIF($C$4:$C4,">0"),"") B列は =IF(AND($C4>0,$C4<>"",OR($N4<>"",$O4<>"")),COUNTIF($B$3:$B3,">0")+1,"") としました。 皆様のご教授のおかげで目的を達成することができました。 ありがとうございました。
- izmlz
- ベストアンサー率55% (67/120)
No.3です。 Q1. セルC4には、どういう結果が表示されているのでしょうか?数値でしょうか? Q2. セルB4には、どういう結果が表示されているのでしょうか?エラーメッセージであれば、どういうエラーメッセージでしょうか?
- izmlz
- ベストアンサー率55% (67/120)
関数(2)は↓でいかがでしょう? =IF(C4="","",SUMPRODUCT(ISNUMBER($C$4:C4)*((ISNUMBER($O$4:O4)+ISNUMBER($N$4:N4))>0))) それから、関数(1)は↓にすべきではないかと思います。 =IF(C4="","",COUNT($C$4:C4))
- 参考URL:
- 関数(2)は↓でいかがでしょう?
補足
ご教授ありがとうございます。 しかし、どうもうまくいきません。 実は参照しているC4セルには下記関数(3)が入っています。 関数(3) C4=IF(ISERROR(VLOOKUP(G4,sheet2!$H$5:$I$200,2,FALSE)=""),"",VLOOKUP(G4,sheet2!$H$5:$I$200,2,FALSE)) ISERROR関数を使っているからなのでしょうか?B列にちゃんと項番をつけてくれません。
- vista2446
- ベストアンサー率46% (131/279)
B5セル以下に =IF(AND(C5<>"",OR(N5<>"",O5<>"")),COUNT($B$4:$B4)+1,"") C列じゃなくてB列の個数を返せばよろしいかと。。。
補足
ご教授ありがとうございます。 確かに教えていただいた関数を新規ファイルでやってみると「1」,「2」,「3」というように目的の項番をつけてくれました。 しかし、実際のファイルでやるとどうもうまくいきません。 実は参照しているC4セルには下記関数(3)が入っています。 関数(3) C4=IF(ISERROR(VLOOKUP(G4,sheet2!$H$5:$I$200,2,FALSE)=""),"",VLOOKUP(G4,sheet2!$H$5:$I$200,2,FALSE)) ISERROR関数を使っているからなのでしょうか?B列にちゃんと項番をつけてくれません。
- n4330
- ベストアンサー率24% (215/872)
=IF(AND(C4<>"",OR(N4<>"",O4<>"")),COUNTIF(C4:C4,">0"),"") 説明 AND(C4<>"",OR(N4<>"",O4<>"") (C4に何か入ってる)さらに(N4かO4のどちらか、又は両方に何か入ってる) これで希望の結果が得られると思いますが・・・・ 一点不思議に思うのはCOUNTIF(C4:C4,">0")の文・・・ C4の中に数値があれば「1」が表示されます、ならばcountifを使わなくても「1」とすれば良いと思うのですが・・・・ =IF(AND(C4<>"",OR(N4<>"",O4<>"")),1,"") これでも同じ結果になりますヨ
補足
早速の回答ありがとうございます。 ご教授頂いた関数を試してみました。 この関数でやると必要な場所に「1」は表示されるのですが、 B列には「1」,「2」,「3」・・・と"1"ずつ増えていってほしいのです。 説明が足りずに申し訳ありませんでしたが、 B5=IF(AND(C5<>"",OR(N5<>"",O5<>"")),COUNTIF($C$4:C5,">0"),"") としています。 これだと、"1"ずつ増えていくのですが、例えばC4~C6に数字が入っていてC5だけN5に数字が入っていない場合だと、 B4=1、B5=""、B6=3と数字が飛んでしまいます。 これをB4=1、B5=""、B6=2と表示させたいのです。 いろいろ言って申し訳ありませんが、お知りでしたらご教授下さい。
お礼
お礼が遅くなりました。 結局自分でいろいろやったところ、 A列は =IF(AND($C4>0,$C4<>""),COUNTIF($C$4:$C4,">0"),"") B列は =IF(AND($C4>0,$C4<>"",OR($N4<>"",$O4<>"")),COUNTIF($B$3:$B3,">0")+1,"") としました。 皆様のご教授のおかげで目的を達成することができました。 ありがとうございました。