• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数などで、なんとかなるのでしょうか?)

座席表を効率的に作成する方法は?

このQ&Aのポイント
  • 関数などで作成する方法はあるのか?
  • 座席表作成の条件とは?
  • 7月の座席表作成について

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 面白そうなのでやりかけてみたのですが・・・ ギブアップです! 条件の(2)・(3)が解消できませんでした。 ↓の画像(小さすぎて見づらいと思いますので、画面を拡大してみてください)で同じ列にならないようにやろうと作業用の列を作っていますが、結果としてO列は無視してください。 とりあえず過去3か月の最前列の人は今月は最前列にならない方法です。 M列に全員の氏名一覧を作っておきます。 N3セルに =OFFSET($A$3,,ROW(A1)-1) として5行ほどオートフィルでコピー! N8セルは =OFFSET($A$10,,ROW(A1)-1) としてこれも5行ほどコピー N13セルも =OFFSET($A$17,,ROW(A1)-1) として5行ほどコピー! P3セルは =IF(COUNTIF($N$3:$N$17,M3),"",RAND()) Q3セルは =IF(COUNTIF($G$3:$K$3,M3),"",RAND()) R3セルは =IF(COUNTIF($G$3:$K$6,M3),"",RAND()) として、P3~R3セルを範囲指定 → R3セルのフィルハンドルで氏名の最終行までオートフィルでコピー! そして今月のG3セルに =INDEX($M$3:$M$25,MATCH(SMALL($P$3:$P$25,COLUMN(A1)),$P$3:$P$25,0)) という数式を入れK3セルまでコピー G4セルに =INDEX($M$3:$M$25,MATCH(SMALL($Q$3:$Q$25,(ROW(A1)-1)*5+COLUMN(A1)),$Q$3:$Q$25,0)) としてK4セルまでコピー → そのままK6まで下へコピー! 最後にH7セルに =INDEX($M$3:$M$25,MATCH(SMALL($R$3:$R$25,COLUMN(A1)),$R$3:$R$25,0)) として3列右までコピーすると画像のような感じになります。 これでF9キーを押すたびにランダムに席順が表示されると思います。 ただし、前述のように最前列の重複はないと思いますが 列方向・隣同士は考慮していませんので 確認しながらF9キーを押してみてください。 以上、かなり強引な方法ですが少しでも時間短縮の手助けになれば良いのですが・・・m(_ _)m

p1_1q
質問者

お礼

こんばんは! (^ワ^)tom04さん☆ おもしろそう って(驚^□^) 達人は、さすがです♪お疲れのところ、すみません。 毎回、わがままな、つたない説明の 面倒な質問を 快く、長い時間をかけて解いてくださって・・・・・(;_;) ほんとうに、ありがとうございます。 作って下さった表をみて、『なるほど~!・・・そういう方法で!』 と、また 感動してしまいました。 難しくて出来ないと思っていたので、 今まで、何時間もかけていた作業が、一瞬で・・・なんて夢のようです(^0^) 初めて知った関数が沢山なので、今から表を作り、勉強してきます。 心 優しき達人・・・今日も、ありがとうございました。

その他の回答 (1)

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

手作業で何とかなるのなら、そのままの方法で続けることをお奨めします。 理由は、質問文にない条件が加わった時、質問者さんでは 【 絶 対 に 】 対処できないと考えられるからです。 それでもアドバイス。 一度に処理するのではなく、手作業でやっていることを一つずつ処理してみましょう。 例えば、(1)の条件  過去3ヶ月間に一番前の列になった人は2列目以降にする …なら、対象の人を2列目以降に並べるため書き出す(他のセルやシートに書き出す事を関数で行う) と言った具合です。 この処理を自力(他の人のアドバイスを理解して行っても良し)でできないなら、本当に手作業で行うようにしましょう。 正直、無駄な労力を使うことになります。

p1_1q
質問者

お礼

早速のアドバイス、ありがとうございます。 その方法で、今から、ひとつずつ、やってみます。

関連するQ&A