人に聞けない痔の悩み、これでスッキリ >>

エクセルについて質問です。

オートフィルタを使用しますと、プルダウン式に
選択肢が一覧で出ますけれど、その数を数えるには
どうしたらよいのでしょうか?

例えば出荷一覧を見る場合など、
出荷日でソートしてみるのですが、
その日に動いたのはいったい何アイテムなのか、
ということを知りたいのです。

プルダウンで出る候補をいちいち数えるしか
方法はないのでしょうか?

どなたか、何とぞご教授ご指導のほど、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

空いている列を作業列として使用します(仮にH,I列)。


フィルタリングして、D列の重複を省いた個数を数えたいとします。
データが2行目からあるとして、
H2=SUBTOTAL(3,D$2:D2)
下へコピー。
I2=IF(AND(H2>0,H2<>H1),D2,NA())
下へコピー。

個数=COUNT(1/(MATCH(I2:I1000,I2:I1000,0)=ROW(A1:A999)))
配列数式なので、Ctrl + Shift + Enter で確定。

ROW(A1:A999)の部分は実際のデータの行数に合わせてください。
(データが2~1000行目まであるとしたら、データの行数は999行、という意味です。)
    • good
    • 0
この回答へのお礼

ご丁寧な回答真にありがとうございました。
関数の種類や意味は知りませんが、なんとなく
おっしゃることは分かる気がします。

回答いただきました皆様、
本当にありがとうございました。



余談ですが、PCど素人の私(もちろん文系人間)は、
いわゆる「解」法が複数あることに大変驚いています。
中にはご自分で関数を組み合わせて、公式を
創り上げる人もいると聞きます。

いったい、皆さんはそういう関数を
どこで学ばれるのでしょうね・・・・?

お礼日時:2006/10/07 22:45

No.2です。


すみません、質問の意図を誤って解釈していました。
私の知識では、オートフィルタを使用して重複を除いた個数を数える方法は思いつきませんでした。

ちょっとややこしいですがフィルタオプションを使用した以下の方法はいかがでしょうか。

A列に出荷日、C列にアイテムが入力されているとします。
A列のタイトルが「出荷日」となっていると場合、抽出条件としてD1に「出荷日」、D2にフィルタリングしたい出荷日を記入しておきます。

この状態で、A列全体とC列全体を選択して、「データ」>「フィルタ」>「フィルタオプションの設定」の画面で、「検索条件範囲」に$D$1:$D$2を指定し、「重複するレコードは無視する」にチェックを入れ、OKを押します。
こうすると、D2のセルで指定した条件の日付のアイテムが重複なしに表示されるので、下のステータスバーを見れば抽出件数がわかります。

ただ、条件を変える(抽出する日付を変える)には、いちいち「データ」>「フィルタ」>「すべて表示」で元の表示に戻して、検索値(今の例ではD2)の内容を変えて同じことを繰り返さないといけないので、ちょっと面倒です。一連の流れをマクロにすれば簡単かもしれません。

一応、今の例をマクロにしてみたら、以下のようになりました。ボタンを配置してマクロを実行できるようにしてみたら、比較的簡単に抽出ができると思います。

Sub 抽出()
Range("A:A,C:C").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D1:D2"), Unique:=True
End Sub

Sub 全て表示()
ActiveSheet.ShowAllData
End Sub
    • good
    • 0
この回答へのお礼

ご親切にどうもありがとうございました。
マクロなどはまったくちんぷんかんぷんなのですが、
ご意見大変参考になりました。
有り難うございました。

お礼日時:2006/10/06 02:09

A列に出荷日が格納されているとすると、


=SUBTOTAL(2,A:A)
とどこかのセルに入力すれば、フィルタリングされた個数が表示されます。
または列の中身が文字列で先頭行がタイトルの場合、
=SUBTOTAL(3,A:A)-1
でもよいでしょう。

この回答への補足

ご回答ありがとうございます。

ただ、上記はもしかして、
「フィルタリングされた個数」と記載いただいていますが、それはエクセルの右下に表示される個数のことでしょうか?

