• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オートフィルタを使った表で30行ごとに小計を出したい。Excel2002)

Excel2002でオートフィルタを使って表の30行ごとに小計を出す方法

このQ&Aのポイント
  • Excel2002で部署ごとの経費一覧表を作成していますが、経費が0円の部署を除いて印刷したいです。オートフィルタを使うことで、簡単に経費が0円の部署を非表示にすることができます。
  • 経費一覧表のB列には通し番号を、AK列には入力番号を表示しています。AK列の入力番号は30件ごとに繰り返されるため、VLOOKUP関数を使ってB列の番号に応じて1~30が表示されるようにしています。
  • 入力番号が30の倍数のときに、AJ列の直近の1~30までの合計をAN列に表示したいです。どのような関数を使えばよいでしょうか?また、最終ページでは30件以内の端数がでるため、それも小計として表示させたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.3

No.1 & No.2です。 やっぱり AK列の入力番号はフィルタをかけたら変わるんですね。 AK列の値は固定でテストしていましたので、変動するなら No.2の式ではうまくいかないです。 作業列を使えば単純な式でできると思って試してみました。 詳細は省きますが、テストしてみると条件によってどうもうまくいかないのです。 バグなのかオートフィルタの仕様なのか、とにかく摩訶不思議な現象でした。 結局、どういう条件だとうまくいかないのかわからなかったので、作業列を使う方法はあきらめました。(←←コレにけっこう時間をかけたので返事が遅くなりました ) ■次の数式で試してみてください。 《前提条件》 ・データは、5行目から始まっている ・B列には、5行目から最終データ行以外に数値は入っていない AN5に =IF(OR(AK5=30,B5=MAX(B:B)),SUM(INDIRECT("AJ"&MATCH(CEILING(B5,30)-29,B:B,0)):AJ5),"") と入れて、必要なだけ下にフィルコピー ★今回、AK列の入力番号はこちらでも VLOOKUP を使って番号が変動するデータでテストしました。 何回かテストした限りでは正しい小計が出ているように思いますが、自信はありません。フィルタがかかった状態でこのような計算をすると思わぬ落とし穴があるようです。 ★これでダメなら、VBAで別シートに抽出・計算させるほうがカンタンで確実だと思います。

12tadashi
質問者

お礼

早速数式を貼り付けましたら、何一つ修正する事なく完璧な数値が表示されました。 しかも端数とゆうか30の倍数で終わっていない場合の処理も完璧で、驚嘆してしまいました。 ちょっとあきらめかけていて、手間がかかるけど小計を手で入力していこうと思っていただけに、心が震える程の感動でした。 私の質問に貴重なお時間を割いて頂き、どんな言葉でも言い表せない程、感謝いたしております。 またご丁寧で親切な回答内容で大変分かりやすく、重ねてお礼申し上げます。 本当にありがとうございました。

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

その他の回答 (3)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

何度もすみません、No.1 & No.2 & No.3です。 No.3 の補足です。 ★No.3 の数式にある MATCH(CEILING(B5,30)-29,B:B,0) の -29 は、No.2とは違って、データ開始行に関係なく -29 で固定です。( 30ごとに小計を出す、という条件が変わらない限り ) MATCH 関数で、小計を出す範囲の最初の行が何行目なのかを特定しています。 B列の連番が 30なら、連番 1の行、60 → 31 の行、90 → 61 の行…を検索しているということです。 データの最後が 30の倍数で終わっていない場合、たとえば 107 で終わっていても、範囲の先頭 91の行を見つけてきます。 CEILING 関数については、↓をご覧ください。 http://pc21.nikkeibp.co.jp/tech/excel36/12/ ですから、B列の連番は( SUBTOTALを使っておられるので問題はありませんが )、1か、または30の倍数+1 のどちらかで始まっていて、1ずつ加算されていることが絶対条件です( フィルタがかかっている、かかっていないに関係なく )。 ★その B列の連番ですが、SUBTOTAL はどんな式を入れておられますか? C列のデータを参照しているとして、もし =SUBTOTAL(3,$C$5:C5) という式が入っているとしたら、これではオートフィルタをかけたときに不具合が生じます( ←EXCELのバグです ) 必ず、 =IF(C5="","",SUBTOTAL(3,$C$5:C5)) のようにしてください。詳しくは↓をご覧ください。ご存知でしたらゴメンナサイ。 http://www.relief.jp/itnote/archives/000439.php http://www.officetanaka.net/excel/function/tips/tips21.htm ★No.3の数式でもう一度テストしてみましたが、問題はないようです。( あくまでこちらのテストデータでは、の話ですが‥ )

