• ベストアンサー

エクセルでの期間の重複について

方法が全く思いつかないので、お手数ですが、ご回答おねがいします!  下のようなリストがあります。   A  B     C      D 1 井上 主任 2000/6/26 2003/3/20 2 井上 課長 2002/3/20  2003/3/20  この表で、井上さんが主任をしていた期間と、  課長をしていた期間がかぶっています(兼任の為)  しかし、兼任を考慮しないでカウントしてしまうと 職務期間の合計があわなくなります。  役職上、課長の期間を優先して日数のカウントをし たいんですが・・・  当方、恥ずかしながらマクロは使えません。  関数等、VBAを避けてなんとか出来ないかと考えていますが、  手動でチェックするにもせめて重複している項目が目でみてわかるようにならないかと質問させて頂きました。  是非、よろしくお願いします! 

  • kahko
  • お礼率22% (2/9)

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

  • ベストアンサー
noname#30830
noname#30830
回答No.8

お疲れ様です。 くわしく説明しようとして、遅くなってすいません。 あてはまらなかったらすまないのですが、前提条件として、 降格人事がないことと(課長と主任の)兼任終了日が同一であることを前提に不完全ながら考えてみました。 |A |B |C |D | E |F |G |H |I 1|氏名|役職|就任日 |最終日 |序 |勤続|役職に |兼任|役職 列 |日数|兼任して|前の|在任 |いた日数|日数|日数 ――――――――――――――――――――――――――――― 2|井上|課長|2002/3/20|2003/3/20| 3 |1004| 365| ▼|365 3|井上|主任|2000/6/26|2003/3/20| 2 | ▼| 0| 639|997 4| □ |  | | | | ▼| 0| ▼|▼ 5|井上|担当|2000/6/19|2002/6/25| 1 | ▼| 0| ▼|▼ 6|佐藤|部長|2003/3/19|2003/3/20| 3 |1083| 1| ▼| 1 7|佐藤|課長|2000/6/26|2003/3/20| 2 | ▼| 0|1082|997 8| □ |  | | |  | ▼| 0| ▼|▼ 9|佐藤|担当|2000/ 4/1|2000/6/25| 1 | ▼| 0| 0|▼ 不完全ながら面倒ですいませんが、 a.まず勤続日数ほか数式をコピーするために、空白セル(□の記号が挿入した空白セルです)を必要なだけ挿入して、  個人の行数を同一にします(例では4行ですが、揃えるためには何行でも空白セルを挿入して下さい) b.その時の注意として、課長と主任を兼任していた行の間(例では3・4行目7・8行目)に空白セルは入れないで下さい (これが兼任していた日数を算出する数式に必須なので)。 c.例のE列の序列欄は空白列でかまわないので挿入しておいて下さい。  本来は必要ありませんが、主任より課長の役職が高い(優先したい)ということをはっきりさせることが必要な場合や、  並べ替えで必要な時には作成して下さい。  B列をコピーして貼り付け(挿入)して、置換して数字に置き換えて下さい。 ここから関数を説明します。 d.例のF列の勤続日数は、例ではF3に=D2-C5と入力してコピーして下さい (表の▼のセルは計算結果を表示させなくていいセルですなのですが、数式が思いつかず変な値が出てしまいますので、  まぎらわしいので消したほうがいいでしょう)。  要は、左下が入社日、右上が計算上の最終日で、このセルの位置関係を統一しないと、トータルの日数の計算式がコピーできないので、  空白行を挿入して、個人別に行数を同じにする必要があるのです。 e.G列の役職に兼任していた日数は、F2に=IF(D2=D3,D2-C2,0)を入力してコピーして下さい。  兼任終了後も同じ役職でいた(仮に課長)とすれば、課長の行を2行にして、兼任最終日までのデータと、  それ以降のデータを上の行に挿入して下さい。 (そうした時も、a.で説明した、個人の行数が同一になることに気をつけて下さい)  それでもあてはまらない場合は、数式のD2=D3をC列に数式を変えるなど、工夫していただければ幸いです f.兼任前の日数は、H3に=F2-G2と入力して下さい(上の行を参照しているので、H2に入力するとエラー値が出ます)。 g.役職在任日数は、I2に=D2-C2と入力 月の定義があいまいなので、日数/30などで概算を出していただければと思います。 参考になれば幸いです。

