• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel の出勤管理表について)

Excelの出勤管理表を一つにまとめる方法

このQ&Aのポイント
  • Excelの出勤管理表について、勤務地ごとに分かれているシートをひとつにまとめたいです。関数を使用して作業用の列や行の挿入、シートの追加も可能です。
  • 現状では、勤務地ごとにシートが分かれており、各シートには通勤可能なスタッフが記載されています。同じスタッフが複数のシートに載っている場合もあります。
  • 希望するのは、勤務地ごとに分かれているシートをまとめて、全スタッフが記載された一つのシートを作成することです。別途作成したシートに、各スタッフの出勤情報を集約します。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

3シートをまとめるなら、以下のような直列につないた関数がわかりよいと思います。 (シート4のB3セルに入力して右方向および下方向にオートフィルコピー) =IF(COUNTIF(Sheet1!$A:$A,$A3),INDEX(Sheet1!B:B,MATCH($A3,Sheet1!$A:$A,0)),"")&IF(COUNTIF(Sheet2!$A:$A,$A3),INDEX(Sheet2!B:B,MATCH($A3,Sheet2!$A:$A,0)),"")&IF(COUNTIF(Sheet3!$A:$A,$A3),INDEX(Sheet3!B:B,MATCH($A3,Sheet3!$A:$A,0)),"")

happytitti
質問者

お礼

ありがとうございます!できました! matchを何かと組み合わせて使うんだろうな、と考えてはいたのですが、ぜんぜん考えが及びませんでした。 本当に助かりました。 皆さんの回答参考になったのですが、一番早くご回答いただいた、こちらをベストにさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

表の組み換えの問題だと思う。 各シートのデータ列の構成(並び順や有無)は同じなのだろうね。質問に長々と例を挙げているが、一番大切なことだ。 こういうのは関数では難しい。ひっぱって来るデータ数(行数)が各シートで一定ではないから。 (1)関数 (2)VBA (3)出来合いのソフト (4)手操作 (3)は見つけるのが難しいだろう。 (2)は経験は無いのだろう。 今回限りなら、手作業でコピペして、シートを集約するのが早い。毎月とかに、この作業を繰返すのか? この点も質問に書いておくことが大切だ。 (2)は職員の名簿が1セットあれば、その職員名でデータを抜き出す、抜き出し問題になるが、複数シートに、同一職員が現れると、対処が難しい。 結果は、既に回答が出ているような、長い関数式ならできるということだが、質問者は式の意味を理解できるかな。  ーーーー 言ったついでに、参考に、シートデータを集約する、VBAのコードを挙げてみる。 下記コードで仮定した点 ・Sheet4という名のシートにデータを集める ・第3行からが実質データとする。1,2行目は各シート共通の見出しとする。 ・データの右端の列はJ列と仮定(月中日付ならもっと多いが) 上記仮定は、1-数文字のコードを変えれば、簡単に変えられる。 ーーー Sub test02() '見出しのコピー Sheet1から Worksheets("Sheet1").Range("A1:j2").Copy Worksheets("Sheet4").Range("a1") '--各シートからデータを寄せ集め For Each sh In Worksheets '全(各)シートの繰り返し If sh.Name <> "Sheet4" Then '集約シート以外を対象にする d1 = sh.Range("A65536").End(xlUp).Row '各シートのデータ最下行を調べる 'MsgBox sh.Name & " " & d1 '--集約シートの最下行を調べる d2 = Worksheets("Sheet4").Range("A65536").End(xlUp).Row '--集約シートの最下行の次に貼り付け sh.Range("a3:J" & d1).Copy Worksheets("Sheet4").Range("a" & d2 + 1) End If Next End Sub この結果を、職員コードでソートすると職員別に記録データ行がまとまる。

happytitti
質問者

お礼

