• 締切済み

エクセルよる数の振り分け・・・

 例えば、ここに郵便配達員が10人いるとします。この10人には、それぞれ配達地区を与え仕事をしてもらうことになった。  ところが、その配達地区は50地区もあり、それぞれ地区ごとで配達数はばらばらです。  結論としては、この10人に"配達数"が平等になるように配達地区を分けたいのです。  そこで今、その地区毎の配達数がエクセルにて集計されています。例えば次のように…  A1     B1     C1 地区番号  地区名  配達数 (1~50)          ~~~~~~~~~~~~~~            A52     B52    C52  空欄    空欄   配達数合計  A53     B53    C53  空欄    空欄   平均配達数(C51/10人)  このような場合において、10人平等に担当地区を振り分ける事ってできるのでしょうか?^_^; もし、よい方法があれば、ぜひそのお知恵をお貸しくださいm(__)m  ちなみに私、関数は得意なのですが…BVAの知識はほとんどありません。  皆さん!ぜひ!ぜひ!よろしくお願いします!! m(__)m

みんなの回答

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.4

その実際のデータ(配達数50件)を教えてほしいのです。 そうでないとソフトの改良する場所が分かりません。 できれば、どういう結果になればいいかも教えてください。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.3

ソフトのバージョンアップです。(結果を教えてください) それから、実際のデータと理想的な振り分け結果を教えてください。 Dim suryo(10) As Integer Dim chiku(10) As String For I = 1 To 10 suryo(I) = suryo(I) + Cells(52 - I, 3) chiku(I) = chiku(I) & " " & Cells(52 - I, 2) Next GYO = 41 Do Until GYO < 2 SAISHO = suryo(1) SI = 1 For I = 1 To 10 If SAISHO > suryo(I) Then SAISHO = suryo(I) SI = I End If Next suryo(SI) = suryo(SI) + Cells(GYO, 3) chiku(SI) = chiku(SI) & " " & Cells(GYO, 2) GYO = GYO - 1 Loop For I = 1 To 10 Cells(I, 4) = suryo(I) Cells(I, 5) = chiku(I) Next

seamonkey
質問者

お礼

やっぱり結果は同じでした… 10人それぞれに、5地区が振り分けられる結果となって、配達数にそれぞればらつきがでてしまいます。 配達地区は50あるのですが、地区毎で配達数にばらつきがあり、1300件だったり、200件だったり、時には3~4件だったりするんです。そして、各々地区の配達数を全部足したものが総配達数であり、それを10人で割った数が1人当たりの平均配達数ということになります。 つまり、1人1人が平均配達数になるように、地区を割り振りたいのです… 例えばA列に地区名、B列に配達数が100,500,420,,, と入っていて、その配達数の合計が20000件です。それを10人で割ると、1人当たり2000件です。 10人それぞれが、約2000件の配達数を持つように、担当地区を振り分けたいのです。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

地区を固定しないマクロを作ってみました。 サンプルで動作確認願います。 Dim suryo(10) As Integer Dim chiku(10) As String For i = 2 To 51 allsuryo = allsuryo + Cells(i, 3) Next heikin = allsuryo / 10 For i = 1 To 10 suryo(i) = suryo(i) + Cells(52 - i, 3) chiku(i) = chiku(i) & " " & Cells(52 - i, 2) Next gyo = 41 loop1: i = 10 Do Until suryo(i) < heikin i = i - 1 Loop i2 = i i = 1 Do Until suryo(i) < heikin i = i + 1 Loop i1 = i For i = i2 To i1 Step -1 suryo(i) = suryo(i) + Cells(gyo, 3) chiku(i) = chiku(i) & " " & Cells(gyo, 2) gyo = gyo - 1 If gyo = 1 Then GoTo loop2 Next i = 1 Do Until suryo(i) < heikin i = i + 1 Loop i1 = i i = 10 Do Until suryo(i) < heikin i = i - 1 Loop i2 = i For i = i1 To i2 suryo(i) = suryo(i) + Cells(gyo, 3) chiku(i) = chiku(i) & " " & Cells(gyo, 2) gyo = gyo - 1 If gyo = 1 Then GoTo loop2 Next GoTo loop1 loop2: For i = 1 To 10 Cells(i, 4) = suryo(i) Cells(i, 5) = chiku(i) Next

