これからの季節に親子でハイキング! >>

同じ質問あるかもなのですが、発見できなかったので質問させていただきます。

会社で勤務表を作っているのですが、1ヶ月1シートを
使い、A列に日付・B列にやったこと(会議や資料作成等)・C列に開始時間・D列に
終了時間を記入します。
1ヶ月続けて書くと、日によっては会議にも出て営業も
行って資料も作って・・・となると、同じ日付がダーっと
続くことになります。

そこで平日休暇や土日祝日を除いたりして、1ヶ月で何日
勤務したかを計算するにはどのようにすればいいのか
教えてください。
つまり、A列の中に何種類のモノがあるか知りたいの
ですが、やり方が分かりません。

もう一つ、1ヶ月単位のシートですが、1週間毎に
会議は計何時間・・・というのを知りたいのですが、
イイ方法はあるでしょうか?
1ヶ月丸々の会議時間や、就労時間はDSUMで求める
ようにしているのですが、更に細かく、その1ヶ月の
内で1週間毎の集計を出したいです。
シートを1週間毎にすると、膨大な数になるので
できれば1ヶ月にシート1枚だと嬉しいです。

説明分かりにくいと思うのですが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>つまり、A列の中に何種類のモノがあるか知りたいの


>ですが、やり方が分かりません。
土日祝日は入力がないものとして
=SUMPRODOCT(1/COUNTIF($A$2:$A$100,$A$2:$A$100&""))

>その1ヶ月の内で1週間毎の集計を出したいです。
1週間の単位は月曜~金曜として
=SUMPRODUCT((INT((DAY($A$2:$A$100)-WEEKDAY($A$2:$A$100,3))/7)=[週])*NOT(ISERR(FIND("会議",$B$2:$B$100))))
※月曜日を週の初めとするので、[週]の部分次の数式のセルを参照してください。
第1週=ROW(A1)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2
第2週=ROW(A2)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2
第3週=ROW(A3)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2
第4週=ROW(A4)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2
第5週=ROW(A5)-(WEEKDAY(TEXT($A$2,"yyyy/mm")&"/01")<>2)*2
    • good
    • 1
この回答へのお礼

どうもありがとうございます!
SUMPRODOCTを使うんだろうなーって
とこまでは分かったのですが、エラーが出て
使いこなせませんでした。やってみます。
1週間の集計方法も、知らない関数(INT)が
ありますが勉強してみますね。
どうもありがとうございました。

お礼日時:2006/07/09 00:20

#1にも書いておられますが、質問があいまい。


>説明分かりにくいと思うのですが・・
というより、解決の為に何が必要かが整理されておらず、判っていないため、必要な項目の説明が、抜け落ちている。それを勉強して、資料そのものを、解決しやすい形に近付けることも必要。
エクセル以前にするべきこと考えるべきこと、表現すべきことが有るということ。
必要な条件は残し、必要でない煩雑さはカットした実例でも上げるのが判りやすいと思う。
>1ヶ月で何日勤務したかを
勤務した以外の日もA列に現れるのか。
○このシートにはA氏以外B氏、C氏・・の情報も入っているのか
それはどの列か
○土日・休日の日付もA列に現れるのか
>1ヶ月で何日勤務したかを
A氏は何日、B氏は何日、・・の別を出したいのか
>会議は計何時間
「会議」「資料作成」など要約した、それだけの文字列が、どこかの列ににあるのか
ーー
回答にも出ているように、ピボットが一番便利でしょう。
そのためには、入力の手間はかかるが、分類コードや要約文字列をデータとして、持つとかの工夫が必要かと思う。

この回答への補足

説明が分かりにくくてすみません。

補足しますと
1.この表には一人分しか入っていません。
2.土日祝日にも出勤した日があるし、また
  突発的に平日休んだ日もあるので、A列に
  入る日付=出勤日ということで、A列に
  何種類の日付が入るかをカウントできれば
  出勤日数が分かると思い、種類の数をカウント
  する関数が知りたかったんです。

補足日時:2006/07/09 00:11
    • good
    • 0

ピボットテーブルを使ってみたらどうでしょう?



E列に所要時間を記載します。
E2セルに
=D2-C2
と式をいれ、E2セルのフィルハンドルをダブルクリックします。

表内のどれかのセルを一つ選択して、「データ」-「ピボット~」を選択します。
「ピボットテーブル ウィザード」の3/3で新規のワークシートか既存のワークシートを選択できます。
既存のワークシートを選択して、表内の空いたセルを選択すればそこに作成されます。
H列あたりのセルを選択すれば、邪魔にならないでしょう。