kahko
質問者

お礼

ご丁寧な回答、ありがとうございます! 出勤が月曜になりますので、早速試してみたいと思います。 とりあえず、お礼をお伝えしたかったので・・・

その他の回答 (7)

  • ao777
  • ベストアンサー率34% (43/123)
回答No.7

#5さんの発想を使わしてもらい、5行目に何もないとすると、 1の行を見出しだとして、D2に以下の式を入れてオートフィル すると、今回のケースのみでの対応はできます。 =IF(ISBLANK(A3),DATEDIF(B2,C2,"M"),IF(C2<=B3,DATEDIF(B2,C2,"M"),DATEDIF(B2,B3-1,"M")))

  • ao777
  • ベストアンサー率34% (43/123)
回答No.6

単純に経過月を求めるのは =DATEDIF(B1,C1,"M") を使いますが、 解説 =DATEDIF(就任日,退任日,"年ならY月ならM日ならD") ちなみに20ヶ月と、5日とかは全部20と出ます。 20ヶ月1日でも、21ヶ月と出したい場合は上記の式を少し変えます。 今回 井上 担当 2000/6/19 2000/6/25 となってますが、 井上 担当 2000/6/19 2001/6/25 の間違いではないでしょうか? 肝心の数式ですが、実際600件ほどあり、色々なとこでかぶっていたら、 関数ではできません VBAを使うとできると思いますので、時間があれば作ってみます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

まず、B列の役職で並び替えをします。 すると、担当、主任、課長の順に並びます。 (もし、役職が別にあって、並びが異なる場合は、ツール~オプション~ユーザー設定リストで並びを登録して、並び替えの時に、オプションで、標準から設定リストを選んで並び替えをします。) その後、A列の名前順で並び替えをします。 (前述の手順で並び替えを設定リストにしている場合は、標準にします) そのようにすると、 氏名順、役職順になるので、 E列に (1行目は項目名が入っていると仮定しています) =IF(AND(A2=A3,C3<=D2),C3,D2) のようにすれば、兼任している離職の日を上級職の着任の日にできます。 期間の計算にはこちらを使うようにします。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.4

データの内容を確認させてください。 1.井上が主任だけ、課長だけ、または、主任と課長がある、または担当、主任と課長とあるのように色々なパターンがあるのですか。 2.データの並び順はどうなっていますか。 3.2000件ということは、600人以上の名前があるということですか。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.3

セルE1に =IF(AND(C1<C2,D1<C2),"重複なし","重複有り") とすれば良いように思えますが、 データが2行しかないため、ここまでドマリ。 あえて日数を入れるとすれば E1に   =IF(AND(C1<C2,D1<C2),1+D1-C1,IF(AND(C1<C2,D1>C2),C2-C1,0)) E2に   =D2-C2+1 この場合だと、重複の表示は、 C1やD1セルの条件付き書式に 数式、 日付の大小比較式を入れて、 セルの塗りつぶしをするとか __________ 同じシート内に、複数名、役職名が存在した場合、 それらを、加味した上で、検索、重複の有る無しを判断し表示、且つ 任期日数も計算するのかが、質問から判断できず。 具体的なデータがもう少しあると、回答が付くはずです。

kahko
質問者

補足

早速の回答、ありがとうございます。 質問の説明不足で申し訳ございません。 「役職上、優先」というのは、   A  B     C      D 1 井上 主任 2000/6/26  2003/3/20 2 井上 課長 2002/3/20  2003/3/20 3 井上 担当 2000/6/19 2000/6/25    上の表で主任と課長の重複期間は2002/3/20~2003/3/20になります。しかし、課長の期間を優先したいので、主任の従事期間である2002/3/20~2003/3/2はカウントにいれたくありません。 よって、 理想の結果は、「主任21ヶ月 課長12ヶ月 担当12ヶ月」という結果を得たいんです。 データ数が少なくてすみません。同じシート内に、複数名ございます。 No,1の方の不足説明にもなるとは思うのですが・・・ お手数おかけします。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

