エクセルの2007を使っております
現在積み荷のバランスを数値から算出したく
試行錯誤しております、良ければアドバイスお願いします。
E F G H I J K ...
1234567
275029803650398046005980
27503650398046005980
27503650
3650
3650
このように荷物ごとの長さがございます
上記ですと2750X3 2980X1 といった形です
ポイントが何個かありましてそれに対する並び替えを
おこないたいのです
1、左右対称が望ましい(1対ずつ)
2、長さは12000まで
3、3段目まで
右側
3280036503980
2275029805980
1365036504600
左側
3280028003980
2275027505980
1365036504600
このような形になるのが望ましいのですが、
完璧とはいかないまでも近い形になればと思っております
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
Solverを使えば完全ではなくても実用的なものができると思います。
異なる長さのものを組み合わせて、12000になればいいので、そのようにVBAでプログラムします。
結果を見て、左右対称を考えるか、はじめに材料の数を2分して計算すればいいでしょう。
A列に寸法、B列に個数を入れて、下記プログラムを実行すれば、C列以下に結果が出ます。
それを見て気に入るように積めばいいでしょう。
Sub solver3()
Dim r1 As Integer, r2 As Integer, c As Integer, n As Integer, lmax As Single
Dim rm As Integer, nrm As Integer, total As Single
r1 = 2
r2 = Cells(r1, 1).End(xlDown).Row
c = 3
n = 0
lmax = 12000
Range(Cells(r1, c - 2), Cells(r2, c - 1)).Sort Key1:=Cells(r1, c - 2), Order1:=xlDescending, _
Key2:=Cells(r1, c - 1), Order2:=xlDescending
Range(Cells(r1, c + 2), Cells(r2 + 1, 256)).ClearContents
Cells(r2 + 1, c - 1).FormulaR1C1 = "=SUM(R[" & -(r2 - 1) & "]C:R[-1]C)"
total = Cells(r2 + 1, c - 1)
SolverReset
While total > 0
Range(Cells(r1, c + 1), Cells(r2, c + 1)).FormulaR1C1 = "=RC1*RC[-1]"
Range(Cells(r1, c), Cells(r2, c)) = 1
Range(Cells(r2 + 1, c - 1), Cells(r2 + 1, c + 1)).FormulaR1C1 = "=SUM(R[" & -(r2 - 1) & "]C:R[-1]C)"
rm = r1
nrm = Cells(rm, c - 1)
While nrm = 0
rm = rm + 1
nrm = Cells(rm, c - 1)
Wend
SolverAdd CellRef:=Cells(rm, c), Relation:=3, FormulaText:="1"
SolverOk SetCell:=Cells(r2 + 1, c + 1), MaxMinVal:=1, ValueOf:=lmax, ByChange:=Range(Cells(r1, c), Cells(r2, c))
SolverAdd CellRef:=Range(Cells(r1, c), Cells(r2, c)), Relation:=1, FormulaText:=Range(Cells(r1, c - 1), Cells(r2, c - 1))
SolverAdd CellRef:=Range(Cells(r1, c), Cells(r2, c)), Relation:=3, FormulaText:="0"
SolverAdd CellRef:=Range(Cells(r1, c), Cells(r2, c)), Relation:=4, FormulaText:="整数"
SolverAdd CellRef:=Cells(r2 + 1, c + 1), Relation:=1, FormulaText:=Format(lmax)
SolverSolve userfinish:=True
Range(Cells(r2 + 1, c - 1), Cells(r2 + 1, c + 1)).Copy
c = c + 3
Cells(r2 + 1, c - 1).PasteSpecial
Range(Cells(r1, c - 1), Cells(r2, c - 1)).FormulaR1C1 = "=RC[-3]-RC[-2]"
total = Cells(r2 + 1, c - 1)
SolverReset
n = n + 1
Columns(n * 3 + 2).EntireColumn.Hidden = True
Wend
Cells(r2 + 1, c) = n
End Sub
ありがとうございます!!
VBAは自動記録のコードを触るぐらいしかしたことがないのですが、
がんばってみます、
残念ながらコンパイルエラーが表示されてしまい
SolverReset SUBまたは fanctinon が定義されてません。。
という感じででるのです、
少し自分で調べてみます
ありがとうございます。
No.5
- 回答日時:
拙作のSeek(フリー)で解くと、
9,700 ~ 2本 5,980 x 1 3,650 x 1 残=70
9,700 ~ 2本 4,600 x 1 3,980 x 1 残=1,120
9,700 ~ 1本 3,650 x 1 2,750 x 2 残=550
9,700 ~ 1本 3,650 x 1 2,980 x 1 2,750 x 1 残=320
となりますので、
同じ組み合わせのもの(2本のもの)を左右に振り分けて、
残が550の組合せを右、残が320の組合せを左に振り分けると
左右のアンバランスは 550-320=230 となり、
1%以下に収まりました。
9700で収まりますので、トレーラーでなく10tでも
運べそうです (^^;
残が小さい組み合わせを下に乗せると、さらに安定しますね。
ご安全に!
参考URL:http://supermab.com
No.4
- 回答日時:
書き忘れましたが、Solverを使うには、VBの編集画面の、
ツール―参照設定
で、
SOLVERにチェックを入れてください。
そうすれば、
>残念ながらコンパイルエラーが表示されてしまい
>SolverReset SUBまたは fanctinon が定義されてません。
は、
出ないと思います。
No.2
- 回答日時:
少なくともExcelで計算するのは諦めてください。
この問題は「計画問題」という分野になり、超
難解問題の1つに入ります。もっとも積荷の数に
難解さは決定されますが。
具体的な数値が固定であれば、人間が時間をかけ
て計算するのが一番でしょう。まあ、そんなこと
は無いでしょうが。
Lispでプログラムを作るのが一番早く実現できる
と思います。
C++やPHPでも出来るでしょう。
ただ、この手の問題を理解できる人はプログラマ
でも限られます。私の経験上、100人に1人いるか
どうか。この問題を抱えている人でも、実業務を
していない人は、まず理解できません。
一見単純に思えて泥沼化して、何も進まないうちに
予算を食いつぶして泣きつく、が一般的なパターン
です。
No.1
- 回答日時:
とりあえず計算式 (振り分けロジック) が良くわからないのと、どこまで出来て何に困っているのか書いていただかないと、あなたの代わりに仕事することにしかならないと思うのですけど。
例えば、、
「対称」とは何が対称なのか?
12000までの制限とは、何の制限なのか?
左端の3...2...1は何を表してるのか?
この回答への補足
ごもっともでございます。
現場の状態が解らないかぎり答えようがありませんでしたね
現状の問題に特化してご質問させていただくことにします、
左端の321は高さを表しまして
1段目2段目3段目となっております
12000までの制限とは、
縦につなぐ際12000までの制限となっているとゆうことです
1段目最大 3000+3000+3000+3000
対象とは左と右部分で分かれてますので、同じ長さのものを左、右に振り分けるという意味でございました。
なかなか伝わりにくいかとおもいますが、お願いします、
とりあえずしたいことをいいます
まず自動でコピー&ペーストを行うことは可能でしょうか?
A1にある数値を任意の場所に移動
例 A1にある数値をクリック、、そのつぎクリックするセルにその値を
移動(コピーでない)
以上お願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 荷捌作業効率をあげるためのエクセル関数を教えてください。 8 2022/10/07 08:17
- その他(暮らし・生活・行事) 長いです。できれば、霊感のある方に聴いて頂きたい話があります(霊感ない方でも良いです)不思議なお話で 4 2022/08/06 16:38
- その他(アウトドア) ハイゼットカーゴの荷台の活用についてアドバイスください 4 2022/06/14 15:52
- 神経の病気 手首の痛みの原因を教えて下さい。 6 2022/08/02 06:56
- 飲食店・レストラン 左利きに対する差別というか嫌がらせに社会はもう少し配慮するべきじゃないでしょうか? それを如実に表し 14 2023/07/15 07:22
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- 運輸業・郵便業 中型トラック初心者です。 トラック後方にだけ荷物置くのって良くないんでしょうか? 3箇所降ろしなんで 3 2022/08/09 20:23
- 貨物自動車・業務用車両 皆さん、おはようございます♪ トラックについてのご質問です。 小型、中型、大型とトラックの種類があり 2 2022/12/16 10:53
- 地図・道路 一方通行道路における路上駐車場の設置について 2 2022/07/13 16:47
- 運輸業・郵便業 事故が起きた場合の責任について 6 2022/05/24 21:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 行の値を累計したい...
-
トラックへの荷物の積みかたを...
-
剛体の力学の問題 正三角形
-
抵抗値計算
-
抵抗を使用したインピーダンス...
-
VBAでグループごとソートす...
-
電気回路の閉路方程式の問題
-
エクセルで集計
-
ブタジエン(M1)/アクリロニトリ...
-
黄色マーカVbと書いてあるので...
-
外力のある相対運動
-
μって?
-
材料力学について質問です。 問...
-
作った表から一覧表を作成をしたい
-
iPadAir2か、iPad mini3か、PS4
-
エクセル 指定した複数の文字の...
-
並列の合成抵抗での計算
-
材料力学の問題ですが
-
対称・反対称な波動関数
-
エクセルのVBAのことで
おすすめ情報