行のフィールド~に「日付」を、列のフィールドに「仕事内容」をドラッグします。
データアイテムに「所要時間」をドラッグします。

>そこで平日休暇や土日祝日を除いたりして、1ヶ月で何日勤務したかを計算

意味が良く判らないのですが、この表にある日付はなんらかの仕事をしているのですから、
勤務しているはずですね。ピボットテーブルでは、日にちごとにまとめられていますから、
これの合計でよいと思うのですが・・・。
COUNTA関数で計算できると思います。

さて、所要時間が「データの個数」になっているかも知れません。
右クリックして、「フィールドの設定」で「集計の方法」を「合計」にします。
シリアル値が表示されますので、範囲指定して「書式」-「セル」の「表示形式」タブで
「分類」を「「時刻」にします。

「日付」欄を右クリックして、「グループとアウトラインの設定」-「グループ化」を選択します。
「単位」に「月」が選択されていると思います。クリックすると解除になります。「日」を選択します。
(日だけが反転した状態にします)
下の日数の欄を「7」にします。
開始日は元の表の最初の日付になっていますが、月曜日からの1週間にしたければ、
「開始日」を月曜日の日付にします。
今月であれば3日が月曜日ですので、「2006/7/3」にします。
このように週単位で集計されます。
<2006/7/3
2006/7/3 - 2006/7/9
2006/7/10 - 2006/7/16
2006/7/17 - 2006/7/20
    • good
    • 0
この回答へのお礼

ピポットテーブルなんて使ったことなかったので、
びっくりでした。
早速勉強して、やってみます。
どうもありがとうございました。

お礼日時:2006/07/09 00:11

>そこで平日休暇や土日祝日を除いたりして



土日であるかは、weekday関数で得られます。

平日休暇=有給休暇等のことですよね?
その情報は、どこに持っているのですか?

祝日の情報は、どこにどのようにして持っているのですか?

>A列の中に何種類のモノがあるか知りたい

有給や祝日の情報保持方法が分かりませんが、土日だけを除いた日数なら、作業用の列を作り、以下のような式を作り、sumで合計を求めたら日数が得られます。

先頭行・・・セルA2とすると
=IF(WEEKDAY(A2,2)>=6,0,1)

2行目以降は、下記をコピー
=IF(WEEKDAY(A3,2)>=6,0,IF(A2<A3,1,0))

>1週間毎に

月初、月末の週の扱いはどうするのですか?

もっと具体的に説明してくれないと、具体的な回答はできません。
    • good
    • 0
この回答へのお礼

土日を調べる関数があるなんて初めてしりました。
どうもありがとうございました。

お礼日時:2006/07/09 00:09

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcelでの勤務表の作り方

 エクセルで担当者別の勤務表を作りたいと考えてます。
 担当者は数十名いるのですが、いちいち担当者名や勤務時間を入力せずに、入力する部分にボタンをつけて選択する(クリックするだけで担当者名や就業時間のリストが出てくる)だけでOkという簡単なものにしたいと考えてます。
 以前、このような機能で作成された表が見たことあるのですが、作り方がわかりません。
アドバイスよろしくお願いします。

Aベストアンサー

データ→入力規則 のリスト のことでしょうか。
下記のURLを参考にしてみてください。

参考URL:http://www2.odn.ne.jp/excel/waza/validation.html

Qパーセンテージの出し方

パーセンテージの出し方をおしえてください

Aベストアンサー

主人公÷母体×100

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

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

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

介護施設に勤務しています。A~E(職員名とする)までの5人が勤務しているとします。今ここに、縦がA~E、横が月日のエクセルの表(表1とする)があるとします。
仮に6月1日はA,B,Cの3人が出勤で表の該当セルに○が入力されています。6月2日はB,D,Eが出勤で同様に○が入力されています。こんな感じで月末までの勤務表が出来ているとします。

ここで別のシートに「今日の出勤者」として当日の出勤者を表(表2)に出したいと思っています。
私が望んでいるのは、表1の希望の月日をクリック、もしくは入力すると、自動で表2のセルにその日の出勤者だけの名前が返せればいいのですが・・・。
本日の出勤者として本部に名前入りの表をあげないといけなく、これまでは表1から該当日の○を数えては、その職員名を手書きで書いて送っていました。この煩雑な作業を効率化したいと思っています。
よろしくご教授お願いいたします。

Aベストアンサー

日付をクリックした場合に実行する場合は以下のようなマクロを使用します。
使用した表と実行結果は画像の通りです。
このプログラムの場合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

日付をクリックした場合に実行する場合は以下のようなマクロを使用します。
使用した表と実行結果は画像の通りです。
このプログラムの場合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.Col...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング