• ベストアンサー

エクセル:関数を使ってグループ分け

それらしい文言も調べてみましたが、応用できるほど知識がなかったため質問させていただきます。 30人~40人(毎月可変)に4つの日付を割り振るという表を作りたいと思っています。 I36に書かれている日付を上から順番に、G36に書かれた人数(毎月7,8程)ずつ順番に割り振りたいです。 月4回の勤務表のようなものです。 セルの位置はどこでもよいのですが、レイアウトだけはこのように作りたいと思っています。 関数だけでなんとかなりますでしょうか。 説明下手で申し訳ないです。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>G36が3であれば補足の通り、2であれば(中略)となるようにしたいのです。  重ね重ね御質問内容を勘違いしてしまい誠に申し訳御座いません。  その場合は次の様な関数になります。 =IF(OR($B36="",SUM($G$36)<1,INT(SUM($G$36))<>SUM($G$36)),"",IFERROR(SMALL($I$36:INDEX($I:$I,MATCH(9E+307,$I:$I)),ROUNDUP((COUNTIF($B$36:INDEX($B:$B,MATCH(9E+307,$A:$A)),"*?")*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?"))/$G$36,0)),"")) 或いは =IF(OR($B36="",SUM($G$36)<1,INT(SUM($G$36))<>SUM($G$36)),"",IFERROR(SMALL($I$36:INDEX($I:$I,MATCH(9E+307,$I:$I)),ROUNDUP(((COUNTIF($B:$B,"*?")-COUNTIF($B$1:$B$35,"*?"))*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?"))/$G$36,0)),""))

FJTM006
質問者

お礼

重ね重ねお手数おかけしました。 望みの通りのものができ、本当に助かりました。ありがとうございます。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>式を入れてみたのですが、日付の表示もできず  申し訳御座いません。動作確認も兼ねてExcel Book上にno、name、日付等のデータを実際に入力してから関数を作って行った際に、日付を入力する列をI列にしなければならない所を、誤ってH列に日付を入力してしまい、その状態のままで関数を作っておりました。  正しくは次の様な関数になります。 =IF($B36="","",IFERROR(SMALL($I$36:INDEX($I:$I,MATCH(9E+307,$I:$I)),COUNTIF($B$36:INDEX($B:$B,MATCH(9E+307,$A:$A)),"*?")*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?")),"")) 或いは =IF($B36="","",IFERROR(SMALL($I$36:INDEX($I:$I,MATCH(9E+307,$I:$I)),(COUNTIF($B:$B,"*?")-COUNTIF($B$1:$B$35,"*?"))*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?")),""))

FJTM006
質問者

補足