もしそうであれば、私が知りたいと申し上げているのは違いまして、「フィルタリングされた個数」の総数ではなく、その選択肢として表示されるリストの個数です(重複が省かれた個数)。

もしよろしければ、引き続きご教授いただければ幸いです。

補足日時:2006/10/05 17:50
    • good
    • 1

「オートフィルタの選択肢数=データの重複を省いた個数」で良いでしょうか



データ範囲がA1:A100のときで、空白ななければ
 =SUMPRODUCT(1/COUNTIF(A1:A100,A1:A100))
で求められます

この回答への補足

さっそくのご回答ありがとうございました。

すいませんが、上記関数は複数のフィルタの条件下でも
有効なのでしょうか?

質問に書きましたが、例えば

過去の出荷記録(日時、得意先、納品先、アイテム、数量・・・)の「出荷実績一覧表」のようなものにおいて、

「○月分に動いたアイテム数をカウントしたい」という場合、

まずは日付の列で、「○月」というフィルターをかけて絞り込むかと思いますが、そのような条件下でアイテム数をカウントしたいという場合にも(空欄さえなければ)自動計算されるのでしょうか?
または別に何か計算式を入れなければなりませんか?

恐れ入りますがご回答いただければ幸いです。

補足日時:2006/10/05 11:50
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルでフィルタ後の条件付き個数のカウント

いつもお世話になっております。

エクセル(2007)で作成した表をフィルタ後に条件に合致する個数をカウントする方法を教えてください。
(例)
A列:名前
B列:出身県のデータがあったとします。

名前でフィルタをかけた後、出身県ごとのカウントを行いたいのですが、条件が無い場合のデータ個数はSUBTOTAL関数を使えばOKなのはわかります。
COUNTIFS関数を使うと、フィルタで隠れた行のデータまでカウントしていまいます。

ピボットを使う(使い方がイマイチわかりませんが・・・)という方法もあると思いますが、今回は同一シート無いに関数でカウントしたいのです。

どなたかよろしくお願いいたします。

Aベストアンサー

=subtotal(3,a2:a3000)
あるいは
=subtotal(3,b2:b3000)
あるいは他の列

※空白セルは個数にカウントされないことに注意して、任意の列を選択

といった数式を、「フィルタで絞り込んだ際に非表示にならない位置」(表の最上行より上とか、最下行より下とか、別シートとか)に記入。その後、A 列で絞り込み、同時に B 列でも絞り込み。つまり、2 列で絞り込み。

以上により、A 列と B 列の AND 条件における個数が数式を記入したセルに表示されているはず。


>ピボットを使う(使い方がイマイチわかりませんが・・・)……

慣れ。やってみれば、意外とできます。たくさん使ってみてください。

Qエクセル関数 重複をのぞいて個数を数える方法

いつもお世話になっています
セルに
a  b  c  a  b b
と入力したとき、個数を数える方法は知っていますが、種類が3個だと集計するにはどんな関数を使えばいいのでしょうか。

Aベストアンサー

下記URLの方法は如何でしょう。

「重複しないデータを数える」
http://integer.exblog.jp/2132536/

「リストから重複するデータをはぶいた件数(個数)をカウントする」
http://ameblo.jp/xls/entry-10073848203.html

「重複しないセル数」ユーザー定義関数の説明
http://www.katch.ne.jp/~kiyopon/soft/juhukunai.html

Q=SUBTOTAL に =COUNTIF の機能を実装

お世話になります。

掲題の件で ご相談が御座います。


=SUBTOTAL(3,U5:U63) と
=COUNTIF(U5:U63,"完了") を 1つのセルで表現したいのですが
これは不可能でしょうか?

本当は「U列」だけではなく、20~30列全部に そのような機能を持った関数を入れたいのですが
両方を兼ね備えた関数を どなたかご存知ないでしょうか。

