Excel関数で抽出と積算を行う方法

このQ&Aのポイント
  • Excel関数を使用して、A列のデータを昇順に抽出し、B列のデータを積算する方法を教えてください。
  • 条件として、0号はカウントせず、同じ号はまとめて抽出し、合算した日数は60日までとします。
  • 具体的な表の例を示し、結果を示してください。
回答を見る
  • ベストアンサー

Excel関数(抽出?)について

早速ですが、Excelで次のような表があり、この中からA列のデータを昇順に抽出して、あわせて対応するB列のデータを積算するのですが、次の3点の条件を設けた場合を求める関数がよくわかりません。 (1)A列を抽出する際には0号はカウントしない。 (2)同じ号はあわせて抽出する。 (3)各号の合算した日数は、60日までとする。 具体的には、   A  B        F  G 1 3号  5日      1号 10日 2 2号 10日      2号 25日 3 4号 10日      3号 20日 4 3号 15日  ⇒   4号  5日  5 2号 15日       計 60日 6 1号 10日 7 0号 5日    計 70日 としたいのです。 どなたかご教示くださるようよろしくお願い申し上げます。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

初めにすべてのデータは2行目から下方にあるとします。 また、号、日などの記号はセルの書式設定の表示形式からユーザー定義を選び、?"日" などの入力して表示させるとします。 F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(G2="","",ROW(A1)&"号") G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A:A,ROW(A1))=0,"",IF(SUMIF(A:A,ROW(A1),B:B)+SUM(G$1:G1)<=60,SUMIF(A:A,ROW(A1),B:B),(SUMIF(A:A,ROW(A1),B:B)+SUM(G$1:G1))-60))

kawatetsu7
質問者

お礼

ご回答ありがとうございます。 当方の力量不足により、新たに質問させていただくことになりましたのでそちらへのご回答もよろしくお願い申し上げます。

その他の回答 (4)

  • xkuonx
  • ベストアンサー率41% (23/56)
回答No.4

下で回答しているものです。 式にミスがあったので、訂正致します。 ▽F列のセル内容 ※F3以降はF2の内容をフィルハンドルコピーしたものでOK F1→=1 F2→=IF(OR(F1="計",F1=""),"",IF(SUM($G$1:G1)+SUMIF($A$1:$B$7,F1+1,$B$1:$B$7) > 60,"計",F1+1)) F3→=IF(OR(F2="計",F2=""),"",IF(SUM($G$1:G2)+SUMIF($A$1:$B$7,F2+1,$B$1:$B$7) > 60,"計",F2+1)) F4→=IF(OR(F3="計",F3=""),"",IF(SUM($G$1:G3)+SUMIF($A$1:$B$7,F3+1,$B$1:$B$7) > 60,"計",F3+1)) F5→=IF(OR(F4="計",F4=""),"",IF(SUM($G$1:G4)+SUMIF($A$1:$B$7,F4+1,$B$1:$B$7) > 60,"計",F4+1)) 上記でお願い致します。

kawatetsu7
質問者

お礼

ご回答ありがとうございます。 当方の力量不足により、新たに質問させていただくことになりましたのでそちらへのご回答もよろしくお願い申し上げます。

  • xkuonx
  • ベストアンサー率41% (23/56)
回答No.3

まずはじめに、質問に書かれているG4セルですが「5日」ではなく「10日」ですよね? それに伴いG5セルは「65日」となり、要件である「合算した日数は60日まで」に反するので、正しい出力内容は F   G 1号 10日 2号 25日 3号 20日 計 55日 である事を前提とします。 更に前提としてA列、B列、F列はセルの書式設定を下記のようなユーザー定義にしてください。 ▽A列 セルを右クリック→セルの書式設定→表示形式タブから「ユーザー定義」選択→「G/標準"号"」を設定 ▽B列 同様に「G/標準"日"」を設定 ▽F列 同様に「G/標準"日"」を設定 以上を前提として回答します。 関数を設定するのはF列、G列になります。 ▽F列のセル内容 ※F3以降はF2の内容をフィルハンドルコピーしたものでOK F1→=1 F2→=IF(OR(F1="計",F1=""),"",IF(SUM($G$1:G1)+SUMIF($A$1:$B$7,2,$B$1:$B$7) > 60,"計",F1+1)) F3→=IF(OR(F2="計",F2=""),"",IF(SUM($G$1:G2)+SUMIF($A$1:$B$7,2,$B$1:$B$7) > 60,"計",F2+1)) F4→=IF(OR(F3="計",F3=""),"",IF(SUM($G$1:G3)+SUMIF($A$1:$B$7,2,$B$1:$B$7) > 60,"計",F3+1)) F5→=IF(OR(F4="計",F4=""),"",IF(SUM($G$1:G4)+SUMIF($A$1:$B$7,2,$B$1:$B$7) > 60,"計",F4+1)) ▽G列のセル内容 ※G3以降はG2の内容をフィルハンドルコピーしたものでOK G1→=SUMIF($A$1:$B$7,F1,$B$1:$B$7) G2→=IF(F2="","",IF(F2="計",SUM($G$1:G1),IF(SUM($G$1:G1)>60,SUM($G$1:G1),SUMIF($A$1:$B$7,F2,$B$1:$B$7)))) G3→=IF(F3="","",IF(F3="計",SUM($G$1:G2),IF(SUM($G$1:G2)>60,SUM($G$1:G2),SUMIF($A$1:$B$7,F3,$B$1:$B$7)))) G4→=IF(F4="","",IF(F4="計",SUM($G$1:G3),IF(SUM($G$1:G3)>60,SUM($G$1:G3),SUMIF($A$1:$B$7,F4,$B$1:$B$7)))) G5→=IF(F5="","",IF(F5="計",SUM($G$1:G4),IF(SUM($G$1:G4)>60,SUM($G$1:G4),SUMIF($A$1:$B$7,F5,$B$1:$B$7)))) 上記でやりたい事はできると思われます。

kawatetsu7
質問者

お礼

ご回答ありがとうございます。 当方の力量不足により、新たに質問させていただくことになりましたのでそちらへのご回答もよろしくお願い申し上げます。

kawatetsu7
質問者

補足

すみません。 早速ご回答いただき恐縮ですが、こちらからの説明が足りなくて申し訳ありません。 次のとおり補足させてください。 (1)については、例示とは異なりますが、A列に「1号」がない場合には「2号」から、「2号」がない場合には「3号」からというように、A列を昇順に抽出していきます。 (3)についてですが、A列の号を昇順で抽出していき、対応するB列を60日になるまで積算していきます。 よって、例示の場合、 A7は「0号」なので抽出せず、対応するB7の「5日」は積算しません。 F1にはA6の「1号」でG1にはB6の「10日」、 F2にはA2とA5の「2号」でG2にはB2とB5を合算した「25日」、 F3にはA1とA4の「3号」でG3にはB1とB4を合算した「20日」、 F4にはA3の「4号」でG4にはB3の「10日」ですが、 これまでのG列の合計「65日」となり、G列の合計は「60日」までですのでB3のうち「5日」だけ積算することにしたいのです。 説明が分かりにくくて申し訳ありません。

回答No.2

B列は数字(表示形式で”日”を表示)ですか、それとも文字列(”5日”と直打ち)ですか、どちらですか?

kawatetsu7
質問者

お礼

ご回答ありがとうございます。 当方の力量不足により、新たに質問させていただくことになりましたのでそちらへのご回答もよろしくお願い申し上げます。

kawatetsu7
質問者

補足

早速、お問い合わせいただきありがとうございます。 B列については、数字入力で表示形式で”日”を表示するものです。 また、(3)についてですが、A列の号を昇順で抽出していき、対応するB列を60日になるまで積算していきます。 よって、例示の場合、 A7は「0号」なので抽出せず、対応するB7の「5日」は積算しません。 F1にはA6の「1号」でG1にはB6の「10日」、 F2にはA2とA5の「2号」でG2にはB2とB5を合算した「25日」、 F3にはA1とA4の「3号」でG3にはB1とB4を合算した「20日」、 F4にはA3の「4号」でG4にはB3の「10日」ですが、 これまでのG列の合計「65日」となり、G列の合計は「60日」までですのでB3のうち「5日」だけ積算することにしたいのです。 説明が分かりにくくて申し訳ありません。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

SUMIF関数で合計を求めればOK  =SUMIF(検索範囲,検索条件,合計範囲)  =SUMIF(A1:A7,F1,B1:B7) このように使います コピーして使うなら  =SUMIF(A$1:A$7,F1,B$1:B$7) これでOK ※ F列は自分で入力してください

kawatetsu7
質問者

お礼

ご回答ありがとうございます。 当方の力量不足により、新たに質問させていただくことになりましたのでそちらへのご回答もよろしくお願い申し上げます。

