• 締切済み

エクセル 複数条件の関数

Sheet1に以下のDATAがあります  A B C 在籍期間 年齢 所属 42年0ヶ月13日 61 2 41年0ヶ月3日 80 4 40年10ヶ月12日 69 4 40年9ヶ月2日 77 2 40年5ヶ月2日 64 4 Sheet2で以下の項目を調べたいと思っています 条件1として在籍期間 (1)1ヶ月未満 (2)1ヶ月以上3ヶ月未満 (3)3ヶ月以上6ヵ月未満 (4)6ヵ月以上1年未満 (5)1年以上5年未満 条件2として在籍期間(1)~(5)までの期間で、所属部署で何人該当するのかを 調べていきたいのですが、うまくいきません 教えてください

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3です。 補足の >Sheet1のA列データがDATEDIF関数で求められている場合はどのようにすればよいのですか? について・・・ 大勢に影響はないと思いますが、 仮に去年の今日から今年の今日までの在籍期間をDATEDIF関数で表すと C2セルに「開始日」の2013/4/23 としておきA2セルに今日までの在籍期間を表す数式は =DATEDIF(C2,TODAY(),"y")&"年"&DATEDIF(C2,TODAY(),"ym")&"ヶ月"&DATEDIF(C2,TODAY(),"md")&"日" となると思います。 その表示結果は 1年0か月0日 と表示されます。 誕生日であればこれで「満1歳」というコトになり、めでたし!めでたし!になりますが、 一般的には「昨日」をもって「満1年の在籍」今日からは「1年と1日」の在籍!というのが普通だと思います。 そういうコトを考慮し、No.4で日にちの調整を投稿しました。 すなわち、上記数式の today() 部分で「1」をプラスするか、「開始日」に「1」をプラスするか どちらかでその調整はできると思います。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

回答No.2の追加です。 Sheet2のB2セル数式に設定し、他のセルへコピーするときは次のような処理になります。 Sheet2のG列に比較値としてG1=0、G2=1、G3=3、G4=6、G5=12、G6=60と月数を入力します。 =SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,((Sheet1!$E$2:$E$10*12+Sheet1!$F$2:$F$10)>=$G1)*1,((Sheet1!$E$2:$E$10*12+Sheet1!$F$2:$F$10)<$G2)*1) また、COUNTIFS関数で複数条件を定義するときは対象範囲(在籍期間)を延月数に設定して置く必要があります。 Sheet1のG列に延月数を算出するには次の式を使うと良いでしょう。 =LEFT(A2,FIND("年",A2)-1)*12+MID(A2,FIND("年",A2)+1,FIND("ヶ",A2)-FIND("年",A2)-1) Sheet2のB2セルは次の数式で目的が達成できるはずです。 =COUNTIFS(Sheet1!$C$2:$C$10,B$1,Sheet1!$G$2:$G$10,">="&$G1,Sheet1!$G$2:$G$10,"<"&$G2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です。 たびたびごめんなさい。 前回の回答で間違いがありました。 >Today()-1 は >Today()+1 です。 これでないと日数が合わないですね。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 ↓の画像で左側が元データのSheet1、右側がSheet2とします。 (1)~(5)の条件を考えると、Sheet1の○日のデータは不要のような感じがしますので、 月数だけで判断し、表示するようにしてみました。 Sheet1に作業用の列を設け、実質月数を表示させます。 そして、Sheet2のA・C列には月数で区分分けしておきます。 まずSheet1の作業列E2セルに =IF(A2="","",LEFT(A2,FIND("年",A2)-1)*12+MID(A2,FIND("年",A2)+1,FIND("ヶ月",A2)-FIND("年",A2)-1)) という数式を入れフィルハンドルで下へずぃ~~~!っとコピー! そしてSheet2のD3セルに =COUNTIFS(Sheet1!$E:$E,">="&$A3,Sheet1!$E:$E,"<"&$C3,Sheet1!$C:$C,D$2) という数式を入れ、列・行方向にフィルハンドルでコピー! これで画像のような感じになります。 ※ 画像のC8セルにはこれ以上のデータはない!というくらいの数値を入れておきます。 ※ Sheet1のA列データがDATEDIF関数で求められている場合、 1日の誤差が出てしまいますので、DATEDIF関数で Today() を使用している場合は Today()-1 といった感じで調整してください。 =DATEDIF(”開始日",TODAY(),"Y") (だと満日となりますので、1日マイナスするというコトです。)m(_ _)m

pop2003
質問者

補足

※ Sheet1のA列データがDATEDIF関数で求められている場合はどのようにすればよいのですか? すいません、教えてください。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>イメージどおりです! Sheet1のA列は文字列と解釈しています。 従って、比較するためには作業用に年数と月数の数値を前処理として必要です。 Sheet1のE列、F列に年数と月数をA列の文字列から切り出します。 E2=LEFT(A2,FIND("年",A2)-1)*1 F2=MID(A2,FIND("年",A2)+1,FIND("ヶ",A2)-FIND("年",A2)-1)*1 E2とF2を下へ必要数コピーしてください。 今回はSheet1のデータを2行目から10行目までとしました。 Sheet2のB列に以下のような数式を入力して右へ必要数コピーします。 B2=SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,(Sheet1!$E$2:$E$10=0)*1,(Sheet1!$F$2:$F$10=0)*1) B3=SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,(Sheet1!$E$2:$E$10=0)*1,(Sheet1!$F$2:$F$10>0)*(Sheet1!$F$2:$F$10<3)) B4=SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,(Sheet1!$E$2:$E$10=0)*1,(Sheet1!$F$2:$F$10>2)*(Sheet1!$F$2:$F$10<6)) B5=SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,(Sheet1!$E$2:$E$10=0)*1,(Sheet1!$F$2:$F$10>5)*1) B6=SUMPRODUCT((Sheet1!$C$2:$C$10=B$1)*1,(Sheet1!$E$2:$E$10>0)*1,(Sheet1!$E$2:$E$10<5)*1) Excel 2013で検証しましたがExcel 2007でも同様の結果を得られます。 (1)から(5)の条件に規則性が無く検査値を作業列に用意すれば1つの数式を他のセルにコピーできるかも知れません。 今回は各行に定数の値を使用しました。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>条件2として在籍期間(1)~(5)までの期間で、所属部署で何人該当するのかを調べていきたいのですが、うまくいきません 提示されたデータには目的の(1)から(5)までの条件に合うものがありませんので検証できません。 ダミーデータを追加してください。 尚、Sheet1のデータでは列の区切り位置が分からないので追加データは区切りを明確にしてください。 在籍期間 年齢 所属 42年0ヶ月13日 61 2 41年0ヶ月3日 80 4 提示されたデータの内容をExcelブックに作成してみましたので確認してください。 尚、ご利用のExcelのバージョンも補足してください。