ようは、その表全体にフィルタを設定しており、いくつかの条件で抽出した時に「完了」の数が変わるので
現状 自分が思いつく所で考えると別シートに移して「=COUNTIF(●:●,"完了")」を都度入れていくか?
ぐらいしか思いつきません。

・フィルタで抽出しても元の範囲選択はそのまま。
・フィルタで抽出後に見えている選択範囲の「完了」だけを数えて欲しい
・上記2つの条件で1つのセルに数式を入力したい。

この3つの条件が満たされれば「=SUBTOTAL」や「=COUNTIF」にこだわる必要はありません。

どなたか ご存知であればご教示いただけますでしょうか。

説明が不足のようでしたら何度でも補足致しますので何卒宜しくお願い致します。

お世話になります。

掲題の件で ご相談が御座います。


=SUBTOTAL(3,U5:U63) と
=COUNTIF(U5:U63,"完了") を 1つのセルで表現したいのですが
これは不可能でしょうか?

本当は「U列」だけではなく、20~30列全部に そのような機能を持った関数を入れたいのですが
両方を兼ね備えた関数を どなたかご存知ないでしょうか。

ようは、その表全体にフィルタを設定しており、いくつかの条件で抽出した時に「完了」の数が変わるので
現状 自分が思いつく所で考えると別シートに移して「=COUNTIF(●:●,"...続きを読む

Aベストアンサー

またまたまた登場、myrangeです。

質問者がマクロをどの程度使えるのか分からないのでなんですが、
(質問から推測するにあまり使ったことがない?)
先に提示したマクロは関数ではありませんから
データの内容が変るたびに(結果を求めたい時点で)実行しなければいけません。
もし、SUBTOTALのような関数(セルに式としてセットする)にしたければ
以下のようなユーザー定義関数を作ることになります。

'---------------------------------------------- 
Function Ookami(myRange As Range, myStr As Variant) As Long
 Dim Rng As Range
 Dim Cnt As Long
 For Each Rng In myRange
  If Rng.EntireRow.Hidden = False And Rng.Value = myStr Then
    Cnt = Cnt + 1
  End If
 Next Rng
 Ookami = Cnt
End Function
'---------------------------------------------

使い方は、以下のようにします。
関数名は質問者のハンドルネームです。。(^^;;;

■Ookami(セル範囲, 検索文字)■

=Ookami(U5:U63,"完了")

F5~F666の範囲で、表示されてる"連絡済"をカウントしたければ

=Ookami(F5:F666,"連絡済")

要するにふつうの関数と同じような使い方になります。
以上です。
 

またまたまた登場、myrangeです。

質問者がマクロをどの程度使えるのか分からないのでなんですが、
(質問から推測するにあまり使ったことがない?)
先に提示したマクロは関数ではありませんから
データの内容が変るたびに(結果を求めたい時点で)実行しなければいけません。
もし、SUBTOTALのような関数(セルに式としてセットする)にしたければ
以下のようなユーザー定義関数を作ることになります。

'---------------------------------------------- 
Function Ookami(myRange As Range, myStr...続きを読む

Qオートフィルタ絞込みの後、データ数のカウント方法

オートフィルタで絞込みをした後、データ数のカウントをする方法を教えてください。

例)
エステ店の来客状況をエクセルに入力しています。
A列 日付
B列 曜日
C列 氏名
D列 性別
E列 身長
F列 体重

こんな感じで日々の来客数とそのデータを入力しているとします。

ある程度データが蓄積したところでオートフィルタでデータ分析したいと思います。
たとえば曜日別の来客数を調べたい時、オートフィルタで曜日を選択して、絞り込んだ結果のデータ数を数えればいいと思います。
=SUBTOTAL(2,B10:E999)
とやれば「第10行から第999行の間で、絞り込んだ結果、現在表示されている行の数」を表示してくれます。

ここで一歩踏み込んで、
「曜日別に絞り込んだ後、トータル来客数ではなく、各日付ごとの来客数をカウントする方法」を知りたいです。

たとえば先月でしたら
2010/10の毎週月曜日の来客数は
10/4(月) ●人
10/11(月) ●人
10/18(月) ●人
10/25(月) ●人
という内訳がわかるようにしたいのです。

やり方を教えてください。
できれば、
1 出来合いの機能での方法
2 関数を組む方法
3 それでだめならマクロ
の優先順位でおねがいします。

オートフィルタで絞込みをした後、データ数のカウントをする方法を教えてください。

例)
エステ店の来客状況をエクセルに入力しています。
A列 日付
B列 曜日
C列 氏名
D列 性別
E列 身長
F列 体重

こんな感じで日々の来客数とそのデータを入力しているとします。

ある程度データが蓄積したところでオートフィルタでデータ分析したいと思います。
たとえば曜日別の来客数を調べたい時、オートフィルタで曜日を選択して、絞り込んだ結果のデータ数を数えればいいと思います。
=SUBTOTAL(2,B10:E999)
とや...続きを読む

Aベストアンサー

オートフィルタからは離れますが、そのデータ形式ならピボットテーブルがすぐ使えます。
最初は少々取っつきにくいですが、便利ですので、まだ使った事がなければ、やってみて下さい。
そんな事は承知の上ですという事なら、スルーして下さい。
ピボットテーブルで検索すると、親切に解説してくれているサイトが沢山みつかります。
下記は、検索して上の方にあったもので、他にも多々あります。
http://hamachan.info/excel/piboto.html

Q[EXCEL]列の項目を何種類かカウントする方法

いつもお世話になっています。Excelで3000件ぐらいのデータを整理したいのですが、普通に合計などはできますが、1列に何種類かのデータが色々な順で混在している場合、それが全部で何個かではなく、何種類かをすぐに計算する方法はありますか?

たとえば、"りんご"・"みかん"・"いちご"・"りんご"・"ばなな"
とそれぞれ入力しているとして、個数は5個だけれども種類は4種類ですよね。この種類の数を出せるとうれしいのですが。どなたか教えてください。
今、使っているのはOffice2003ですが、方法が違うようならOffice2000での方法もわかる方いらっしゃれば教えてください、お願いします。

Aベストアンサー

自信はありませんが、
以下の数式は、1件目のデータを1と返し、2件目移行に出現する重複データを0と返す数式です。

=IF(A1=0,0,IF(COUNTIF($A$1:A1,A1)>1,0,1))

はじめに、上記式のセル番地A1とはデータの始まりがセルA1の場合ですので、ご自身のデータで始まりのセル番地と置き換えて下さい。あとはオートフィルでコピーです。
最後に、ランダムに算出された1と0に対し、SUM関数で合計を求めれば種類(重複しない個数)を出すことができるかと思います。

QEXCEL 重複するデータを1としてカウントする方法

以下のような、ある施設の利用者一覧表です。

A列には利用した日にち、B列には利用者のIDがあります。

A   | B
日にち | ID
01/10 | 0001
01/10 | 0002
01/13 | 0001
01/15 | 0003
01/17 | 0001

これをEXCELで延べ人数ではなく、同じIDが複数回出てきても1とカウントしたいのですが方法が分かりません。
上記の表では0001、0002、0003しかありませんので3という数字を求めたいのです。

出来れば作業列を使いたくないのですが、やむをえない場合はしょうがないかなと思います。

宜しくお願いします。

Aベストアンサー

#7です
◆すでに同じ回答をzap35さんがされていました
◆大変失礼しました

◆文字列または数値で途中空白があってもよい方法で別の式(少し長いですが)
=INT(SUMPRODUCT(1/SUBSTITUTE(COUNTIF(A1:A100,A1:A100),0,100)))

◆もし、ID番号が数値であればこんな方法も
=COUNT(1/FREQUENCY(A1:A100,A1:A100))

Qオートフィルタ使用時にCOUNTIFをSUBTOTALのように使いたい。

エクセルのシートでデータ管理をしようと思います。
その時便利なのが、オートフィルタですが、

   SUBTOTAL関数「例:=SUBTOTAL(9,A1:A100)」

を設定した場合、フィルタを操作すると、必要な数値が返ってきます。ところがというか当然というか、

   COUNTIF関数「例=COUNTIF(B1:B100,"○")

ではだめですよね。どうにかして関連づける方法はないでしょうか。
または、その他に同様な効果が得られる方法はありませんか。

Aベストアンサー

回答がありませんね。
質問の意味は、
  例えば、101行目にSubtotalを置いていればフィルタをかけたときに選択されたものだけが集計される。
  しかしCountifのように条件付きの集計はできないので代替手段は?
ということでしょうか。

多分、Subtotalの集計方法はフィルタで絞られたものを対象にするので、さらにそれを絞り込むことは難しいと思います。

>その他に同様な効果が得られる方法はありませんか
ということなので、機能が無ければ作ればいいという事で下記のユーザー定義関数を書いてみました。
フィルタで絞る時は、該当しない行は自動的に非表示になるのでそれを利用しています。

使い方は、COUNTIF(B1:B100,"○") と同じようにsubtotal_countif(B1:B100,"○") とします。

標準モジュールに貼り付けます。
Public Function subtotal_countif(rgSelect As Range, moji As String)
  Dim rg As Range 'セル
  Dim cot As Long 'カウンタ

  For Each rg In rgSelect
    If Rows(rg.Row).Hidden = False Then '表示されている行だけ対象にする
      If rg = moji Then
        cot = cot + 1
      End If
    End If
  Next
  subtotal_countif = cot
End Function

回答がありませんね。
質問の意味は、
  例えば、101行目にSubtotalを置いていればフィルタをかけたときに選択されたものだけが集計される。
  しかしCountifのように条件付きの集計はできないので代替手段は?
ということでしょうか。

多分、Subtotalの集計方法はフィルタで絞られたものを対象にするので、さらにそれを絞り込むことは難しいと思います。

>その他に同様な効果が得られる方法はありませんか
ということなので、機能が無ければ作ればいいという事で下記のユーザー定義関数を書いて...続きを読む

Q関数で可視セルのデータ個数カウント

Excel2002を使用しています。
オートフィルタで抽出したデータの個数を関数で
カウントしたいのですが、可視セルのみをカウント
出来る関数はあるのでしょうか?

例えば

  A
1 件数
2  2
3  1
4  3
5  1
6 関数


A6セルに何らかの関数を入れておき、
A列のオートフィルタを使って、1を抽出した時は
A6に”2”
3を抽出した時はA6に”1”を表示させたいの
です。
このように、可視セルのデータ個数のみを
カウントする関数はありますでしょうか?

フィルタを使わずにCOUNTIF関数でカウントする
方法、また、可視セルをコピー貼り付け後
カウントする方法は避け、あくまでフィルタで
抽出したデータの個数を瞬時にカウントしたいの
です。
ご教授宜しくお願いします。

Aベストアンサー

=subtotal(2,範囲)

A6だとオートフィルタで消されちゃうので1行目に行挿入してA1にする方が良いです。

Qエクセルのプルダウン リストごとの集計

はじめまして!
検索したのですが見つからなかったので教えてください。

エクセルで家計簿をつけています。
プルダウンリストに、食費・交通費・衣料...などと出てくるようにしたら
すごく便利だなぁと思ったのですが、リストごとの集計はできますか?
列で言うと、左から

日付 プルダウン1 金額 プルダウン2 金額 ... 日計

にして、空いてるところに項目ごとの集計もしたいのです!
教えてください!!!

Aベストアンサー

プルダウンリストの作り方はNo1さんの説明通りです。

集計はSUMIF関数が宜しいかと思います。
 =SUMIF(金額範囲,検索条件,金額範囲)
 【例】食費を集計する。
    ※日付がA列、項目がB列、金額がC列で、
     2行目~10行目に記録されている場合
       =SUMIF(B2:B10,"食費",C2:C10)

如何でしょうか?

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング