- ベストアンサー
エクセルで出勤表から出勤者の名前を出す方法
- 介護施設で勤務している5人の出勤者の名前をエクセルの出勤表から取得する方法について教えてください。
- エクセルの表1には縦が職員の名前、横が月日の出勤表があります。表2には当日の出勤者の名前を表示したいです。入力またはクリックした月日に応じて表2に出勤者の名前が自動で表示されるようにしたいのですが、どのようにすれば良いですか?
- 現在は手作業で該当日の出勤者の名前を控えていますが、この作業を効率化するためにエクセルの機能を使って自動で出勤者を取得したいと考えています。ご教授いただけますか?
- みんなの回答 (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
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 ↓の画像で説明させていただきます。 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
お礼
大変詳しい方法ありがとうございます。さっそく使わせていただきました。
- nattocurry
- ベストアンサー率31% (587/1853)
手書きで送っていたということは、マクロで組んだとしても、それを印刷するわけですよね。 であれば、オートフィルタでその月日の列から○だけを抽出すると、結果的に、その月日に出勤する人の名前だけが抽出される形になるので、それをコピペするなり、その範囲だけをそのまま印刷するなりすれば良いと思います。 それだけで、用は足りますよね。
お礼
お答えいただき、ありがとうございました。 感謝いたします。
- aokii
- ベストアンサー率23% (5210/22062)
マクロを使えば出来ないことはありませんが、実際に使用している場面を想像すると、無駄なように思えます。 エクセルのフィルタ機能を使って丸印のみ表示するようにすれば良いと思いますがいかがでしょうか。 何のために、本日の出勤者として本部に名前入りの表をあげるのか疑問です。 一度本部に実際の目的を聞いて見ることをお奨めします。 実は本部でそれをまた手書きで集計しているとか。
お礼
ご回答 ありがとうございました。 感謝いたします。
お礼
大変詳しい方法ありがとうございます。私にとっては大変難解なものですが、 すばらしいですね、エクセルって奥が深いです。 もっと勉強いたします。