課長の期間は、2003/3/20-2002/3/20 主任の期間は、2002/3/20-2000/6/26 でいいと思います。式を入力して書式を標準にすれば 日数が出ます。

kahko
質問者

補足

説明不足なので、申し訳ございません。 元あるデータをこのように修正できればいいのですが、データ数が2000件ほどあるので、 手動で重複チェックをするのに時間がかかる問題から こちらで質問させていただいた次第です。 補足説明はNO3の方のところでさせて頂きました。 よろしくお願いします。

noname#30830
noname#30830
回答No.1

こんにちは。 >役職上、課長の期間を優先して日数のカウントをしたいんですが・・・ 「優先して」とはどういう意味なのか、よくわかりません。 詳しい説明をよろしくお願いいたします。

関連するQ&A

  • Excelでショートカットキー割り振る方法

    ExcelのVBAでマクロを記述していますが、ショートカットキー設定の際に困ったことがありました。 それは、もともとの設定で割り振られているショートカットキーとVBAで記述したマクロが重複してしまい、VBAショートカットキーが優先されてしまうことです。 ショートカットキーを割り振る際、どのように割り振られていますか? よろしくお願い致します。

  • エクセル 順番並べ替えについて

    今、エクセルで会社で使用するリストをつくっているのですが、本をみながら上から順に部署、その次に役職つぎに名前で並べ変えようとしたら、部長の次に主任が来きてしまいました。 (1)ツールの「オプション」→「ユーザー設定リスト」に「部長 次長 課長 係長 主任」と入力し追加。 (2)「並べ替え」を選択し、最優先に「部署名」2番目に「役職」。 (3)「役職」を選択しさっき設定リストに追加した 「部長 次長 課長 係長 主任」を選択し、OK。 ・・・・がしかし、変更された表には 部長→次長  →主任→係長の順番でならんでしましました。 明日中につくらなければいけないので、ぜひどうしたら順番通りにならぶのか教えてください!

  • エクセルでの三者選択??

    会社で、職員の在職年数の表を作るのに、困っています。エクセル2000。 よろしくお願いします。 別のSeetに、個人ごとの在職年数、役職期間(期間は、昇任日などからDATEDIF を使い、出しています)どと入っています。 現役職が 係長で、なおかつ在職年数10年以上の者は『1』      課長で、なおかつ在職年数20年以上の者は『2』       部長で、なおかつ在職年数30年以上の者は『3』      主任以下については、『対象外』 という、条件を満たすものは、1~3の番号を振り分けないといけないという 表を作っています。 主任以下については、係長の昇任日が無い者が『対象外』と表示されるよう IF関数を使っています。 1~3を振り分けるのに、なにかいい関数はないでしょうか??? 説明不足とは思いますが、どうぞよろしくお願いします

  • 重複レコードについて

    もしご存知でしたらお教え下さい。 同じ番号(仮にここでは「受付番号」とさせて頂きま す。)でのレコードをDBに取込まないようにするには どうしたら良いでしょうか。 マクロ等でとかで組めますか? 尚、「受付番号」はユニークキーになっています。 簡単に仕様を書きます。 データを取込んだ際に、一時的にworkテーブルに展開 されます。 確認画面(=workテーブル)に「取込み」ボタンを実行 時に、初めて該当テーブルへの保存されるようになっ ています。 ちなみに確認画面では、手動修正は行えないのです が、「キャンセル」ボタンもあり、 実行時にはデータを取込まないようにしてあります。 そこで問題になったのですが、重複チェックの考慮を していなかった為、現状では同じデータが何回も何回 も登録されている為、取込む際に重複チェックを掛 け、同じ番号でのデータを取込まないようにしたいで す。 どのようにしたら実現できますでしょうか。 皆様の良きアドバイスをお教え下さい。

  • 「期間」の計算方法、こんなことできますか

    次のような作業をしています。(Excel2000)     A       B      C 1 1991/4/1 1993/4/1 1996/4/1 2 1989/3/1 1990/5/1 3 1995/4/1 A、B、Cは役職に就いた日、1~4は個人データです。 役職はAからCへとランクアップするもので、ランクダウンはありません。 それぞれの人のそれぞれの役職の在任期間(月数)を算出する作業をしています。 先ほどこちらで教えて頂いて、右側のセルが空欄の場合に計算させると出てくる「#NUM!」を「-」で表示させるように計算させました。見た目はエラーがなくキレイなデータが出来ました。 が。 また新たに質問させてください。 2、3の人は現在それぞれB、Aに留まっているわけで、その人たちには今年4/1付けでの役職の在任期間を算出してやらなくてはなりません。現役職=最後に入力されている列にだけ2002/4/1から計算させる関数を入れるような方法はありますか。 たびたびの質問で申し訳ありません。珍しく複雑な?ことをやらされていて頭の中が拙い知識では追いつきませんでぐちゃぐちゃです(すごく単純な事に気づいていないのかも。先ほどの質問はIF関数を忘れていたくらいですから・・・(トホホ)自信がありません)。 ちなみにマクロやVBAは・・・存在を知っている程度で使っていません(教えていただければTRYするつもりはありますが、データを提出する先もそこまでわかっていないはずなので、出来れば使わずに済ませたいです)。こんな状態でどうにかなる方法はありますでしょうか。 なければ「ない」で地道な手作業が待っています(800人分・・・)。そう教えて下さい。 どなたか、助けてください~ よろしくお願いします。

  • エクセルVBAについて

    VBAに関しての質問です。 A列に日付(10行目から) B列にその日の売上が 300行(300日分)入力されてる表があるとします。 C列にその日を含めた過去N日間の最大の売上を表示させたいのです。 例えば 過去5日間なら過去5日間の最大売上げを毎日表示させたいのです 当然この場合は5日間なのでCの13行目までは空白になります。 「N」日はA1セルに任意の日数で入力することによって希望の期間の数値 が表示できるようにしたいのです。 関数を使ってできるのいですが、事情がありましてエクセルのマクロの 繰り返しのプログラムでやりたいのですが VBAに関しては全く素人ですの。どなたかご教授願えませんでしょうか よろしくお願いします。

  • VBA  シート別カウント

    お世話になります。 只今、VBAでどのように複数の文言をカウントすればいいのか悩んでいます。 集計シートに、Sheet1~50までのA列にある文言をカウントしたいです。 A列には、りんご、ばなな、メロン、他50種類あるとします。 集計シートには縦に、Sheet1~50が並んでおり、 横にりんご、ばなな、メロンが横に重複削除して並んでいます。 りんごの下にカウントした数字を入れていきたいです。 現在、Cell(3,3) = WorksheetFunction.CountIF(Sheets("Sheet1").Range("A2:A100"),cells(2,2)) とマクロを組むと、一つだけしかとってこれない状態ですが、これを複数取ってくる場合はどのようにしたらよいのでしょうか。 よろしくお願いいたします。

  • 退職後、荒廃する職場・・・一人にしわ寄せが 

    先日、私は、大学卒業後25年以上勤めた、一部上場、電機製造業を早期退職優遇制度で退職し新しい道(家業の承継)を進み始めました。(前職は、部長(定年間近)一歩手前の副部長兼課長でした。 (困ったことに、私の退職後、短期間に二人が依願退職しました。それぞれ進もうとした道があり、ただ私がいなくなることで後を悲観したとのこと。ただし役職ではない若い人。) 私のいた会社の、早期退職優遇制度は、独立自営等のはっきりした目的があり、かつ1年以上前に、届け出て認定されて成立です。 成立時点で、役職からは外れます。(副部長、課長ではなくなりマネージャになる。…給与は役職手当だけ減るがあとは変わらない。) この宣言により、会社は後任を選びます。 3人の管理職のうち私以外2人(部長、課長)は、秋までに定年。 このため、定年まで2年弱の課長と、もうひとり課長一歩手前の人間がやって来ました。 半年以上かけて、引き継いでいるのですが、この二人は、地道な仕事はやりたがりません。(対外的パフォーマンス的なことばかり食いつく。) 私がいなくなって2か月。 ひとりの課員からSOS。 1.ISO内部監査で多数指摘事項発生。(説明が悪い。集積分析する記録を途中から怠った。)  …二人には引き継ぎ済み事項。きちんと記録対応をしなかった。 2.安全衛生パトロールでひっかかる。  …パトロールが近づいたら点検していた。これも引き継ぎ事項。 3.3つの部で合同で開催する発表会にむけた委員会   各部の代表は、長年課長職である。(担当役員との調整もあるため)  …長年、これは課長職。それ以下を出したら他部署とのバランス上不都合がある。 これにSOSを出してきた主任(課長まではまだ2段階ある。)を出そうとする。 4.この二人は地道なことができず、なんでもこの主任に振る状態。 この二人とは、引き継ぎの段階から、価値観が合わず困ってはいました。 とにかくやらなければならないこと!割り切って下さい!とお願いしました。(部長も巻き込んで。) 主任一人になんでも押し付けられる状態になってきたのです。 器用貧乏状態。 私は、この主任を救い(私のところで雇い入れることはできません。) 部署を崩壊させている2人を何とかしたいのですが妙案が浮かびません。 人事部に私から言う方法はありますが、この主任が私にチクったとなりかねません。・・・主任には、仲間をつくれ!、労使委員会で人の問題としてあげろ!(定年退職多数、それ以外に依願退職、早期退職も) あまりにもひどいなら・・・勇気はいるがコンプライアンス委員会にパワハラとしてあげる準備をしろ。(そのためには不快だろうが、記録、エビデンスを残す。)とは言って励ましている状態です。 長年世話になった会社。今は自分の方に傾注すべきでしょうが、2人の独善のために部署が崩壊して行くのは看過できないです。 組織と言うのは、このようなことで壊れてしまうのでしょうか。

  • エクセルかEZRでデータの頻度を表に纏める方法

    学校の課題で処方箋のサンプルデータがあり、各患者が期間内で薬を処方された回数をカウントして表に纏めたいのですがやり方が分かりません。 患者IDからCOUNTIFとフィルターで出来ないかと思ったのですが、COUNTIFの最大値を取る方法が見つからずに断念しました。 データは数万件もあるので手作業で写すのは時間的に無理です。 当方プログラミングの経験もあるので、そんなに長くならないならマクロでの対応も可とします。(VBA自体は殆ど触った事がありませんが) また、フリーの統計ソフトEZR用のデータセットもあるのでそちらを使った方法でも構いません。 以上、よろしくお願いします。

  • Excelでデータの反映

     いつもお世話になっています! ExcelでA列、行2より行31まで支店名が30店舗記入されています。 行1、列Bより列ARまで 43の商品名が記入されています。 そこで、今回は一つの支店で人気商品上位5個、順位は関係なく定期的に調査しています。  <例> A2の青葉店=B1(いちご)・E1(りんご)・H1(キウイ)・N(パン)・Q(マンゴー) の5つの商品をカウント1という事でB2・E2・H2・N2・Q2に「1」と記入します。他店も同様、上位5つの商品に「1」を記入します。 次回の調査の時は青葉店で「りんご」が選ばれていたら、E2を手動で「1」~「2」に書き換えます。  それで今回は、これを自動にカウントされる様に出来ないものかと思い相談しました。 例えば、15行目のB~Fに5個、品名を記入すると自動的に上記場所に反映される様に出来ますか?  説明が下手なので質問が解かりにくかったらすいません! まだ初心の為、具体的に教えて頂けると幸いです! 関数、マクロ、VBA等使用でも構いません。 宜しくお願いします! m(__)m

専門家に質問してみよう