プロが教えるわが家の防犯対策術!

エクセルで多人数の技術者の配置開始日、終了日を入力した表から、特定技術者を抽出しその者の重複期間をチェック、表示させたいのです。定年過ぎのソフト初心者が出来そうなやり方を教えて下さい。

A 回答 (2件)

これはシートでデータの並べ替えをしてよければ関数でもできます。


前提は以下の通りです
 ・1行目はタイトル行で2行目から技術者のデータが入力されている
 ・G列、H列は空いている(ここに重複期間をさせるため)

(1)シートをA列の氏名を第一キー、E列の開始日を第二キーで昇順に並べ替えます
(2)G3セル(実データの2行目)に以下の式を入れます
 =IF(A3=A2,IF(E3<=F2,E3,""),"")
(3)H3セルに次の式を入れます
 =IF(G3<>"",MIN(F3,F2),"")
(4)G3セルと、H3セルを下方向にコピーします
するとG,H列に重複期間が表示されます。

もしシートの並び替えが許されないならマクロで可能です。
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はシートに戻りALT+F8でマクロ一覧を開き、マクロ名(Macro)を選択して「実行」ボタンです。

Sub Macro()
Dim LastR, idx As Long
 ActiveSheet.Copy after:=ActiveSheet
 LastR = Range("A65536").End(xlUp).Row
 Columns("A").Insert Shift:=xlToRight
 Range("A2").Value = 1
 Range("A3").Value = 2
 Range("A2:A3").AutoFill Destination:=Range("A2:A" & LastR)

 Range("A1:G" & LastR).Sort Key1:=Range("B2"), Order1:=xlAscending, _
   Key2:=Range("F2"), Order2:=xlAscending, Header:=xlYes
 For idx = 3 To LastR
  If Cells(idx, "B").Value = Cells(idx - 1, "B").Value Then
   If Cells(idx, "F").Value <= Cells(idx - 1, "G").Value Then
    Cells(idx, "H").Value = Cells(idx, "F").Value
    Cells(idx, "I").Value = Application.Min(Cells(idx, "G"), Cells(idx - 1, "G"))
    Cells(idx, "I").NumberFormatLocal = "yyyy/m/d"
   End If
  End If
 Next idx
 Columns("H:I").AutoFit
 Range("A1:I" & LastR).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
 Columns("A").Delete
End Sub

(このマクロは元のシートには手をつけず、別シートにデータをコピーしてから実行するようにしました)
    • good
    • 1
この回答へのお礼

早速のご回答誠に有難う御座います。初心者にとって回答内容を理解するのに大分時間が必要と痛感しております。取りあえず近くの図書館に行きエクセル専門書と格闘する覚悟であります。なんとか重複チェックが、ものになるよう頑張ります。貴重なご助言本当に感謝しております。

お礼日時:2007/03/02 20:52

質問文の内容では回答のしようがありませんので補足お願いします



>特定技術者を抽出し
抽出とはどのような操作を行うのですか? 特定の人をマウスで選択するのですか? それとも配置期間等から自動で抽出するのですか?

>その者の重複期間をチェック、表示させたいのです
 何と何の重複をチェックするのでしょう? また何を表示するのですか?

またシート上で各項目はどのような配置ですか。A列は氏名、B列は開始日で日付形式で2007/2/1のように値が入る。 等と具体的に補足いただければ回答がしやすいです。またそのほうがご期待に沿う回答が得られると思います

この回答への補足

早速のご検討有難う御座います。抽出はエクセルのデータ、オートフィルターで技術者全員が表示されるので、そこから特定の技術者名をクリック、その者の一覧表が表示されます。重複チェックは期間のダブりを検索、表示したいのです。例えば山田技術者はA工事で3月1日から3月31日まで従事、同じくB工事で3月25日から4月30日まで従事予定。この場合の3月25日から3月31日間がダブり従事となります。これを何らかの方法で表示できませんか。リストは一般的にA列番号、B列客先名、C列工事名、D列配置技術者名、E列配置開始日(例2007/03/01)、F列配置終了日(例2007/03/31)です。宜しくお願い致します。

補足日時:2007/03/01 17:26
    • good
    • 0

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

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