[[20260601213023]] 『カウントイフ」関数について』(出川) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『カウントイフ」関数について』(出川)

お世話になります。
カウントイフ関数で悩んでます。

	A	B	C	D	E	
1		21	25	31	35	
2		21	25	31	35	
3		21	25	31	35	
4		22	26	32	36	
5		23	27	33	37	
6		23	27	33	37	
7		23	27	33	37	
8						
9	21	3	←関数ですがIF(COUNTIF($B1:$E$7,A9) 			
	22	1	,COUNTIF($B$1:$E$7,A9),"欠番")	を入力して		
	23	3	ます。			
	24	欠番				
	25	3				
	26	1				
	27	3				
	28	欠番				
	29	欠番				
	30	欠番				
	31	3				
	32	1				
	33	3				
	34	欠番				
	35	3				
	36	1				
	37	3				
	38	欠番				
	39	欠番				
	40	欠番				

B1からE7の範囲でA9セルと同じ値が何個あるか、カウントしております。21から40までのリスト内に個数をカウントMもしなければ欠番と記憶さいたいのですが、
COUNTIF関数を続けて入力しなくても、いい関数が有りますでしょうか

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 countifを一回だけにしたい?
 ふつうにやるならlet関数
 :=let( _countif, COUNTIF($B1:$E$7,A9),
     IF(_countif,_countif,"欠番")
     )

 条件が限定的なのでiferror関数でも
 :=IFERROR(1/(1/COUNTIF($B$1:$E$7,A9)),"欠番")

(ちくわ) 2026/06/01(月) 22:49:16


作業列を使ってもよい&見た目だけでよければ
 E8セル  =TOCOL(B1:E7)
 B9セル  =COUNTIF($E$9#,A9)

 B9:B28セルの書式設定「0;;"欠番"」

とするのはどうでしょうか?
(作業列を使わずできそうな気がしますが、ちょっと私には解決方法がわかりませんでした)

(もこな2) 2026/06/01(月) 23:08:48


スピルさせ忘れました(あと、スピルさせるので絶対参照でなくてもよかったです)
 B9セル =COUNTIF(E9#,A9:A28)
                       ^^^^^^^

(もこな2) 2026/06/01(月) 23:13:32


ひとつにまとめる意味はあんまりないですが、あえてまとめるなら
 =LET(seq,SEQUENCE(20, 1, 21),HSTACK(seq,LET(a, COUNTIF(B1:E7, seq), IF(a, a, "欠番"))))

とか

 =LET(
   seq, SEQUENCE(20, 1, 21),
   HSTACK(seq, MAP(seq, LAMBDA(x, LET(a, COUNTIF(B1:E7, x), IF(a, a, "欠番")))))
 )

でしょうか。
条件が固定されているなら前者で十分ですし、可読性やメンテナンス性なら後者ですかね。
(あ) 2026/06/02(火) 00:39:46


 もこな2さんへ:
 > 作業列を使わずできそうな気がしますが
  B9セル  =COUNTIF(B1:E7,A9:A28)
  B9:B28セルの書式設定「0;;"欠番"」
 ではどうでしょうか。 
(xyz) 2026/06/02(火) 01:11:44

 質問者さんへ:
 既に回答ありましたが、書式設定を使わないなら
 =LET(a,COUNTIF(B1:E7,A9:A28),IF(a,a,"欠番"))
 でしょうか。
 B9セルに上記の式を入れると、スピルされます。
(xyz) 2026/06/02(火) 01:15:16

COUNTIF関数は複数の行・列でもOKでしたか・・・
ちょっと思い込みしてました。
TOCOL関数のくだりはご放念ください。

オマケでお遊びとして、考えてみました。
出現数が少なければアリかもしれません。

 B9セル   =INDEX({"欠番",1,2,3,4},COUNTIF(B1:E7,A9:A28)+1)

(もこな2) 2026/06/02(火) 21:01:34


ちくわ様、、もこな2様、あ様、XYZ様
皆様有難うございました、

LET関数勉強になりました。
今回範囲及び限定的値故に、
IFERRORで処理しようと思います。
=IF(論理式、COUNTIF($B$1:$E$7,A9),"欠番")の
論理式がなかなか思いつかなくて、
COUNTIFを続けて強引な関数?でした。
論理式に$B$1:$E$7=A9いれると、スピルしまくるしでした。

ありがとうございました

出川

(出川) 2026/06/03(水) 12:50:41


 >論理式に $B$1:$E$7=A9  いれると、スピルしまくるし
      OR($B$1:$E$7=A9) とすればよかったかもです。

(半平太) 2026/06/03(水) 13:08:04


 iferrorの式を書いてるの私だけなので追記しますが、
 0除算するからエラーになるので例外的に使えるだけですので
 論理式が思いつかないような段階だとifでちゃんと書いた方がいいです
 後でなにをやってるのかわからなくなります。(,の数が減るのでよく使いはしますが・・・)
(ちくわ) 2026/06/03(水) 13:49:02

 いまさらですが別解
 =SUBSTITUTE(FREQUENCY(B1:E7,A9:A28),0,"欠番")
(´・ω・`) 2026/06/03(水) 14:56:54

半平太様、ちくわ様、´・ω・`様

引続きのフォローありがとうございました。

半平太様、OR($B$1:$E$7=A9で、範囲内と選択セル合致が]OR関数で出来るとは
思いもつきませんでした。助かりました。

ちくわ様
引続きのフォローありがとうございました。
アドバイスありがとうございます。
今回IFとOR関数で行きます。

´・ω・`様
新しい関数にて勉強になります。
ご教授の関数入れてみたのですが
スピルにて、A29までスピルしてしまいます。
(1つ多くスピルしてしまします。)
宜しければご指導願います。

出川

(出川) 2026/06/04(木) 18:37:43


>1つ多くスピルしてしまします。
FREQUENCY関数を知らなかったのでChatGPTで調べてみたら「最後に「最大区間を超える件数」が自動で追加されるのが特徴です。」と教えてくれました。

なので、置換するアイデアはそのままで、COUNTIF関数にすればいいんじゃないでしょうか?

 =SUBSTITUTE(COUNTIF(B1:E7,A9:A28),0,"欠番")

(もこな2) 2026/06/04(木) 19:26:46


 SUBSTITUTEを使うアイデアは個数が「10とか20とかにならない」
 と言う条件が必要なんですが、大丈夫ですか?

 あと、数値が数字(文字型)に変わりますが、大丈夫ですか?
  文字型でもいいなら、TEXT関数でもいけます。

(半平太) 2026/06/04(木) 20:28:06


もこな2様、半平太様

再度ご指導ありがとうございました。
SUBSTITUTE関数でのスピルですが、COUNTIFで行けました。

半平太様の言われるように、数値が文字列になってしましました。
数値での処理を要しますので、今回はOR関数で行きたくありがとうございました。

出川

(出川) 2026/06/04(木) 20:46:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.