何度も回答ありがとうございます。 順番に並べることはできましたが、G36の数字をどう組み込めば良いのかわからず、再度質問させてください。 G36が3であれば補足の通り、2であれば no name 1  2    3   4 1 あ 1月2日 1月4日 1月8日 1月11日 2 い 1月2日 1月4日 1月8日 1月11日 3 う 1月3日 1月7日 1月10日 1月12日 4 え 1月3日 1月7日 1月10日 1月12日 となるようにしたいのです。 何度もお手数おかけして申し訳ありません。 よろしくお願いいたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 まず、C36セルに次の2つの関数の内の何れか1つを入力して下さい。 =IF($B36="","",IFERROR(SMALL($H$36:INDEX($H:$H,MATCH(9E+307,$H:$H)),COUNTIF($B$36:INDEX($B:$B,MATCH(9E+307,$A:$A)),"*?")*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?")),"")) 或いは =IF($B36="","",IFERROR(SMALL($H$36:INDEX($H:$H,MATCH(9E+307,$H:$H)),(COUNTIF($B:$B,"*?")-COUNTIF($B$1:$B$35,"*?"))*(COLUMNS($C:C)-1)+COUNTIF($B$36:INDEX($B:$B,ROW()),"*?")),""))  次に、C36セルの書式設定を[日付]に設定して下さい。  次に、C36セルをコピーして、D36~F36のセル範囲に貼り付けて下さい。  次に、C36~F36のセル範囲をコピーして、C列~F列の37行目以下に貼り付けて下さい。  以上です。

FJTM006
質問者

補足

式を入れてみたのですが、日付の表示もできず、どのように改変すれば良いかもわからなかったので、再度質問させていただきます。 A35のnoから以下の通りになっています。 I36~日付が並んでおり、G36に入っている数字ずつ割り振るような表を作ろうと思っています。 I36から1月2日、3日、4日、7日、8日、10日と入っているとして G36が3の場合、以下のように自動で記入してくれるようにしたいです。 no name 1  2    3   4 1 あ 1月2日 1月3日  1月4日 1月8日 2 い  1月2日 1月3日 1月7日 1月8日 3 う  1月2日 1月4日 1月7日 1月8日 4 え 1月3日 1月4日 1月7日 1月10日 お早い回答をいただけましたが、私の説明不足のようでお手数だけおかけしてしまい申し訳ありません。

関連するQ&A

  • Excelの関数について教えてください。。

    単純に引き算をしたいだけなのですが、 引く順番と言いますか、優先順位があります。 これを関数で組むことができれば大変助かります。 A300、B1,500、C500、D10,000 とありましたら、 このA、B、Cの合計から毎回15,000を引かなくてはなりません。 ※A、B、C、Dは毎月変わります。 ですが、15,000にA、B、Cの合計が満たない場合は、足りない分をDから引きます。 これを関数で組むことは可能でしょうか?? 関数を組みたいのは黄色のセルです。 説明が下手で申し訳ございません。。 どうぞよろしくお願いいたします。

  • Excelの関数について教えてください。

    いつもありがとうございます。 Excelの関数について質問します。 日付の入った表があります。 毎日データを入力します。 次に別のシートで毎月のデータを管理したいんです。 毎月1日のデータを毎月のデータのシートに移したいんです。 日付だけならDAY関数で取り出せるんですが・・・ ご指導の程、よろしくお願い致します。

  • excel 関数を探しています

    エクセルを使っていて、縦に数字が 0 1 空きセル 2 3 4 空きセル ・ ・ のように続くことがあり(空きセルの位置はランダムです)、数字が何連続したのかということが知りたく、を関数でぱっと出せないのかと思っております。 どなたかご存じの方がいらっしゃいましたら教えていただきたいです。言語化が下手ですみません。

  • エクセル関数についての質問

    いつもお世話になっています。 本日は添付いたしましたエクセルの表を作りたいと思い質問をさせて頂きました。 添付した表の説明になりますが、 黄色で色付けしているセルはそれぞれA~Dさんの出勤時間になります。 分かりにくいですがAさんの83013で8:30~13:00を、 Bさんの12017で12:00~17:00の勤務時間を表しています。 最初の数字3ケタで出勤時間を、残りの2ケタで退勤時間を表しています。 (最初が3ケタなのは30分からの出勤があり、その表記のためになっています。) 今回教えて頂きたいのが水色のセルの関数になります。 水色のセルにはその左に書いてある時間帯で何人働いているのかを表したいと思っています。 countifの関数で試してみたのですが退勤時間を過ぎても人数が減らず どうにもできなくなってしまいました。 説明下手で申し訳ございませんが、方法がございましたらよろしくお願い致します。

  • エクセル関数

    エクセルで表のA列に1年分の日付を入力してあります。(A2からA366まで) 特定のセル(A1)をクリックすると、今日の日付のセルにジャンプできるような 関数はありますか?よろしくお願いいたします。

  • エクセル関数について

    エクセルの関数について質問です。 例えば、 C1セルには、数値データが入っています。 A2~A10セルに日付データ。 B2~B10セルに数値データが入っている表があります。 B11セルの値に、(C1データ)-(A列の最新日付セルと同行のB列データ)を表示させたい場合、 どのような関数を作成すればよいですか。 宜しくお願いします。

  • Excelの関数です・・

    出勤簿からを別表を作成しています。 その表で、名前が入力するセル(A1:A10)の列から 関数のCOUNTA(A1:A10)で合計人数を求めたいのですが、 A1:A10のセルのうちA1:A5には別の表からリンクした数式が入っています。A1:A5まで(リンク元の表は空白になっている場合)空白でも合計人数のセルに「5」となります。リンク元が空白の場合、表の合計人数が「0」になる方法がわかりません・・・分かる方、どうか教えてください。よろしくお願いいたします。

  • エクセル VLOOP関数

    エクセル初心者です。 エクセル2003を練習中なのですが 今、下画像の上段のようなデータのシートを作成しました。 シートは左の日付を3行セル結合しています。 このシートのデータを、画像下段の表のように 関数で表引きしたいのです。 下段の表は、左の日付を2行セル結合しています。 関数(VLOOPUP関数とINDEX関数)の使い方が、今一つ分かりませんでした。 どんな数式を入力していけばいいのでしょうか。 お願いします。

  • エクセルと日付の関数

    エクセルと日付の関数 エクセル2007で以下のような表を作成しています。 処理日(現在の日付)が例えば3月2日であるとき、以下の表のA2セルに 3月の前月、つまり2月の日付を入力する関数はあるのでしょうか。 初心者で申し訳ありませんが、よろしくお願いします。

  • エクセルの関数(IF関数?)について教えてください

    excelの関数についてわからず、困っています。 どのような関数を入れればよいのか、ご教授お願いいたします。   sheet1に下記のような表があり、 No 項目名 日付 1 りんご 11/1 2 バナナ  3 いちご  sheet2に No 項目名 日付 7 バナナ  8 りんご  9 パイン  という表があるとします。 sheet1に日付を入力した時に(りんごの右の11/1) sheet1の項目名と一致するsheet2の項目名の右のセルに同じ日付が入るようにさせたいです。 どのような関数を入れたらよいでしょうか。   よろしくお願いいたします。  

専門家に質問してみよう