- ベストアンサー
エクセルを使った作業分担表の作成方法
- エクセルを使った作業分担表の作成方法について教えてください。
- シフト表から作業分担表を自動転記する効率的な方法はありますか?
- エクセルを使って手書きでなく自動で作業分担表を作成したいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>INDIRECT関数の部分のやり方、考え方が理解できません。 私の回答の中で C2:=INDIRECT("Sheet1!R" & $B2 & "C" & $B$1,FALSE) という式を使っておりますが、この部分についてご説明いたします。 「$B2」:「木崎」という名前の書かれた行番号 「$B$1」:「作業分担表を作成する」日付けがある列番号 ですが、例えば、それぞれ「$B2 = 2」・「$B$1 = 14」とすると、「木崎」さんの「作業分担表を作成する」日付けの「出勤時間」は「Sheet1 の2行目14列目」にある、つまり「Sheet1!N2」にあるということになります。 「Sheet1!N2」に入力された値を参照するという場合、よく [ADDRESS 関数] を使って =INDIRECT(ADDRESS(2,14,4,TRUE,"Sheet1")) というような式を立てたりしますが、表現的に冗長な感じがしますし、行列番号をそのまま指定できた方が便利ですよね。 このような場合に [R1C1 形式] によって セル番地 を参照することができます。 [R1C1 形式] につきましては、 http://www.asahi-net.or.jp/~ef2o-inue/shiki/sub03_010_02.html あたりをご参考に。 で、今回の場合 =INDIRECT("Sheet1!2行目14列目") の様な感じにしたい訳ですから =INDIRECT("Sheet1!R2C14") とすればよいですね。 ここで、[INDIRECT 関数] の ヘルプ を見ると、 ---- ここから -------------------------------------------------- INDIRECT(参照文字列,参照形式) 参照形式に TRUE を指定するか省略すると、参照文字列には A1 形式のセル参照が入力されていると見なされます。 参照形式に FALSE を指定すると、参照文字列には R1C1 形式のセル参照が入力されていると見なされます。 ---- ここまで -------------------------------------------------- と出ておりますが、「参照文字列には R1C1 形式のセル参照」を入力しましたので、「参照形式に FALSE を指定」して =INDIRECT("Sheet1!R2C14",FALSE) としなければなりません。 話を元に戻しますが、「$B2 = 2」・「$B$1 = 14」ですので C2:=INDIRECT("Sheet1!R" & $B2 & "C" & $B$1,FALSE) となりました。 次に、「退勤時間」は「出勤時間」の右の列にありますので、「$B$1 = 14」に「1」を足して「$B$1+1」とすればよろしいから、 D2:=INDIRECT("Sheet1!R" & $B2 & "C" & $B$1+1,FALSE) となりました。 以上でいかがでしょうか?
その他の回答 (4)
- 135ok
- ベストアンサー率34% (26/75)
- DOUGLAS_
- ベストアンサー率74% (397/534)
#2 の DOUGLAS_ です。 >氏名は入力しなければならないということでしょうか >氏名入力も自動転記のような形にはならのでしょうか ん~。。。 普通に Sheet2 A2: =Sheet1!A2 みたいな感じで拾ってくればよいかと。。。 実は、その方が、それ以後の計算式がとても簡単になりますね。 この場合は、前回答の(2)が必要なくなります。 まぁ、順を追っての考え方をご説明しただけですので、後は、お好きなようにしていただければと存じますが。。。
- DOUGLAS_
- ベストアンサー率74% (397/534)
比較的簡単な作業かとは存じますが、これを文字でお伝えするのは、なかなか難しいですねぇ。 1)「画像添付にあるシフト表」が Sheet1 に、また、別のシート(ここでは Sheet2 とします)の A列 に「氏名」があるとします。 2)先ず、Sheet2 の A列 にある「氏名」を Sheet1 から検索する補助列を作ります。 たとえば、A2 の「氏名(木崎)」に対しては、 B2:=MATCH(A2,Sheet1!A:A,0) というような式で検索できますね。 ここで検索された数字は、Sheet1 で「木崎」という名前の書かれた行番号になります。 3)次に「作業分担表を作成する」日付けが Sheet1 のどの列にあるかを割り出します。 通例は、明日の「作業分担表を作成する」場合は Sheet2 のどこか、例えば A1 に A1:=DAY(TODAY()) + 1 などの式を置いておくはずですので、そのセルの値を B1:=MATCH(A1,Sheet1!2:2,0) のような式で、Sheet1 の「日付」の行から検索します。 4)上記(2)・(3)で割り出した「行番号」・「列番号」から「木崎」さんの「出勤時間」・「退勤時間」を検索することができますので、それを C2・D2 に転記して、これも補助列とします。 C2:=INDIRECT("Sheet1!R" & $B2 & "C" & $B$1,FALSE) D2:=INDIRECT("Sheet1!R" & $B2 & "C" & $B$1+1,FALSE) 5)以上で、A2 に「木崎」という名前が入っている場合、B2 に Sheet1 での「木崎」さんの行番号、C2 に当該日の「出勤時間」、D2 に「退勤時間」が入ります。 6)最後に、例えば、「9・10・11・12・13・14・15・16・17」という時間を現わす数字が Sheet2 の E1:M1 に入っているとすると、E2 に =IF(E$1<$C2,"",IF(E$1=$C2,"←",IF(E$1>$D2,"",IF(E$1=$D2,"→","ー")))) のような式を入れて、これを E2:M2 にコピーすれば OK です。 ※計算式等は、もっと スマート なものもあろうかと存じますが、考え方としては、以上のようなことが簡単かと存じます。
補足
長文でのご回答ありがとうございます。 感激しました。 ところでメールを拝見した感じだと、氏名は 入力しなければならないということでしょうか 氏名入力も自動転記のような形にはならのでしょうか 私の勘違いでありましたら申し訳ございません。
- Zi-co
- ベストアンサー率46% (23/49)
シフト表の数字は何を示しているのでしょう? そこから↓こんな感じにしたいと言うことでしょうか?
補足
説明不足で申し訳ございません。 画像のシフト表の数字(9、21等)は 出勤時間と退勤時間が表示されています。 9、21なら9時 出勤で21時 退勤ということです それを元に毎日 作業分担表(一日の各個人の仕事分担)を作成しています。 質問欄に記入しているようなものです。(簡易すぎて申し訳ございません) 縦に氏名、横に出勤時間と退勤時間を矢印で表記し、 その矢印の下にやるその時間にやる仕事を 記載するという表です。 氏名と出退勤を画像のシフト表から 分担表〈質問欄に簡易に作成) に自動転記できるやり方を探しています
補足
ご返事いただきましてありがとうございます。 後 一点確認したいことがあるのですがINDIRECT関数 の部分のやり方、考え方が私の知識不足のため 理解できません。 そのあたりをもう少し教えていただけないでしょうか? 私の知識不足で申し訳ありませんが お時間ありましたらお願いいたします。