[[20090225221401]] 『一年分の当番表管理』(庶務) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一年分の当番表管理』(庶務)
 当番表を作成して、一年間管理して累計を出したいのですがお願いします。
 シートが当番表と管理表の2枚あります。

  当番のシート
     A   B     C       D      E   
 1 日付 内容  時間   当番者  当番者
 2  3/1  --      --        名前1  名前2
 3             名前3  名前4  
 4 3/2  --      --        名前5  名前6
 5             名前7  名前8 
 
 管理のシート
      A    B    C     D     E      F     G     H    I      J    ---  Z  
 1  日付 氏名 名前1 名前2 名前3 名前4 名前5 名前6 名前7 名前8 ---名前-
 2        累計   1       1      1      1      1      1      1     1
 3 3/1  --     ●   ●
 4               ●   ●     
 5  3/2  --                                 ●   ●
 6                             ●   ●
〜〜                      
 ●が当番の印です。管理シートに●が付いた人が当番のシートの当番者欄に
 名前が出るようにしたいのですがどのようにしたら良いか分かりません。
 説明が上手く出来ませんが宜しくお願いします。

 当番のシートのD2セルに
=IF(COUNTA(管理!$C3:$Z3)<COLUMN(A1),"",INDEX(管理!$C$1:$Z$1,
LARGE(INDEX((管理!$C3:$Z3="●")*COLUMN(管理!$C3:$Z3),),3-COLUMN(A2))-2))
 ↑2行で一つの式です。

 HANAさん
 有難うございます。
 当番が二人の時はいいのですが一人の時や他に複数いる場合は
 のどようにすればよろしいですか?
                             (庶務)

 数式を変更すれば良いです。^^
=IF(COUNTA(管理!$C3:$Z3)<COLUMN(A1),"",INDEX(管理!$C$1:$Z$1,
SMALL(INDEX((管理!$C3:$Z3<>"●")*99+COLUMN(管理!$C3:$Z3),),COLUMN(A1))-2))

 検証不足があるかもしれませんので
 注意深い確認をお願いします。

 (HANA)

 HANAさん
 大変有難うございました。また、何か有りましたらお願いします。
 (庶務)

 HANAさん
 何度もすいません。
 セルの位置を変えると違う名前が出てしまいます。
 当番H7:I756に当番者
 管理F2:AG2に当番者の名前
 F7:AG756に●を入力するセル
 でやりたいのですが数式を変える場所がわかりません。(庶務)

 ↓やってみて下さい。