12tadashi
質問者

お礼

ご教示頂いた関数式は今の私ではちょっと理解できない部分が多く、参照サイトを見ながら勉強させていただきます。CEILING 関数は使った事がありませんで、大変参考になりす。 あと、SUBTOTAL関数につきましては、オートフィルタを使うと連番が歯抜けになって不便だと長い間思っていたのですが、つい先日こちらのサイトの過去の質問を見まして、こんな素晴らしい方法があるなんて!と認識を改めたとこでした。=IF(C5="","",SUBTOTAL(3,$C$5:C5)) の式が入っております。ご丁寧にありがとうございます。 本当に何度もご丁寧に回答下さいまして、心より感謝致します。 とてもよい勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.2

No.1です。 ふと思ったのですが、ひょっとしてオートフィルタの条件は<小計>の AN 列ですか? <小計>が 0より大きいものだけを抽出するのでしょうか。 だとしたら No.1の式で、合計を出すのに SUBTOTAL 関数を使っているのはマズイです。 SUM 関数に変えてください。 AN2に =IF(OR(AK2=30,COUNT(AK:AK)=ROW(A1)),SUM(INDIRECT("AJ"&CEILING(ROW(A1),30)-28):AJ2),"") と入れて、下にフィルコピーしてください。 注意事項は、No.1と同じです。 いずれにしてもご質問の場合、小計を出すのに SUBTOTAL 関数を使う意味はないような気がしてきました。

12tadashi
質問者

お礼

おはようございます。 わかりずらい文章があるなか、ご回答下さいまして本当にありがとうございます。 ・0円はAJ列の合計の事です。1ヶ月の使用した経費がAJ列に表示されまして、使用金額が0円の部署は(AJ列が0の場合)フィルターオプションで除いてます。 ・AK列の1~30が繰り返して表示される件ですが、別シートにテーブルを作ってます。1→1、31→1、60→30、61→1みたいな単純な方法です。B列の表示が変動しますのでそれに応じてAK列の表示もかわります。 ・ご記入頂いた前提条件はすべてその通りですが、4行目まではタイトルとかがありまして、データは5行目からはじまっています。 とゆうことで、ご回答頂いた2つの関数をいれてみました。フィルターオプションをかけていない状態ではまさしく完璧です。 但し、フィルターオプションでAJ列が0と等しくない(0を除く)とすると、30番目には数値が表示されているのですが、正しくない数値です。 AJ列が0の場合を除くとするフィルターオプションをかけた状態で、AK列が1~30までの小計をAN列に表示させたいです。 AN列以降は空白なのでそこに作業列を5行くらい使い悩んでおります。いいとこまでいきそうで完璧になりません。なにかいい方法がありましたらご教示下さいますよう宜しくお願いします。 ご回答心より感謝致します。  

全文を見る
すると、全ての回答が全文表示されます。
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ ちょっと確認ですが・・ > オートフィルタで0円の部署を除いた、部署のみプリントします。 この 「0円」 というのはどの列のことでしょうか? AJ 列ですか? だとすれば、小計を出す行の合計( AJ列 )がたまたま 0だったら、その行( 小計の行 )はオートフィルタでは抽出されませんよね。 その場合は、オートフィルタではなく、同じメニューにある フィルタオプションの方で複数列の条件を指定してくださいね。 それと、 > AK列の入力番号は入力が30件ごとなので、 > B列の番号に応じてVLOOKUPで1~30が繰り返し表示されています。 ↑がよくわかりませんが、どんな式ですか? B列の番号は、SUBTOTAL で連番にしているんですよね。 ということは、フィルタをかけたとき B列の番号は変わると思うのですが、それに応じて、ということは、フィルタをかけたとき AK列の入力番号も変わるのでしょうか? ■とりあえず以下の方法を試してみてください。 《前提条件》 ・1行目はタイトル行、データは 2行目から ・AK列には、2行目から最終行の間に空白はない ・AK列には、最終行より下に数値は入らない ★ <小計>の AN2 に =IF(OR(AK2=30,COUNT(AK:AK)=ROW(A1)),SUBTOTAL(9,INDIRECT("AJ"&CEILING(ROW(A1),30)-28):AJ2),"") と入れて、データ最終行までフィルコピーしてください。 あらかじめ多めにコピーしておいてもかまいません。 もし、データが 3行目から始まっている場合は、 CEILING(ROW(A1),30)-28) の -28 を -27にしてください。 データの開始行が2行目から 1行下がるごとに -27、-26、…となります。 もちろん、数式にある AK2、AJ2 もデータの開始行に合わせてください。 ★ただし、ROW(A1) の A1は、何行目から始まっていようと必ずそのままにしておいてください。 SUBTOTAL 関数の代わりに、SUM 関数を使っても結果は同じだと思いますが、 念のため SUBTOTAL 関数を使いました。

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