pop2003
質問者

補足

ありがとうございます。イメージどおりです! Excelのバージョン2007です。 2つの条件がそろって人数を求める関数が分かりません しかも、月・年で求められているので混乱します。 教えてください

関連するQ&A

  • 複数の条件があった場合の条件式について

    エクセルで期間を計算し。 2日以内の場合、期間×100 3日以上6日以下の場合、期間×200 7日以上9日以下の場合、期間×300  10日以上13日以下の場合、期間×400  14日以上20日以下の場合、期間×500 21日以上31日以下の場合、期間×600 1ヵ月以上2ヵ月以下なら、期間×700 2ヵ月以上3ヵ月以下なら、期間×800 上の条件もに基づいた、条件文を作りたいのですが、 IF文でひたすら、作っていくと、引数エラーになりました。 何か良い方法をご存じの方がおりましたら、 お知恵をお貸しいただければ幸いです。 よろしくお願いいたします。

  • エクセルでの複数条件

    たとえば、100以上&150未満の条件で該当する個数をカウントしたい場合、countif関数とif関数をどういう風に組み合わせればいいのでしょうか。よろしくお願い致します。

  • エクセル 複数条件のIF関数 

    0から360の数字がランダムに入力されているA列があります。この数字を以下の条件でB列に入力したいのです。 (1)288以上なら280を引く (2)144以上なら144を引く (3)72以上なら72を引く (4)72未満ならその数字のまま入力 結果として、72未満の数字がB列に入力されることになります、 IF関数を使えばできるのかなと思いますが、違う方法でもよいです。 4万セルくらいを処理するので一番簡単な方法を教えてください。 よろしくお願いいたします。

  • エクセルで指定期間内に在職する対象者を抽出したいのです。

    お世話になっております。会社の在籍者名簿を作成したいのですが、次のような課題があります。 sheet1に以下のマスターデータがあります。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  03    7000   2008/05/01 2008/05/20 5  04   1100   2008/03/01 9999/12/31 sheet2に期間以下の5月の在籍指定条件を設定します。 開始日付 2008/05/01 終了日付 2008/05/31 この期間内に該当する対象者が下記の通り抽出されます。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  04   1100   2008/03/01 9999/12/31 日付についてのルールは以下の通りです。 A.個人コード03は、終了日付が2008/05/31前の為該当しません。月末まで在籍する方が対象となります。 B.在籍指定条件の開始日付より前に開始日付がスタートしている方は対象となります。 私の質問表現に曖昧な点がありましたらお許し下さい。ご回答をいただければ嬉しく存じます。宜しくお願い致します。

  • エクセル 複数条件での抽出

    自社名簿(sheet1)と、系列会社の名簿(sheet2) A列:ID番号 B列:氏名 C列:所属グループ D列:支店 共に、同じ表です。  sheet1とsheet2を照らし合わせ、A~Dまでの情報が全て一致する(sheet2に重複してる)該当者のみに  sheet2のE列に★印が反映されるようにしたいのです。 条件が一つですと、沢山の簡易的な関数でわかりやすのですが、 複数の条件での方法が、他の質問者様の回答の説明をみてもしっくりきませんでした。 ご教授宜しくお願いします。

  • エクセル関数 複数の条件に合う合計の出し方を教えてください。

    Sumifの使い方は解かるのですが、条件をもうひとつ増やした上で合計を出すにはどうすればいいのですか? たとえば・・・ ・列A~Dにそれぞれ「月」「日」「項目」「金額」を入れます。 ・月はもちろん12月まで、項目は消耗品ほか何十種類もあり、購入した物を、月や項目に分けずどんどん記入する。(月別の表にすれば簡単なのはわかっているのですが、とにかく今回は1つの表にまとめたいのです!) ・別のシートに1月から12月まで各項目ごとに合計を出す。 そこで、 1「月」の 消耗品「項目」の合計を出す関数を教えてください。  説明が下手ですみません。解からない所は後で補足しますので、お願いします。

  • エクセル-複数が複数ある場合のIF関数について

    はじめて質問させていただきます。 現在、EXCEL2003で機械の運搬金額を[サイズ][時間帯][運搬距離]という、3つの条件がある場合の算出方法を考えているのですが、どうしても出来ません。 条件としては 1.機械サイズが[A][B][C][D]と4の条件に分かれる 2.時間帯が[昼間][夜間]と2の条件に分かれる 3.運搬距離が[~1km未満][1以上~5未満][5以上~10未満][10以上~15未満]…と15の条件に分かれる となっています。 ちなみに、各条件の金額一覧表は別のワークシートに作成しています。 (位置の変更可能) この様な、条件が2つ以上あり、うち1つはパターンが15個もある場合IF関数で式を作成する事は可能でしょうか? また不可の場合は他に何か良い方法はありますか? 宜しくお願いします。

  • エクセル関数

    関数でわからないのでお願いします   A    B    C    1 45        45歳以上 2 44        45歳未満 3 18         ・・・・・ 例えばA列に年齢入力すると 45以上はC1の文字 45歳未満は、C2の文字 18以下は、C3の文字が反映されるようにしたいのですが、 複数の条件の書き方が分かりません、それに A列が、空白の時エラーが出ないようしたいのですが、困ってます。よろしくおねがいします。

  • Excel 複数条件該当データの別シート表示

    Excelで、2つの条件に該当するデータのみ別シートに表示させる方法を教えてください。 Sheet1には、A列:地区 B列に所属 C列には氏名の表があります。 Sheet2に、該当する条件のものだけを表示させるようにしたいのです。 (たとえば、地区=東京かつ所属=総務部) この条件は、Sheet2のD列以降で指定する欄を設けたいと考えています。 Sheet1のデータ A列   B列   C列   地区  所属  氏名 東京  経理部 山田 大阪  経理部 松本 東京  総務部 加藤 よろしくお願いいたします。

  • エクセルで、指定期間及び指定部門に在職する対象者を抽出したいのです。

    お世話になっております。会社の在籍者名簿を作成したいのですが、次のような課題があります。 sheet1に以下のマスターデータがあります。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  03    7000   2008/05/01 2008/05/20 5  04   1100   2008/03/01 9999/12/31 sheet2に期間以下の5月の在籍指定条件を設定します。 所属コード 1200及び1100 開始日付 2008/05/01 終了日付 2008/05/31 この期間内に該当する対象者が下記の通り抽出されます。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  02   1200   2008/03/01 9999/12/31 3  04   1100   2008/03/01 9999/12/31 フィルタオプションの設定で抽出した際、複数の所属コードを指定して一気に抽出することは可能でしょうか?他に方法がありましたらお教え下さい。 私の質問表現に曖昧な点がありましたらお許し下さい。ご回答をいただければ嬉しく存じます。宜しくお願い致します。

専門家に質問してみよう