=IF(COUNTA(管理!$F7:$AG7)<COLUMN(A1),"",INDEX(管理!$F$2:$AG$2,
SMALL(INDEX((管理!$F7:$AG7<>"●")*99+COLUMN($A7:$AB7),),COLUMN(A1))))

 (HANA)

 何度も有難うございます。出来ました。あと、
 COLUMN(A1)と99+COLUMN($A6:$AB67)は、何処を指しているのですか?
  (庶務)


 COLUMN(A1) は 1 です。
 COLUMN($A6:$AB67) は 1,2,3,4・・・,27,28 です。
 「99」と言う数字は テキトウな数字です。
 今回は A:AB = 1〜28 迄を足し算するので
 有効な最小値は 28 です。

 28番目のみに●がついていた場合
 1〜27番目までは 99 + ○番目
 最後の28番目のみ 28 になって
 SMALL( {100,101,102・・・,126,28} , 1)=28
 が取り出せます。                   ~~ここが COLUMN(A1) = 1

 例えば、1番目と28番目に●がついていたら
 SMALL( { 1 ,101,102・・・,126,28} , 1)= 1
 SMALL( { 1 ,101,102・・・,126,28} , 2)=28
 の二つが取り出せます。             ~~~横に一つドラッグすると COLUMN(B1)=2

 おや、COLUMN関数の引数に指定した行番号が揃ってないですね。
 列番号を得る関数で、行番号は関係なのですが 見栄えが悪いので
 揃えておいて頂ければと思います。
 COLUMN(A1)→COLUMN(A7)

 (HANA)

 丁寧に有難うございました。
 また、何か有りましたらお願いします。
 (庶務)


 すいませんが、追加で教えて頂きたいのですがお願いします。
 当番のシートを万年カレンダーにして、
 年と月を変えて当番者を表示させるにはどのようにすればよろしいですか。

  当番のシート
     A   B     C       D      E   
 1
 2 
 3  2009          3
 4 
 5
 6 日付 内容  時間   当番者  当番者
 7 3/1  --      --        名前1  名前2
 8                        名前3  名前4                   
 9 3/2  --      --        名前5  名前6
 10                       名前7  名前8

             
 

 管理のシート

      E    F   H    I    J     K      L      M     N    O      P   ---  Z 

 2  2009   3
 〜
 5  日付  氏名 名前1 名前2 名前3 名前4 名前5 名前6 名前7 名前8 ---名前-
 6         累計   1       1      1      1      1      1      1     1
 7 3/1   --     ●   ●
 8               ●   ●     
 9 3/2  --                                 ●   ●
 10                             ●   ●
 〜

 内容は同じなのですが、当番シートを万年カレンダーに変えました。
 説明が下手ですがよろしくお願いします。(庶務)

   


 こんにちは。かみちゃん です。

 横から失礼します。

 > 当番のシートを万年カレンダーにして、年と月を変えて当番者を表示させる

 ご質問は、万年カレンダーの作り方ですか?
 当番者が自動的に変わる方法ですか?
 今回、スレッドの先頭から、初めて読み返してみて、サンプルファイルを作ってみましたが、
 セル範囲をずらすことで数式が自動的に変わりますね。
 当番のシートの D7セル の数式は、

 =IF(COUNTA(管理!$J7:$AK7)<COLUMN(A1),"",INDEX(管理!$J$5:$AK$5,
SMALL(INDEX((管理!$J7:$AK7<>"●")*99+COLUMN($A6:$AB6),),COLUMN(A1))))
↑2行で一つの式です。

 となっています。

 なお、万年カレンダーの作り方は、
 「当番のシート」の A7セル の数式を =DATE(A3,C3,1) A9セル の数式を =A7+1
 「管理のシート」の E2セル の数式を =当番!A3、F2セル の数式を =当番!C3 として、
 「当番のシート」の A3セル に 年 、C3セル に 月 を入れることでできると思います。

 (かみちゃん)
 2009-04-19 13:52

 当番者が自動的に変わる方法です。

 万年カレンダーの作成ではなく、管理シートで入れた●を当番シートで名前に変える
 方法です。今までは、両方一年分のカレンダーでしたが当番のほうを万年にかえ
 管理シートに●が付いた人が当番のシートの当番者欄に名前が出るようにして、
 月を変えた時に管理の月、日と同じにでるようにしたいのですが、説明が下手ですいません。

  (庶務)


 こんにちは。かみちゃん です。

 > 月を変えた時に管理の月、日と同じにでるようにしたい

 「管理の月と日と同じに出る」とはどういう意味ですか?
 「管理のシート」が月別にあるということですか?
 それとも、何ヶ月分も下方向に入力してあるということですか?

 2009-04-19 13:52
 で提示した数式(セル位置だけが変わっているだけで何も変わっていませんが)では、何が不都合が
 うあるのでしょうか?

 (かみちゃん)
 2009-04-19 16:25

 始めに説明してあると思いますが、管理シートのカレンダーは縦に一年分作成されています。
 当番も一年分でしたが万年に変えて月を変えて管理の月日に入っている●が名前で出るようにしたいのです。(庶務)

 おっと、質問者さんと衝突してしまいましたが。。。

 確認ですが
 >今までは、両方一年分のカレンダーでしたが当番のほうを万年にかえ
 つまり、管理のシートは変わらず1年分のカレンダーのままで
 その中から、当番シートの年月を確認して、一致データを
 変換する必要がある

 という事ですか?

 ご提示の管理のシートサンプルデータは E2に年、F2に月があり
 こちらもひと月ごとのデータしか入っていないように見えますが。

 (HANA)

 こんにちは。かみちゃん です。

 ずっと、対応されてきたHANAさんが登場されたので、もしかしたら、私は控えたほうがいいのかもしれませんが、

 > 始めに説明してあると思いますが、管理シートのカレンダーは縦に一年分作成されています。

 ちょっと確認したいのですが、どこでそのような説明をされているのでしょうか?
 私の読解力不足だと思いますが、教えていただけないでしょうか?

 > 当番シートを万年カレンダーに変えました。

 だけでは、「管理シートのカレンダーは縦に一年分作成されている」とは理解できないのですが・・・

 ちなみに、管理シートのE2セル、F2セルは、万年カレンダーの開始年月ということでしょうか?
 一年分ということは、管理シートの7行目を開始として、735行または、737行まで日付が入っていると
 いうことでしょうか?

 (かみちゃん)
 2009-04-19 17:20


 To,かみちゃんさん

 早い解決につながるのなら、私は気にしませんよ。
 ただ、まぜっかえすのなら、やめて下さい。

 ちなみに
 >ちょっと確認したいのですが、どこでそのような説明をされているのでしょうか?
 私は、庶務さんの書き込みの 引用した部分から
 そのように推測しましたが。

 庶務さんが言っておられる
 >始めに説明してあると思いますが
 は、一番最初の
 >当番表を作成して、一年間管理して
 の部分の事かもしれませんね。
 (ここからは、ちょっと推測しにくいですが・・・。)

 まぁ、正確なデータの配置や情報は欲しいところですね。
 でないとまた
 >セルの位置を変えると違う名前が出てしまいます。
 >・・・(中略)・・・
 >でやりたいのですが数式を変える場所がわかりません。
 等になりかねませんので。

 (HANA)

 こんにちは。かみちゃん です。

 To. HANAさん

 > まぜっかえすのなら、やめて下さい。

 何を根拠に「まぜっかえす」とおっしゃっているのかわかりませんが、
 そのようなつもりは、全くありませんし、そのような権利は私にはありません。

 私は、常に「早い解決につながるなら」の思いだけですし、いろいろな方法を提案されると、
 質問者の方もお困りになるでしょうから、HANAさんご提案のものをベースで考えてきました。
 もちろん、自分の勉強にもなりますから。

 ただ、数式の意味は、分解してもさっぱり理解できていませんし、HANAさんが対応される限り、
 お邪魔になってはいけませんので、静観させていただこうと思います。
 その間に、INDEX関数とSMALL関数の意味を時間の許す限り、勉強していきたいと思います。

 たぶん今回の場合は、MATCH関数で日付の位置を検索して、
   管理!$J7:$AK7
 を調整することで、できるのではないかと思っています。

 >> 始めに説明してあると思いますが
 > は、一番最初の
 >> 当番表を作成して、一年間管理して
 > の部分の事かもしれませんね。

 なるほど。そこですか・・・ここの掲示板は、発言時間がわかりませんので、わかりませんでした。
 でも、一番最初といえば、一番最初でしたね。

 では、HANAさん、後は、よろしくお願いします。

 (かみちゃん)
 2009-04-19 17:48


 ----
 説明が上手く出来なくてご迷惑おかけします。

 管理シートのE2に年、F2に月、(E6-E7)〜(E736-E737)に一年分の日、二行で(E6-E7)で一日です
             I3-AJ3に名前、I6:AJ737に当番日に●
 当番シートのA3に年、C3に月、(A7-A8)〜(A67-A68)に日、二行で(A7-A8)で一日です。
             G7:H68に管理シートに●が付いた人が当番者欄に名前で表示
 管理シートに●で入力して当番シートに名前で表示。
 管理は、縦に一年。当番は、万年。当番は月を変えて管理の日付と同じ物を一月ずつ見たいのです。
 よろしくお願いします。(庶務)


 To,かみちゃんさん

 私も一番最初の書き込みでは、一年分のカレンダーとは思いませんでした。
 >今までは、両方一年分のカレンダーでしたが当番のほうを万年にかえ
 を読んでからです。

 >いろいろな方法を提案されると、
 >質問者の方もお困りになるでしょうから、
 >HANAさんご提案のものをベースで考えてきました。
 同じような違う数式や、コードが並ぶのも
 混乱のもとだと思いますよ。

 どれを誰が作ったものなのか分かりにくくなりますし
 片方だけ試して、両方試した気になるかもしれません。

 確かに、考えておられるように 検索して範囲を変えれば
 数式でも対応可能かもしれません。

 しかし、こうなると マクロで処理をした方が良いかもしれません。
 そうなると、かみちゃんさんの出番だと思います。

 (HANA)

 庶務さんから 詳しいレイアウトのご説明があったので
 数式でも考えてみますが。。。

 (HANA)

 こんにちは。かみちゃん です。

 > マクロで処理をした方が良いかもしれません。

 私なら、そうしますが、あえて今、提案はいたしません。
 質問者さんが興味を持たれるようであれば、考えてみたいとは思います。

 > 同じような違う数式や、コードが並ぶのも
 > 混乱のもとだと思いますよ。

 たしかにそうですね。
 ただ、申しわけありませんが、勉強してみたので、書かせていただきます。
 > たぶん今回の場合は、MATCH関数で日付の位置を検索して、
 >  管理!$J7:$AK7
 > を調整することで、できる

 D7セルの数式の
   管理!$J7:$AK7
 の部分を
   OFFSET(管理!$J$1:$AK$1,MATCH($A7,管理!$E:$E,0)-1,0)
               ^^^^^^^^^^       ^^^
 D8セルの数式の
   管理!$J8:$AK8
 の部分を
   OFFSET(管理!$J$2:$AK$2,MATCH($A7,管理!$E:$E,0)-1,0)
               ^^^^^^^^^^       ^^^
 とすれば、できるようです。

 あとは、本当にお邪魔になりそうなので、失礼します。

 (かみちゃん)
 2009-04-19 18:17


 マクロには興味があるのですが、マクロは全然分からないので、今回は数式でお願いします。
 (庶務)

 こんにちは。かみちゃん です。

 > 今回は数式でお願いします。

 HANAさんからコメントがあるまでのつなぎのつもりで、
 2009-04-19 18:17
 にて、私なりの修正案を提案させていただきました。

 (かみちゃん)
 2009-04-19 18:28


 かみちゃんさんが載せておられる式で出来ないのですか?

 既にかみちゃんさんからの回答がついてますので、
 今更考えようとは思いませんが。

 (HANA)

 管理シートのE2に年、F2に月、(E6-E7)〜(E736-E737)に一年分の日、二行で(E6-E7)で一日です
             I3-AJ3に名前、I6:AJ737に当番日に●
 当番シートのA3に年、C3に月、(A7-A8)〜(A67-A68)に日、二行で(A7-A8)で一日です。
             G7:H68に管理シートに●が付いた人が当番者欄に名前で表示
 管理シートに●で入力して当番シートに名前で表示。

 G7に =IF(COUNTA(管理!$I6:$AJ6)<COLUMN(A7),"",INDEX(管理!$I$3:$AJ$3,SMALL(INDEX((管理!$I6:$AJ6<>"●")*99+COLUMN($A6:$AB67),),COLUMN(A7))))
 H7に =IF(COUNTA(管理!$I6:$AJ6)<COLUMN(B7),"",INDEX(管理!$I$3:$AJ$3,SMALL(INDEX((管理!$I6:$AJ6<>"●")*99+COLUMN($A6:$AB67),),COLUMN(B7))))
 と、今は入っていますがOFFSET(管理!$J$1:$AK$1,MATCH($A7,管理!$E:$E,0)-1,0)をどのように
 入力すればよいか分かりません。(庶務)


 こんにちは。かみちゃん です。

 静観しておいたほうがいいのかもしれませんが、私が修正提案した数式をお使いになろうとされている
 ようなので、コメントさせていただきます。

 > 今は入っていますがOFFSET(管理!$J$1:$AK$1,MATCH($A7,管理!$E:$E,0)-1,0)をどのように
 > 入力すればよいか分かりません。

 =IF(COUNTA(管理!$I6:$AJ6)<COLUMN(A7),"",INDEX(管理!$I$3:$AJ$3,
            ^^^^^^^^^^^^^
   SMALL(INDEX((管理!$I6:$AJ6<>"●")*99+COLUMN($A6:$AB67),),COLUMN(A7))))
                ^^^^^^^^^^^^^

 上記の ^^^^ の部分を
 OFFSET(管理!$J$1:$AK$1,MATCH($A7,管理!$E:$E,0)-1,0)
 としてください。

 また、H7セルは、G7セルをコピーすればいいのですが、
 一日の2段目のセルでる、G8セルは、G7セルの数式をコピーしたあと、
 OFFSET(管理!$J$1:$AK$1,MATCH($A8,管理!$E:$E,0)-1,0)
             ^^^^^^^^^^       ^^^
 となっていると思いますので、
 OFFSET(管理!$J$2:$AK$2,MATCH($A7,管理!$E:$E,0)-1,0)
             ^^^^^^^^^^       ^^^
 に修正してください。

 一応、修正後の数式です。
 G7セル
 =IF(COUNTA(OFFSET(管理!$I$1:$AJ$1,MATCH($A7,管理!$E:$E,0)-1,0))<COLUMN(A7),"",INDEX(管理!$I$3:$AJ$3,
SMALL(INDEX((OFFSET(管理!$I$1:$AJ$1,MATCH($A7,管理!$E:$E,0)-1,0)<>"●")*99+COLUMN($A6:$AB67),),COLUMN(A7))))

 G8セル
 =IF(COUNTA(OFFSET(管理!$I$2:$AJ$2,MATCH($A7,管理!$E:$E,0)-1,0))<COLUMN(A7),"",INDEX(管理!$I$3:$AJ$3,
SMALL(INDEX((OFFSET(管理!$I$2:$AJ$2,MATCH($A7,管理!$E:$E,0)-1,0)<>"●")*99+COLUMN($A7:$AB68),),COLUMN(A7))))

 ↑は、いずれも2行で一つの式です。

 H7、H8セル9行目以降は、G7:G8セルをコピーすればいいです。

 こちらでも、サンプルファイルを作って、確認してあります。

 (かみちゃん)
 2009-04-19 21:49

  (かみちゃん)さん
 返事が遅れてすいません。
 完璧です!出来ました、大変お世話になりました。
 ありがとうございます。(庶務)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.