エクセルで出勤表から出勤者の名前を出す方法

このQ&Aのポイント
  • 介護施設で勤務している5人の出勤者の名前をエクセルの出勤表から取得する方法について教えてください。
  • エクセルの表1には縦が職員の名前、横が月日の出勤表があります。表2には当日の出勤者の名前を表示したいです。入力またはクリックした月日に応じて表2に出勤者の名前が自動で表示されるようにしたいのですが、どのようにすれば良いですか?
  • 現在は手作業で該当日の出勤者の名前を控えていますが、この作業を効率化するためにエクセルの機能を使って自動で出勤者を取得したいと考えています。ご教授いただけますか?
回答を見る
  • ベストアンサー

エクセルで出勤表から出勤者の名前を出したいのですが。

エクセルで出勤表から出勤者の名前を出したいのですが。 介護施設に勤務しています。A~E(職員名とする)までの5人が勤務しているとします。今ここに、縦がA~E、横が月日のエクセルの表(表1とする)があるとします。 仮に6月1日はA,B,Cの3人が出勤で表の該当セルに○が入力されています。6月2日はB,D,Eが出勤で同様に○が入力されています。こんな感じで月末までの勤務表が出来ているとします。 ここで別のシートに「今日の出勤者」として当日の出勤者を表(表2)に出したいと思っています。 私が望んでいるのは、表1の希望の月日をクリック、もしくは入力すると、自動で表2のセルにその日の出勤者だけの名前が返せればいいのですが・・・。 本日の出勤者として本部に名前入りの表をあげないといけなく、これまでは表1から該当日の○を数えては、その職員名を手書きで書いて送っていました。この煩雑な作業を効率化したいと思っています。 よろしくご教授お願いいたします。

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

  • ベストアンサー
  • qyukip
  • ベストアンサー率40% (13/32)
回答No.4

日付をクリックした場合に実行する場合は以下のようなマクロを使用します。 使用した表と実行結果は画像の通りです。 このプログラムの場合1行目をクリックした場合に実行されます。 もしマクロで行うのであれば試してみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Integer Dim iRowNo As Integer iRowNo = 1 If Target.Row = 1 And Target.Column <> 1 Then Worksheets("Sheet2").Columns(2).Clear For i = 2 To 6 If Cells(i, Target.Column).Value = "○" Then Worksheets("Sheet2").Cells(iRowNo, 2).Value = Cells(i, 1).Value iRowNo = iRowNo + 1 End If Next End If End Sub

emika666
質問者

お礼

大変詳しい方法ありがとうございます。私にとっては大変難解なものですが、 すばらしいですね、エクセルって奥が深いです。 もっと勉強いたします。

その他の回答 (3)

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

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただきます。 Sheet1のデータの中で、Sheet2のA1セルに日付を入力すると その日の出勤者を表示するようにしてみました。 日付はシリアル値で入っているものとします。 Sheet2のD2セルに =IF($A$1="","",IF(COUNTA(OFFSET(Sheet1!$A$5:$A$9,,MATCH($A$1,Sheet1!$B$4:$AF$4,0),,1))<ROW(A1),"",INDEX(Sheet1!$A$5:$A$9,SMALL(IF(OFFSET(Sheet1!$A$5:$A$9,,MATCH($A$1,Sheet1!$B$4:$AF$4,0),,1)="○",ROW($A$1:$A$5)),ROW(A1))))) これは配列数式になってしまいますので、 この画面から直接コピー&ペーストしただけではエラーになると思います。 D2セルに貼り付け後、F2キーを押す、またはD2セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このD2セルを下へオートフィルでコピーすると画像のような感じになります。 この程度しか思いつかなかったのですが 他に簡単で良い方法があれば読み流してくださいね。m(__)m

emika666
質問者

お礼

大変詳しい方法ありがとうございます。さっそく使わせていただきました。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

手書きで送っていたということは、マクロで組んだとしても、それを印刷するわけですよね。 であれば、オートフィルタでその月日の列から○だけを抽出すると、結果的に、その月日に出勤する人の名前だけが抽出される形になるので、それをコピペするなり、その範囲だけをそのまま印刷するなりすれば良いと思います。 それだけで、用は足りますよね。

emika666
質問者

お礼

お答えいただき、ありがとうございました。 感謝いたします。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

マクロを使えば出来ないことはありませんが、実際に使用している場面を想像すると、無駄なように思えます。 エクセルのフィルタ機能を使って丸印のみ表示するようにすれば良いと思いますがいかがでしょうか。 何のために、本日の出勤者として本部に名前入りの表をあげるのか疑問です。 一度本部に実際の目的を聞いて見ることをお奨めします。 実は本部でそれをまた手書きで集計しているとか。

emika666
質問者

お礼

ご回答 ありがとうございました。 感謝いたします。