関連するQ&A

  • 「エクセル2000」オートフィルタに関しまして

    例えば・・・ ・A列に色々な数字が入力されているとします。 ・B列に色々な方のお名前が入力されているとします。 (B列のお名前は重複しているとします。) これにオートフィルタを設定します。 ここからがご質問なのですが・・・ 重複している名前をオートフィルタで 選び出します。そのときに、A列の数字合計を 表示させることは可能でしょうか? A列全体の数字合計ではなく、選び出した方のみの 合計を出す方法があれば、教えて頂きたいと思います。 分かりにくい質問で、大変申し訳ございませんが もしご存知の方がいらっしゃれば、お願い致します。

  • Excel:オートフィルタとAVERAGE関数

    B列に2***/**/**という年月日、D列にその年月日のデータ値が入力されています。 このとき、オートフィルタを使って列表示を限定し(B列の年月日を絞り込む)、D列の平均値をO3セルに表示させる、といったことをさせることは可能でしょうか? よろしくお願い致します。

  • EXCEL2000 オートフィルタで。。

    お世話になります EXCEL2000 です。 やりたいことは、例えば A列に(もちろん縦に)A,B,C,D,E,F,Gとデータが並んでいたとして、その中で、B,C,Dのデータだけを抽出したい場合はどうしたらいいのでしょう?? オートフィルタでいいでしょうか? データ→フィルタ→オートフィルタで、▼をクリックし、 オプション画面がありますが、[or]だと、2つのデータしか抽出できないようになっていて・・・(涙 しかたがないので、白い入力欄に、,(カンマ)で区切って B,C,Dというふうに入れてみましたが うまくいきませんでした。。。 どうすればいいでしょう?

  • EXCEL_オートフィルタで

    エクセルのフィルタについて教えてください。 オートフィルタのオプションで『で始まる』で抽出したいのですが、あるのに出てきません。 『と等しい』ではちゃんと出てきます。 でも『で始まる』で抽出したいのです。 どこかの設定がおかしいのでしょうか?? 「と等しい」のところで「あ*」と入力してフィルタてもでません。 データペースからインポートしたデータなので 文字列の先頭にスペースが入力されているかと思いましたが それもないようです。 お分かりになる方宜しくお願いします。

  • エクセルのオートフィルタで?

    教えて下さい。 現在あるデータベースを作成していますが。A列には入力毎に番号を1から順番にふってあります。そこで有る項目についてオートフィルタをかけるとA列の番号はとびとびになってしまうと思います。そこで質問なんですが、打ち出しの時だけでも結構ですが、オートフィルタをかけた A列の番号を簡単に1から順にふりなおすにはどうしたら良いでしょうか。 マクロでも構いません。おしえて下さい。

  • EXCELのオートフィルタについて教えてください。

    下記のようにデータが入力されています。   A   B   C 1 あ 2 い 3 う 4 え 5 お C列のC1に「=A1」C2に「=A2」と入力してオートフィルタを使って、「C3」以下に入力するとオートフィルタが使用できます。 しかし、以下のようにデータが入力されている場合はオートフィルタが使用できないのですが・・・   A   B   C 1 あ 2  3 い 4  5 う 6 7 え 8 9 お C列のC1に「=A1」C2に「=A3」と入力してオートフィルタを使って、「C3」以下に入力するとオートフィルタが使用できません。 簡単なことなのかもしれませんが、今一理解に苦しんでいます。 宜しくお願いいたします。

  • 合計を強制的に0にさせ、かつ違うセルに加算させたい。EXCEL2002

    社内の部署毎の経費一覧表作成でちょっと困っておりますので質問させて頂きます。 ・B列に各部署の5ケタの部署コードがあります(200行程度) ・C2~AI2まで日付けが入っており、各部署から申請があった金額を各コード別に1日単位で入力 ・AJ列にC列~AI列までの合計(1ヶ月の合計)が入ってます。 社内の部署変更などで月度の途中でも5ケタの部署コードが頻繁に新規追加されたり廃止されたりします。 例えば10行目にある18002とゆうコードが廃止になり、19001に統合されることになった場合、18002のAJ10の合計を0にし、かつ15行目にある19001の合計AJ15に18002の合計を加算させたいのです。 現状では、廃止の場合、別シートに廃止となったコード一覧表をつくり、合計欄の隣のAK列にVLOOKUPで「廃止コード」と表示させ、AL列に統合先の部署コードを表示させています。そして「廃止コード」とあるものは合計欄に手で0と入力し、統合先の部署コードの合計欄に金額を加算させています。私の実力ではIF関数を使えば合計を0にすることはできるのですが、別のセルに加算させることができません。 手作業の部分を自動できるなにかよい方法はありますでしょうか?シート、列、行の追加、作業列の使用などなんでも構いません。何卒よろしくお願いします。

  • オートフィルタで抽出した表の集計

    はじめまして。さっそくですが質問させていただきます。 現在、以下のような表があるとします。 行列   A     B     C     1  日付    名前   金額 2 2006年10月  田中   \1000 3 2006年11月  佐藤   \200 4 2006年11月  田中   \500 5 2006年12月  鈴木   \820 6 2007年 1月  鈴木   \323 7 2007年 1月  田中   \750 ここで、A列にオートフィルタをかけて、表示されるセルのみの総合計はSUBTOTALで取れるのですが、さらにB列の人名ごとの合計を取る方法がわかりません。 例えば2006年11月のみを表示した場合、 行列  C    D 9  総合計= ¥700  ←これはSUBTOTAL(9,C1:C6)で解決 10   田中= ¥500 11   佐藤= ¥200 12   鈴木= ¥0 と、出るようにしたいのです。 オートフィルタをかけるのはA列の日付だけではなくD以降にもデータが入力されていてオートフィルタをかける場合があるとしますが人名は3つ(田中・佐藤・鈴木)のみです。 また、実際のデータはとても行数が多いので手作業で可視セルの人名ごとのトータルを毎回打つのは大変ですし、そのデータは多くの人が使うのでオートフィルタをかけるだけで、現在可視状態のセルの総合計・可視状態の田中の合計・可視状態の佐藤の合計・可視状態の鈴木の合計が一度に出るようにしたいのです。 自分としては自作関数を作成し、一応は求める結果が出るようにしたのですが、自作関数を使うとファイルを開く時に「マクロを有効にしますか?」と聞かれてしまうのが難点です。もっと簡単な方法があれば教えていただきたいです。何卒よろしくお願いします

  • オートフィルタ機能について教えてください。

    オートフィルタ機能はあくまでその列に入力した数字(数値)しか表せないのでしょうか? その列を空白にして、オートフィルタ機能をクリックしたとき数字が表示されてその数字を空白のセル内に入力したいのですが・・・。 可能ですか?

  • Excelの集計表で固定していない小計があり、計算結果を上位の小計行に入れたい

    エクセル2K使用で300行程度の表があり、2行目まではタイトル行です。 品名L列 個数M列 単位N列 単価O列 金額P列 備考Q列← 2行目 完成品 1 組 (小計の計)(総合計) ← 3行目 小計   2   口  (O5:O8) (M*O)     ← 4行目 品名A  2   個 10 20 ← 5行目 品名B  3   本 10 30      ← 6行目 品名C  2   個 5 10      ← 7行目 品名・  ・ ・ ・ 20      ← 8行目 品名・  ・ ・ ・ 20      ← 9行目 小計 (O :O ) (M*O) ←・行目 品名・  ・ ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 ・ ・  ・   ・ ・ ・      ←・行目 ・ ・  ・   ・ ・ ・      ←・行目 合計            (小計の計) L列の一番上の小計は固定です、2ツ目以降の小計は固定していません。 P列の金額を上位の小計列の単価に入力して再計算したい 合計はP列(表の最終行)の合計金額欄に表示したい、3行目完成品単価は合計 金額の(小計の計)と同じ金額です、3行目を見積書に転記したいと思っています。 集計表には空白セルが存在します。 宜しくお願いします。

このQ&Aのポイント
  • マカフィー for Plalaの解約方法について早急に知りたいです。
  • マカフィー for Plalaの解約手続きができない状況です。
  • 2ヶ月分の料金が発生しているにもかかわらず、利用していないため早急に解約したいです。
回答を見る

専門家に質問してみよう