的確なアドバイス、ありがとうございます。 お察しのとおり、VBAは使用したことがなく、いただいた内容を理解するには、まだまだ勉強不足です。 (他の方の関数は、理解できました!) これから少しずつ、VBAについても勉強していこうと思いました。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート4のB3セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$A:$A,$A3),INDEX(Sheet1!$A:$AX,MATCH($A3,Sheet1!$A:$A,0),MATCH(B$2,Sheet1!$2:$2,0)),"")&IF(COUNTIF(Sheet2!$A:$A,$A3),INDEX(Sheet2!$A:$AX,MATCH($A3,Sheet2!$A:$A,0),MATCH(B$2,Sheet2!$2:$2,0)),"")&IF(COUNTIF(Sheet3!$A:$A,$A3),INDEX(Sheet3!$A:$AX,MATCH($A3,Sheet3!$A:$A,0),MATCH(B$2,Sheet3!$2:$2,0)),"")

happytitti
質問者

お礼

ありがとうございます。 こちらの回答も大変参考になりました。 INDEXの使用、まったく考えが及びませんでした。 お恥ずかしいです。 大変助かりました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【エクセル】カレンダーベースの出勤表で指定した3日分だけ取り出したい

    Sheet1 ×_A____B___C___D____E____F___G 1日付 1/1 1/2 1/3 1/4 1/5 1/6 2名前B 出勤 週休 出勤 出勤 出勤 出勤 3名前C 出勤 週休 出勤 出勤 出勤 出勤 4名前D 出勤 出勤 出勤 出勤 週休 出勤 5名前E 出勤 出勤 週休 出勤 出勤 出勤 6名前F 出勤 週休 出勤 出勤 出勤 出勤 7名前G 出勤 週休 出勤 出勤 出勤 出勤 Sheet2 ×_A____B____C____D____E____F____G 1日付 1/4 1/5 1/6←ここに入力 2名前B 出勤 出勤 出勤 3名前C 出勤 出勤 出勤 4名前D 出勤 週休 出勤 5名前E 出勤 出勤 出勤 6名前F 出勤 出勤 出勤 7名前G 出勤 出勤 出勤 Sheet1のようなカレンダーベースの出勤表があります。 Sheet2の1列のように、指定した日付を入れるとSheet1からデータを自動で 読み込むような表を作りたいと考えています。 関数、VBAどちらでもいいので、お知恵をお貸しください。よろしくお願いします。 エクセル2003です。

  • エクセルと照合について

    エクセルと照合について 工場に勤務していて、シフト表と給与計算をしています。 エクセルの表がうまく貼りつけられず(列がずれるため)、縦書きですいません。 以下はシート1です。 出勤予定表(A1) Aさん(A2) 1/1(B1)←1/1は日付です。 1(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 3(D2) 1/4(E1) 空欄(E2) 1/5(F1) 1(F2) 1/6(G1) 3(G2) 以下BさんからEさんまで5人分あります。 以下は勤務時間コードです。 1 5:00~13:00 2 8:00~15:00 3 13:00~21:00 以下はシート2に作成している、実際の出勤日です。 Aさん(A2) 1/1(B1)←1/1は日付です。 5:00~13:00(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 13:00~21:00(D2) 1/4(E1) 空欄(C2) 1/5(F1) 5:00~13:00(F2) 1/6(G1) 13:00~21:00(G2) 他にBさんからEさんまで、シート3からシート6まで作成しています。 要は二つのシートをマクロか関数かであっているかどうか照合したのですが、できるのでしょうか。 目視はできるだけ避けたいです。 超初心者ですいません。 お願いします。

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

    出勤有無の確認表を作りたいのですが・・・ その日、出勤している人間が誰なのかを一目でわかるようにしたいという内容です。 まず、普通の出勤簿があります。このような形式です 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系なのは分かるのですが、いろいろ試しても うまくいなかないため、ご教授いただければ幸いです。

  • 違う形式の表の間で、入力している内容を反映させたい(エクセル)

    シート1には、下記のように入力されています   A B C D E F ・・・・ 1   1 2 3 4 5 ・・・・(日付です) 2 田中   1   1    ・・・・ 3 佐藤 1   1    1 ・・・・ 4 石井     1      ・・・・ (以下略。合計50人分) 人名の行の数字は1のみで出勤日を表しています。 1日あたり最大10名まで入力できます。 これをシート2に反映させたいのですが シート2はカレンダーのようになっており   A B C D E F G 1 月 火 水 木 金 土 日 2    1 2 3 4 5 6 3   4 (以下略) のようになっています。 日付別に、1が入っている人名を反映させたいのです。 1日は誰某が出勤、2日は・・・というのがひと目で分かるような形にしたいのですがカレンダーに反映させる方法がよく分かりません… 関数だけで何とかできますでしょうか?

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

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

  • EXCELで休日出勤を計算する

    お世話になります。 知恵をお貸しいただければ幸いです。 EXCELでひと月ごとのの出勤報告書を作っています。 そこで、休日(土、日、祝)出勤手当てを支払われる日が何日あるかを自動表示させようとしています。 今のシートの構成は A列:日付(2008/9/1の形で入力し、「1」のように表示 A5:A35) B列:曜日(A列から参照し、表示形式でaaaとし「月」のように表示) C列:休日(仕方なく手入力で「休」と入れている) D列:休日出勤したか判定(=IF(OR((C5>0)*(E5>0)),"休出","")C列とE列とも入力された場合に休日出勤とし「休出」と表示) E列:出勤した日はその日の仕事内容を入力 D列の最下部で「休出」が何回あるかカウント(=COUNTIF(D5:D35,"休出")) 祝日は関数が無いので、祝日一覧を作り該当する日付から祝日を割り出すのは分かったのですが。 =IF(WEEKDAY(A5)=1,"休","")&IF(WEEKDAY(A5)=7,"休","") よろしくお願いします。

  • 出勤時間表の作成

    カレンダー(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・関数での回答をお願いします。

  • エクセルの関数を使った表の作り方について

    エクセル2003にて下記の様な表を作っています。 シート1  A     B   C   D    E   F 1名前 HP  攻撃  速さ  地形  地形補正 2ザク  1000  1500  2000  宇宙   500 3グフ  1500  2000  1000  地上   1000 4ドム  2000  1000  1500  水中   -500 シート2  A    B   C    D   E   F   G 1名前  HP  攻撃  速さ 宇宙  地上  水中 2ザク  1000 1500  2000  500  500  0 3グフ  1500  2000  1000  0   1000  0 4ドム  2000 1000  1500  1000  500  -500 5ジム  1500 1500  1500  500   0   500 6ヅダ  1000 1000  1500  1000  0   0 シート1のAにはシート2のA2~6にある名前をプルダウン形式で選べる様にしてあります。 シート1のAの名前を選択するとB・C・Dの数値がシート2から反映出来る様にvlookupで 作成しています。 問題はEとFで、Eにはシート2のE1・F1・G1から宇宙・地上・水中をプルダウンで選べる様に しており、これらを選択した際Fにシート2のE2:E6の数値が反映される様に作成したいのですが、 作り方がわかりません。 出来ればVLOOKUP等の関数式?を用いた作り方希望です。 宜しくお願い致します。

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

    エクセルで、月別でシートに分けて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 在庫管理をしたい

    Excelで簡単な在庫管理の表の作り方について質問します。 A,B,C列は入力後、E,F列にその時点での在庫量を表示させます。 商品が固定のものではなく、・・・H,I・・・X,Yと新たに出てきたときに E,F列に1個以上のものだけを表示させるにはどのような関数を入力 すればいいでしょうか? 説明が分かりにくいかもしれませんが、よろしくお願いします。     A     B     C     D     E     F 1  日付 商品名  数量      商品名 数量 2  10/1   A    10         A   *** 3  10/2   C    25         B    ** 4  10/5   D    15         C     * 5  10/8   B    20         ・    ・ 6  10/9   A    -5          ・    ・ 7    ・     ・     ・ 8    ・     ・     ・ 9    ・     ・     ・

専門家に質問してみよう