関連するQ&A

  • 出勤表をexcelで作成しようとしています。

    出勤表をexcelで作成しようとしています。 その際、以下の通りなるように設定したいのですが、いまいちわかりません。 1、B1に9:25と入力をしたらD1に9:30と表示したい 2、出勤をB1、退勤をC1、勤務時間をF1に表示するように設定した後、時間の合計をH1のセルに次のように表示したい 8時間15分→8.25 3、B1に出勤時間を入力したら、J1に1日の交通費を表示したい 1、に関してはなんとか出来たのですが、他の設定をしようとするとうまく表示がされません・・・。 説明が下手で申し訳ありませんが、みなさんよろしくお願いします。

  • 出勤有無の確認表を作りたいのですが・・・

    出勤有無の確認表を作りたいのですが・・・ その日、出勤している人間が誰なのかを一目でわかるようにしたいという内容です。 まず、普通の出勤簿があります。このような形式です 4/1 4/2 4/3 4/4 4/5 4/6 Aさん Aさん Aさん Aさん Aさん Bさん Bさん Bさん Bさん Bさん Cさん Cさん Cさん Cさん Dさん Dさん Dさん Dさん Dさん Eさん Eさん Eさん Eさん Eさん これを、別のシートの表の中に、このように表示させたいのですが、 4/3 Aさん Bさん Cさん Eさん ※A,B,C,D,Eが表示されるセルはあらかじめ決めていますK 表示させる条件として、上記でいう「4/3」を入れることにより、 その日の出勤者がそれぞれのセルに現れるようにしたいのです。 LOOKUP系なのは分かるのですが、いろいろ試しても うまくいなかないため、ご教授いただければ幸いです。

  • 出勤表を作りたいのです。

    写真のように年月日と曜日を付けて、出勤日に丸をつけて出勤表を作ってます。 年月を入力すると日付と曜日が切り替わるように設定してありますが(DATEとTEXTの関数を使ってます)、これに連動して出勤日のセルに丸が自動でつくようにしたいです。 ・月~金の出勤者 ・毎週金曜の出勤者 ・月初金曜のみの出勤者 関数でなんとかしたいです。方法を教えてください。お願いします。

  • エクセルで出勤表をつくる

    エクセルで、月別でシートに分けて1年分の出勤表を作っています。 印刷して勤務時間を手書きしてもらうためのものです。 下記のことで困ってますので助けてください。 考えている作り方としては、 (1)セルA1に年を設定し、A2に月を設定する (2)=DATE($A$1,$A&2,1~31)で、日付を出す (3) (2)の日付のセルの、書式設定をユーザー定義「d」にして日のみを表示 (4) (2)の日付の横のセルに=TEXT(WEEKDAY((2)のセル,1),"aaa")で曜日を表示 なのですが、(2)で、31まで入れると、2月シートの29の下に、(3月の)1と2が表示されてしまいます。30日までしかない月も同様です。 これを、その月の月末の日付までしか表示しないようにしたいです。 どうしたらいいでしょうか。

  • Excel の出勤管理表について

    勤務地ごとに分かれている出勤管理表のシートを、関数を使用してひとつにまとめたいです。 必要であれば、作業用の列や行の挿入、シートの追加もかまいません。 ~現状~ ・勤務地ごとにシートが分かれています。 ・各シートには、その勤務地に通勤可能なスタッフのみが、載っています。 ・同一スタッフが、シートを跨いで複数載っているケースもあります。 ・縦軸がスタッフID、横軸が日付、交差しているセルに出勤マークが入力されています。 ~希望~ 勤務地ごとに分かれているシートをまとめ、スタッフ全員が記載された一つのシートを、別に作成したいです。 ----------------------- 【シート1】(勤務地:●)   A  B  C  D  E  F 1      日付 2  ID  1  2  3  4  5   3 1111    ●       ●  ----------------------- 【シート2】(勤務地:☆)   A  B  C  D  E  F 1      日付 2  ID  1  2  3  4  5   3 1111 ☆     ☆ 4 2222    ☆    ☆ ----------------------- 【シート3】(勤務地:◆)   A  B  C  D  E  F 1      日付 2  ID  1  2  3  4  5   3 2222       ◆ 4 3333    ◆       ◆ ----------------------- 上記のシートをまとめて、、、 ----------------------- 【シート4】(まとめ)   A  B  C  D  E  F 1      日付 2  ID  1  2  3  4  5   3 1111 ☆  ●  ☆     ● 4 2222    ☆  ◆ ☆ 5 3333    ◆        ◆ ----------------------- このようなシートを、別途作成したいのですが、何か良い方法ございますでしょうか。 初心者なりに知っている関数を組み合わせどうにかできないか、ない知恵をいろいろ絞ってみたのですが歯が立ちませんでした。 つたない説明で申し訳ございません。 どなたかお知恵をお貸しいただけると、大変有難いです。 どうぞよろしくお願いいたします。

  • 出勤時間表の作成

    カレンダー(weekday(date))関数で出勤表を作成しております。 A1B1は「月」、C1D1は「火」、E1F1は「水」と順に入力しています。 A2・C2・E2は午前、B2・D2・F2は午後を入力、A1B1は「1」、C1D1は「2」、E1F1は「3」と入力しています。 A4のセルにA3が空白の場合は空白に、A1セルが月曜日および水曜日でA2セルが午前の場合は、2(時間)を記入、A1セルが火曜日で午前の場合は、5(時間)、B4のセルにB3が空白の場合は空白に、B1セルが月曜日および水曜日でB2セルが午後の場合は、3,5(時間)を記入、B1セルが火曜日で午後の場合は、1(時間)を記入しようと思います。 順次4行をコピーしていこうと思います。 ※A1B1は「月」、C1D1は「火」、E1F1は「水」を別々入力しているのは、A4,B4,C4,D4,E4,F4に、A4セルにIF関数(if(A1="月",・・・・)と入力した場合、A1のセルしか見に行かないので、2つ作成しています。 作成した関数(if(A3="","",if(or(A1,"月","水",A2="午前","2",)if(or(A1,"火","午前","5"),と続けてますが、表示できません。 VBA・関数での回答をお願いします。

  • 総当たり表のエクセルマクロ

    総当たり表のエクセルマクロ エクセルで総当たり表を作るとします。分かりやすくするため,アからオの5人で,BからF列の1行目にアからオ,A列の2から6行目にアからオと入力された総当たり表だとします。 総当たり表の外のセルの2箇所をそれぞれ対戦者入力セルとして,そこに対戦者の名前(ア~オ)を入力すると,自動的に総当たり表に○をつけてくれるマクロを作成したいと思っています。1回の組み合わせで自動的に2箇所に○をつけるマクロです。 そんな面倒なことをしなくても表に直接○をつければいいと思われるかもしれませんが,実は対戦者が膨大なので1回の組み合わせで2箇所に○をつけるのが手間なのです。 それと,対戦者入力セルの1箇所に名前を入力すると,他のセルにまだ対戦していない名前が表示され(リストのような形で)クリックで他の対戦者を入力できるようにしたいと思っています。 エクセルは昔ちょこっとだけVBAをかじったことがある程度で,今は忘れてしまいました。 仕事で急遽依頼されており,困却しております。 心やさしい方,ご教示願います。

  • エクセルで勤務表から出勤者を別シートに抽出したい。

    下記の「勤務表シート」の「弁当コーナー」、「飲料・デザートコーナー」の出勤者の名前を 「分担表シート」に日付ごとに抽出し、後は手入力でその日の分担作業名を入れて、作業指示書 を作りたいと思います。 実際には、その他にも3つのコーナーがあり、40人程のパートさんを管理しております。 抽出する際に休んでいる人を空欄で残したいと思います。 また、日付ごとの分担表に月日も反映したいと思っています。 更に、勤務表に従って、1ヶ月分の日付の分担表のシート(28~31シート)を作成しておきたいと思っています。 今までは、勤務表に従って、手入力で名前を入れていましたが、入力ミスや休日変更などその都度、分担表も訂正し、手間がかかる上にミスも多く、困っています。 尚、マクロは使ったことが有りません。エクセルは2010です。 どうか、お手数ですが、ご教授お願い致します。

  • エクセル勤務表作成中なのですが・・・

    初めて質問します。よろしくお願いします。 エクセル2003にて勤務表を作成しているのですが、こんな事ができるものなのでしょうか?     A    B   C   1 H18年  8月  2  21   月   出勤  3  22   火   出勤  4  23   水   休み   ・   ・   ・ 32  20   日   休み シート1にこの様な表を作り、シート2の1つののセルに休みの日付を自動的に抽出したいのですがこの様なことは可能でしょうか? ちなみにA1,B1には数字のみの入力で表示形式で年月を表しています。A2には=DATE(A$1+1988,B1,21)という関数で日にちを表示、A3以降は=A2+1というようにして表示しています。曜日は=IF(A2="","",WEEKDAY(A2))という関数で表示しています。 私エクセル関数に関してはあまり詳しくありません。この表もフリーソフトで入手したものを使用しています。 よろしくお願い致します。

  • エクセルについて

    エクセルで毎日の勤務表、及び給料の計算等をしたいと考えております。まず勤務表についてですが、勤務形式については、●1や、■5等、50通りほどあります。それぞれの勤務形式により出勤時間、退社時間が決まっております。例えば●1の勤務では8:00~17:00でしたり、■5の勤務では12:00から20:35でしたり、このような内容が約50通りほどあります。そこでA1セルやB1セル、C1セル・・・・・・に●1や、■5と入力した場合に、その勤務形式に対応する、出勤時間をB1セルに、退社時間をC1セルに、残業時間をD1セルに自動的に入力する方法は御座いませんでしょうか?必ずしもA1セルに、●1や■5ということは無く、A2であったり、A3であったり何しろ様々です。 また、給料のおおよその計算もしたいのですが、予め基本給や残業単価の何らか設定をすれば、このようなことも可能なのでしょうか? また、公休と入力した場合には黄色、有給と入力した場合には青色と設定をすることは可能でしょうか? どなた様か、ご教示の程よろしくお願いします。

専門家に質問してみよう