関連するQ&A

  • Excel関数について

    先週末にも同様の質問をさせていただきましたが、よく分からないことがありますので、再度質問させてください。 下記のようなある表から、上位の号から並べ替え(昇順)、またその号に対応する月数についてを合計60月となるまで積算させたいのです。 ○号、月については、表示形式によりますので文字列入力としません。 ○表内の空欄(ゼロ)のセルは計算しません。 ○号数は1号から7号までとします。(0号はありません。) ○同一号数は同順位とし、それぞれ対応する月数は合算します。 ○各号に対応する月数は積算していき、最終月数の上限を60月とします。 ○下表によると6号の合計月数は117月ですが、上位の号の月数の関係により45月まで積算対象となります。 ○仮に4号で60月を超えている場合には、計算結果は「4号 60月」となります。    A  B  C ・ ・ G  H  1 7号 12月      4号  3月 2 7号 24月      5号 12月 3 6号 84月      6号 45月 4 6号 33月   ⇒ 5 5号 12月     (合計は60月) 6 4号  3月 7 ・   ・ 8 ・   ・ ・ ・   ・ ・ ・   ・

  • Excel関数について

    A列のデータと、B列のデータを比較し、A列にあってB列にないものを抽出するための関数はありますか?

  • Excel昇順関数について

    データの昇順・降順方法として、メニューから「データ」→「並べ替え」とする方法がありますが、関数で同じことを実現できるものはあるのでしょうか?(例)A列に上から、「5、3、1、4、2」と並んでいるときに、(関数を入力した)B列上から「1、2、3、4、5」と表示する。

  • COUNTIF関数(Excel2013)

    A列にデータ、B列に金額を入力してます。 A列のデータをCOUNTIF関数を使って件数を数えた後、A列でカウントしたB列の金額を集計する場合、どの様な式を使えばいいのでしょうか? 従来は、COUNT関数を使っていましたがデータ数が増えてCOUNT関数で、都度、セルを指定するのが大変になってきました。 詳しい方、ご教示お願いします。

  • Excel関数で条件付で抽出

    A列に請求日 B列にユーザIDのデータがあり、そこから同じユーザIDでかつ同じ請求日のデータがあった場合、それを省いて抽出したいのですがどうすればよいか教えてください。

  • Excel2003の関数で文字の抽出

    Excle初心者です。以下のことを関数を使用して実行したいのですが・・・。宜しくお願いします。 列の各セルには文字の羅列があります。これらの特定文字のみを抽出またはカウントしたい。   列1 ----------- (1)(2)(3) (2)(3) (3)(5) (1)→1 (2)→2 (3)→2 (4)→0 (5)→1

  • EXCEL:ゼロ以外のデータを詰めて抽出する方法

    初めて投稿します。よろしくお願いいたします。 EXCEL2000を使用しています。 オートフィルタを使わずに 関数でデータを抽出する方法で悩んでいます。 下記<データ>が存在しています。 2行目がゼロ以外のものを、 別シート<抽出>に上から詰めて抽出したいのです。 <データ>   A列 B列 C列 D列 E列 1行 1  2  3  4  5  ←日付 2行 5  3  0  2  0  ←数字 <抽出>別シート   A列 B列  1行 1  5 2行 2  3 3行 4  2   ↑  ↑   日付 ゼロ以外 関数については中級レベルだと思います。 いろいろ試したのですが、関数を組み合わせてもなかなかうまくいきません。 どなたかご教授いただけないものでしょうか? よろしくお願いいたします。

  • Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さ

    Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さい! 下のデータで、A列でB、B列で赤を選んだ人は「みかん」という「みかん」を抽出する関数を教えて頂けませんでしょうか? データシートとは別に集計シートを作成しています。 お忙しい中恐れ入りますが、ご教示下さいますようお願い申し上げます。。。 ●データ A B C 1 A 赤 みかん 2 B 赤 りんご 3 C 白 いちご 4 B 青 いちご 5 D 赤 みかん 6 A 青 みかん 7 C 黄 りんご 8 E 赤 バナナ

  • EXCEL関数で条件を満たす個数

    EXCEL関数で条件を満たす個数をカウントしたいのですが、どのようにしたらよいのでしょうか?    A列 B列 C列 D列 E列 F列 G列 H列 ----------------------------------------------------------- 1行    目標 1日 2日 3日 4日 5日   目標達成日数 ----------------------------------------------------------- 2行 山田  5  2  4  1  6  3    1 ----------------------------------------------------------- 3行 佐藤  3  1  2  6  5  4    3 ----------------------------------------------------------- 4行 岩本  4  6  2  1  2  5    2 上記のような表を作成し、目標を達成している日数をカウント するには、どのような関数を使用すれば良いのでしょうか? (H列)に目標達成日数を表示したいです。 山田さんの場合、 目標(セルB2)5以上を満たす日は、4日(セルF2)の6だけなので 目標達成日数(セルH2)は1となります。 佐藤さんの場合、 目標(セルB3)3以上を満たす日は、 3日(セルE3)の6と 4日(セルF3)の5と 5日(セルG3)の4と 目標達成日数(セルH3)は3となります。

  • 日付をカウントした後にその列の金額を合計する関数

    下記のような表があります。まずA列の10月の件数をカウントしたい。 次にカウントした(抽出した)もののB列の数字を合計したい。 件数をカウントするものはCOUTIF関数で出来たのですがそこで 抽出されたものを合計する関数がわかりません。ここでオートフィルタ を使用するものは検索できたのですが出来れば関数を使用して 合計値を出せればと思っています。 お分かりになる方がいらっしゃいましたらお教えください。 よろしくお願いいたします。   A    B 1 10/1 30 2 10/2 10  3 11/1 20 4 11/2 10

専門家に質問してみよう