seamonkey
質問者

お礼

 確かにエラーなしで実行されるのですが、結果として地区数が一人5地区に振り分けられるみたいです。  そのためうまく配達数が、平等(平均)に振り分けられないようです…^^;  生意気言ってすみませんm(__)mやっぱり、この振り分けは簡単ではないんですね(~_~)

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

マクロ(VBA)でやればできます。 どれほど平等にするのでしょうか。 一人当たり5地区固定と考えていいのでしょうか。 それとも固定しないのでしょうか。 5地区固定で配達数でソートされている前提で作ったマクロが下記です。 Dim suryo(10) As Integer Dim chiku(10) As String For i = 1 To 10 suryo(i) = suryo(i) + Cells(52 - i, 3) chiku(i) = chiku(i) & " " & Cells(52 - i, 2) Next For i = 1 To 10 suryo(i) = suryo(i) + Cells(31 + i, 3) chiku(i) = chiku(i) & " " & Cells(31 + i, 2) Next For i = 1 To 10 suryo(i) = suryo(i) + Cells(32 - i, 3) chiku(i) = chiku(i) & " " & Cells(32 - i, 2) Next For i = 1 To 10 suryo(i) = suryo(i) + Cells(11 + i, 3) chiku(i) = chiku(i) & " " & Cells(11 + i, 2) Next For i = 1 To 10 suryo(i) = suryo(i) + Cells(12 - i, 3) chiku(i) = chiku(i) & " " & Cells(12 - i, 2) Next For i = 1 To 10 Cells(i, 4) = suryo(i) Cells(i, 5) = chiku(i) Next

seamonkey
質問者

お礼

うわぁ~ほんとにありがとうございます!!!! ほんとに助かります!! 一人当たり5地区固定ではなくて、あくまでも配達数のみを平等にできればと考えいてます。ですから、一人当たりの地区数は関係ないのです。 もしよろしければ、地区を固定してないVBAを教えて頂けないでしょうか?ぜひ!ぜひ!よろしくお願いします!!

関連するQ&A

  • エクセルの集計方法について

    エクセルで以下のような表を作成しております。 1つの地区で変更回数がそれぞれ異なる回数ある場合、各地区の中から変更回数最大のものを抽出するにはどのように集計すればよいのでしょうか。 なお、地区数は最大500地区くらいになる予定です。このため、効率的に抽出できる方法が知りたいのですが、アクセスを使える環境にないため、エクセルえで集計できる方法があればご教示お願いします。 地区名 変更回数  金額 A地区   0    100 A地区   1    110 B地区   0    200 B地区   1    220 B地区   2    240 C地区   0    300 C地区   1    330 C地区   2    360 C地区   3    370

  • エクセルで複数の条件のセル数をそれぞれ合計したい

    エクセルで複数条件のセルにそれぞれ分類を分け(判定)、分類ごとにセル数の合計を出したいのですが、この場合のセル合計を簡単に計算する条件式はないでしょうか?(分類項目はIF、AND関数を使って結果表示しています) 例)C列に分類AとBが0の時"*"、Aが1・Bが0の時"2"、ABとも1の時"1"、ABとも空欄の時空欄" "と判定し、"*"・"2"・"1"それぞれのセル数を合計したいのですが・・・。   列 A B C      行 1  0 0 *    2  1 0 2    3  1 1 1    4     ・        ・ どなたかご教示よろしくお願いします。

  • エクセルでユニーク数を求めたいです。

    初めまして。エクセルのユニーク数の求め方について質問させていただきたいです。 ある表の集計をしているのですが、 (A列)文書  (B列)ID    あいうえお   abcde かきくけこ   fghij あいうえお   klmnop あいうえお   abcde さしすせそ   amnbk さしすせそ   lrigks あいうえお   abcde かきくけこ   fghij なにぬねの  nnbkhji こんな感じに並んでいます。 この(C列)ユニーク数を求めたいです。 上記の回答ですと あいうえお→abcdeとklmnopのIDがあるので = 2 かきくけこ→fghij = 1 さしすせそ→amnbkとlrigksのIDがあるので = 2 というようにしたいのですが、 最終的には同エクセル内の別ページで (A列)文書 (B列)ユニーク数 あいうえお     2 かきくけこ     1 さしすせそ     2 なにぬねの    1 このような表にまとめたいです。 説明が下手で申し訳ありませんが、こちらで求められる関数または方法が知りたいです。 最終的にはオートフィルでユニーク数を求められる終わり方にしたいです。 ちなみに「=1/COUNTIFS(A:A,A2,B:B,B2)」こちらの関数では求められませんでした。 また、上記のグラフでピボッドで集計すると延べ数が集計されてしまうので、ユニーク数を求めたいです。 どうか、よろしくお願い致します。

  • エクセルで不完全項目を除外して計算したい

    うまく言い表せないのですが、 例えば A列に数値a(例えば来店時間) B列に数値b (出店時間) がありC列=b-a  滞在時間 とします。 c列の平均値を求めたいので、c列の下に average(C1:C100)をつくって平均値を求めます。しかし、A,B に空欄がいくつかあります。空欄があるとC=0となって平均に含まれてしまいますが、AB空欄のものは平均から除外したいのです。  つまり虫食い状のAのデータの中で、有効なデータだけのCの平均値を取りたいのです。どのように計算式を作ったらよいでしょうか。

  • エクセル 集計について

    立て続けの質問ですいません。 エクセルデータの列がA,B,C,Dとあったとします。 Aをグループ化して Dを集計します。 この場合、集計行のB,C欄は空欄になると思います。 B,C欄の表記が同グループ内では同一の場合、その表記を集計行に 表示することは可能でしょうか。

  • エクセルでこんなこと出来るでしょうか

    エクセルでこんな事が出来ますか? 例えばA地区、B地区、C地区で20歳と30歳と40歳の人は合計何人いるかカウントする方法を教えて下さい。 宜しくお願いします。

  • Excelで4行ごとに合計、平均

    WinXP、Excel2002で質問です。 4行ごとに合計、平均を出したいのですが、どういう計算式を作ればいいでしょうか。 ちなみに合計の式が =B3+B7+B11+B15+B19+B23+B27 だと、一つでもセルが空欄の場合#VALUE!のエラーが表示されてしまうので、このエラーが出ないようにしたいです。 平均の式は、リンク貼り付けしているC3、C7、C11、C15、C19、C23、C27の平均をとりたいのですが、全然うまく作れません。 どなたかわかる方、教えてください!

  • エクセル関数で、ご教示下さい

    例として、セルA1~A10に、1.2.3.・・・・10と番号を入れて       セルB1~B10には、商品の在庫数が入力されているとします。 この時、セルC1に集計の開始番号 セルC2に集計の終了番号を入力すれば、      D1に開始番号から終了番号までのB列の合計を表示させたいのですが、      このような集計ができるD1に入れる関数はあるでしょうか。 例えば、B列の3行目から6行目までの合計をD1に表示させたい場合に      C1にA列番号の3を入力、C2には6を入力すれば、D1にB3からB6の合計を      表示してくれる、といった関数です。      開始番号、終了番号は、何番~何番までと、その都度変わります。 どなたか、よろしく、お願いいたします。         

  • エクセルで集計したいのですが・・・

    エクセルで以下のような集計をしたいのですが、教えていただけませんか? 行2以下の各行について、 行1のデータ(数値)と一致する数の合計をそれぞれの行について 集計したいのです。    A  B  C  D  E  一致数 行1 1  2  1  3  5   行2 2  3  2  3  5   2 行3 1  2  1  4  5   3 行4 4  2  1  3  4   3 行5 1  2  1  3  5   5 ・ ・ よろしくお願いします。

  • 担当ごとの出勤した数を数えたい

    A   B  C D E F G F 1 2 Aさん 〇 3 Bさん 〇 4 Cさん 〇 5 Bさん 〇 6 Bさん 7 Aさん 8  Aさん合計 Bさん合計 Cさん合計 A列にある担当者名がありB列の出勤の○があります。○の数をぞれぞれの合計に分けて計算にはどのような関数にすればいいのでしょうか?Aさんの時の○の数をAさんの合計に、Bさんの時はBさんの合計にCさんの時にはCさんの合計にそれぞれ分ける形にしたいのです。

専門家に質問してみよう