[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入荷日の早い材料から出荷引き当てしたい』(モンスリール)
エクセルで材料管理をするための箱を作っています。
過去ログを見てみましたが該当する質問が見つかりませんでした。
【Sheet1】入荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 入荷日 仕入数 仕入価格 2 100 A00 赤 大 2021/11/5 100 100円 3 101 A00 赤 大 2021/11/15 50 120円 4 102 A00 赤 大 2021/12/10 200 80円
【Sheet2】出荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 出荷日 出荷数 出荷価格 2 ___ A00 赤 大 2021/12/5 30 200円 3 ___ A00 赤 大 2021/12/15 80 180円 4 ___ A00 赤 大 2021/12/25 50 250円
Sheet2のB列〜F列を入力すると、引き当てされる材料番号が自動的にSheet1から参照されるようにしたいです。先入れ先出しの考え方で、「古い材料→新しい材料の順番に引き合て」の単純な動きです。(例外なし)
Sheet1, Sheet2ともにB列〜D列の情報を&結合したものをH列に入れています。材料番号の参照自体はH列をもとにXLOOKUPで出来ますが、入荷日の早い順にする数式の組み方が分かりません。やりたいことは次の2つです。
?@仕入数から出荷数を差し引いたあまりが>0なら次に古い材料番号へ飛ぶ
?A2つ以上の材料番号が該当する場合は引き当て量が多い方の材料番号が使われる
数式・マクロどちらでも大丈夫です。(マクロは初心者ですが勉強中です)
どうか皆様のお知恵をお貸しください。よろしくお願いします。
< 使用 Excel:Office365、使用 OS:Windows10 >
材料番号を変えている理由は、仕入価格が違う材料は成分、色、大きさが同じでも別個の材料としたいからです。これは管理表の目的の1つとして、各材料から作られた商品の目標販売価格がいくらになるかを示す必要があるためです。(例えば材料1から作られた商品Aと材料2から作られた商品A'は同じ商品ですが、材料1と材料2の仕入価格が違うため目標販売価格は違う)
本来は"材料番号"とするのは却って分かりづらいかもしれませんが、材料1つ1つを区別するために敢えて材料番号としてつけています。他に区別する良い方法があれば材料番号は削除しても構いません。
Sheet2の出荷明細の材料番号は、例えば以下のようになることが希望です。
【Sheet1】入荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 入荷日 仕入数 仕入価格 2 100 A00 赤 大 2021/11/5 100 100円 3 101 A00 赤 大 2021/11/15 50 120円 4 102 A00 赤 大 2021/12/10 200 80円
【Sheet2】出荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 出荷日 出荷数 出荷価格 2 100 A00 赤 大 2021/12/5 30 200円 ※11/5の仕入数100個の内30個引当 3 100 A00 赤 大 2021/12/15 80 180円 ※↑の残りの70個引当(10個は11/15の仕入が引当されるが数が少ないので材料番号は100でOK) 4 101 A00 赤 大 2021/12/25 50 250円 ※11/15仕入分の残り40個引当(10個は12/10の仕入が引当される) (モンスリール) 2022/02/02(水) 22:32
【Sheet1】入荷明細についてお聞きします。 下記のように、材料番号が違う記載があるのですよね?
|[A] |[B] |[C]|[D] |[E] |[F] |[G] [1]|材料番号|成分|色 |大きさ|入荷日 |仕入数|仕入価格 [2]| 100|A00 |赤 |大 |2021/11/5 | 100|100円 [3]| 100|A00 |赤 |大 |2021/11/15| 50|120円 [4]| 100|A00 |赤 |大 |2021/12/10| 200|80円 [5]| 105|A05 |青 |中 |2021/11/5 | 100|100円 [6]| 105|A05 |青 |中 |2021/11/10| 50|90円
もし、上記のようなテーブルを 【Sheet2】出荷明細へ、下記のように表示させるのはどうなのでしょうか?
|[A] |[B] |[C]|[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] [1]|材料番号|成分|色 |大きさ|入荷日 |仕入数|仕入価格|出荷日 |出荷数|出荷価格|有効在庫数 [2]| 100|A00 |赤 |大 |2021/11/5 | 100|100円 |2021/12/5 | 80|200円 | 20 [3]| 105|A05 |青 |中 |2021/11/5 | 100|100円 |2021/12/5 | 50|200円 | 50 [4]| 105|A05 |青 |中 |2021/11/10| 50|90円 |2021/12/15| 30|180円 | 20 [5]| 100|A00 |赤 |大 |2021/11/15| 50|120円 |2021/12/16| 20|240円 | 30 [6]| 100|A00 |赤 |大 |2021/12/10| 200|80円 |2021/12/25| 150|160円 | 50
>入荷日の早い順にする数式の組み方が分かりません。
入荷日の早い日付けの順番にはできます。
>Sheet2のB列〜F列を入力すると、引き当てされる材料番号が自動的にSheet1から参照されるようにしたいです。
B列〜F列を入力すると言う考えをやめて、A列をプルダウンで選択するだけで...【Sheet1】入荷明細の B列〜G列(対象の材料行)の内容を、【Sheet2】出荷明細へ反映させる事とするのはどうなんでしょうか?
出荷数の入力は、勿論することになりますが…在庫数が一目瞭然となり良いかな?と思うのですが…
>他に区別する良い方法があれば材料番号は削除しても構いません。
材料番号は、認識を明確にする為には…あった方が良いと思います。
>?@仕入数から出荷数を差し引いたあまりが>0なら次に古い材料番号へ飛ぶ >?A2つ以上の材料番号が該当する場合は引き当て量が多い方の材料番号が使われる
ここの言ってる内容が理解し難いですが…【Sheet2】出荷明細からさらに抽出をかけて フィルターですればできますが…解除をするのが手間なので関数でしますが
【Sheet3】へ有効在庫数シートとして…各材料の成分を検索値にして 材料番号の閲覧を簡単に切り替えて抽出し…有効在庫数の多い材料がすぐに解るように はできるかなと思います。
抽出例
|[A] |[B] |[C]|[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L]|[M] |[N] [1]|材料番号|成分|色 |大きさ|入荷日 |仕入数|仕入価格|出荷日 |出荷数|出荷価格|有効在庫数| |材料抽出|過剰在庫 [2]| 100|A00 |赤 |大 |2021/11/5 | 100|100円 |2021/12/5 | 80|200円 | 20| |A00 | 50 [3]| 100|A00 |赤 |大 |2021/11/15| 50|120円 |2021/12/16| 20|240円 | 30| | | [4]| 100|A00 |赤 |大 |2021/12/10| 200|80円 |2021/12/25| 150|160円 | 50| | |
※M2=入力を切替して全ての材料番号を【Sheet2】出荷明細から抽出します。
最後に上記の内容は、関数でほぼします。
メリット B列〜D列を入力する手間がない
デメリット 【Sheet1】入荷明細のA列の、材料番号に重みを付けるので 少し探すのに手間だが、B列〜D列を入力するよりは楽かなと思います。 ※【Sheet1】入荷明細のA列の表示形式を切り替えするのに...少しだけVBAを利用します。
テーブルのレイアウトを変更できないのなら、他の回答者の提案をお待ちください。
(あみな) 2022/02/03(木) 10:34
ご提案いただいた仕組みは、材料番号を起点に仕入〜出荷までを管理するということですね。有効在庫数、過剰在庫数まで管理表で見えるようになれば大変助かります。
一つ懸念しているのは、たとえば商品Aを生産するにあたり、現状はどの材料番号の材料が使われたか現場が把握していない(色、成分、大きさは分かるが入荷日・仕入価格までは追跡できない)ということです。ご指摘のとおり、本来はB列〜D列の入力が一番面倒で省略すべきと思うのですが、実際はE列〜G列が一番厄介という妙な現象が起きています。このため、A列を手動でプルダウン選択するのは難しいかもしれません。
テーブルのレイアウトに制約はありませんので変更は可能です。
(モンスリール) 2022/02/03(木) 13:39
質問を十分理解していなくて間違っているかもしれませんが、
Sheet2で、作業列を使っていいなら、
[A] [B] [C] [D] [E] [F] [G] [H] [1] 材料番号 成分 色 大きさ 出荷日 出荷数 出荷価格 作業列 [2] 100 A00 赤 大 2021/12/5 30 200円 0 [3] 100 A00 赤 大 2021/12/15 80 180円 100 [4] 101 A00 赤 大 2021/12/25 50 250円 150 [5] 102 A00 赤 大 2021/12/26 70 190円 350
H2に、=SUM(Sheet1!$F$1:F1) A2に、=INDEX(Sheet1!A:A,MATCH(SUM($F$1:F1),H:H,1))
と入力してそれぞれ下にコピーでこんな感じですが、やりたいことができてますでしょうか。 作業列は、Sheet1のデータ行数以上の行分をコピーしてください。。 (自信なし) 2022/02/03(木) 14:23
質問は1種類の在庫についての話ですけど、実際にそんな単純な話なのですか? もし複数種の話なら、最低でも2種類のサンプルがあった方がいいです。
出荷明細がすらすらと出来上がったという想定のようですが、 出荷日に出荷数以上の在庫があるのかちゃんとチェックされているんですか? それはどうやっているんですか? 少なくともそれを見極められるだけの情報がどこかになかったら そんなに易々と出荷明細なんて作れない気がするんですがねぇ。
一旦、出荷明細が出来上がってやれやれとなった後で、 緊急出荷依頼が割り込んできたらどう対処しているんですか? そんな依頼は受け付けないって方針なんですか?
>A2つ以上の材料番号が該当する場合は引き当て量が多い方の材料番号が使われる これって本当なんですか? 材料番号ってそんなテキトーなものなんですか? 常識的には、何番が何個、何番が何個と言う明細を把握してないと、 その日の出荷作業だってやりにくいし、 更に次の出荷明細を作る上においても支障があるような気がするんですがねぇ。。 そもそも次の出荷明細って、今までできていたのとは別に作るんですか? それとも、今までのに追記していく方式なんですか?
まぁ、実際にこれまでの方法で仕事ができているので、 何らかの対処法は編み出されているんでしょうが、 当初の質問が解決したら万事めでたしになる状況とはとても思えないです。
(半平太) 2022/02/03(木) 19:42
教えていただいた関数を入れてみましたが、1種類目の材料については正しい材料番号が表示されますが2種類目以降は成分、色、大きさが対応しない材料番号が表示されてしまいます。実際の管理表では材料の種類が多岐にわたるため、数量のみに着目すると材料種類が変わったタイミングで行がずれてきてしまうためと思われます。
こちらの説明不足で大変申し訳ございません。
(モンスリール) 2022/02/04(金) 10:03
ご指摘いただいた内容はまさにその通りだと思います。できるだけシンプルに状況説明しようとしたせいで言葉足らずとなり、却って皆様の混乱を招いてしまいました。大変申し訳ございません。
冒頭でこの管理表は「材料管理をするための箱」と書きましたが、正しくは「材料を正しく引き当てた場合の実績管理のための箱」なのです。このため、この管理表の材料在庫数は実際の材料在庫数と紐づいていません。仮に現場で材料の先入れ先出しが徹底された場合、当初予定した材料購入計画は適正か、価格は妥当かを見るためのツールとして使います。
>質問は1種類の在庫についての話ですけど、実際にそんな単純な話なのですか?
材料を構成する要素は成分、色、大きさの3種類です。成分と大きさは各20種類、色は5種類あり、この組み合わせによって生産できる商品が変わります。実際の明細は↓のようなイメージになります。
【Sheet1】入荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 入荷日 仕入数 仕入価格 2 100 A00 赤 大 2021/11/5 200 100円 3 101 A00 赤 中 2021/11/7 100 120円 4 102 A03 青 大 2021/11/10 120 90円 5 103 A04 青 小 2021/11/15 100 200円 6 104 A02 緑 中 2021/11/16 150 180円
【Sheet2】出荷明細
A B C D E F G 1 材料番号 成分 色 大きさ 出荷日 出荷数 出荷価格 2 ___ A00 赤 大 2021/12/5 30 200円 3 ___ A03 青 大 2021/12/6 50 180円 4 ___ A00 赤 中 2021/12/15 80 250円 5 ___ A00 赤 大 2021/12/17 80 220円 6 ___ A02 緑 中 2021/12/18 50 230円 7 ___ A04 青 小 2021/12/20 80 300円
>出荷日に出荷数以上の在庫があるのかちゃんとチェックされているんですか?それはどうやっているんですか?
商品の有効在庫数、材料在庫数は生産現場でシステム管理されています。材料は入荷時に数量、仕様などの情報が入荷明細に登録されますが、管理番号はつきません。サンプルで示している「材料番号」は箱を作るために創作したものです。なお、商品は品番毎に管理されています。
>材料番号ってそんなテキトーなものなんですか?
実際は材料番号という概念がありません。入荷された後は成分、色、大きさ毎に管理されます。
>次の出荷明細って、今までできていたのとは別に作るんですか?
今までのものは継続で使いつつ、↑の箱も併用していきます。
色々と説明不足で申し訳ありませんでした。
(モンスリール) 2022/02/04(金) 12:15
>材料番号の参照自体はH列をもとにXLOOKUPで出来ますが、入荷日の早い順にする数式の組み方が分かりません。やりたいことは次の2つです。
上記に記載がある、入荷日の早い順にする数式の組み方が分かりません。 は、いったいなんだったんですかね?
入荷日を現場が管理していなかったら、先入れ先出しによって、仕入れ材料の長期滞留による品質低下を防げませんよね。
に加えて、【Sheet2】出荷明細に、出荷日と使用した個数を現場が管理してるだけなら 仕入れ単価による...出荷価格の設定は、無理ですよね。 元々、仕入れた時点で、売値は決定されてますしね。
(あみな) 2022/02/04(金) 13:19
>入荷日を現場が管理していなかったら、先入れ先出しによって、仕入れ材料の長期滞留による品質低下を防げませんよね。
入荷日は大雑把(作業員が倉庫を見てなんとなく時期が分かる程度)にしか分かりません。材料に使用期限が無く、滞留期間は長くても半年程度なので品質低下のリスクはありません。
>出荷日と使用した個数を現場が管理してるだけなら仕入れ単価による...出荷価格の設定は、無理ですよね。
現場ではできるだけ古い材料から使うようにしてはいますが、徹底されていませんし担当者任せになっています。今の体制でこれを体系的に管理するのは難しいので、実際の材料の動きとは違ったとしても全て材料が先入れ先出しされたと仮定して、材料と商品を無理やり紐づけた箱を作りたいのです。
>仕入れた時点で、売値は決定されてますしね。
その通りです。材料価格と売値の関係が見えるものが何もないので、今回ご相談した箱を作りました。
やりたいことは変わっていません。
【Sheet2】出荷明細のA列に入荷日の早い順(古い材料→新しい材料)に対応する材料が割り当てられるようにしたいです。
(モンスリール) 2022/02/04(金) 16:43
Option Explicit
Sub test() Dim dicIn As Object, dicOut As Object Dim r As Range, v Dim k As Long, j As Long Dim spec As String, no As String, mx As Long
Set dicIn = CreateObject("scripting.dictionary") Set r = Sheets("Sheet1").Cells(1).CurrentRegion
v = r.Value For k = 2 To UBound(v) spec = v(k, 2) & vbTab & v(k, 3) & vbTab & v(k, 4) If Not dicIn.exists(spec) Then Set dicIn(spec) = CreateObject("system.collections.queue") End If no = v(k, 1) For j = 1 To v(k, 6) dicIn(spec).enqueue no Next Next
Set dicOut = CreateObject("scripting.dictionary") Set r = Sheets("Sheet2").Cells(1).CurrentRegion
v = r.Value For k = 2 To UBound(v) spec = v(k, 2) & vbTab & v(k, 3) & vbTab & v(k, 4) mx = 0 dicOut.RemoveAll v(k, 1) = dicIn(spec).peek For j = 1 To v(k, 6) no = dicIn(spec).dequeue dicOut(no) = dicOut(no) + 1 If mx < dicOut(no) Then v(k, 1) = no mx = dicOut(no) End If Next Next r.Value = v
End Sub
(マナ) 2022/02/04(金) 17:16
コードを実行したところ、「v(k, 1) = dicIn(spec).peek」の箇所に"実行時エラー424 オブジェクトが必要です"のエラーが出ました。原因を調べて色々やってみましたが、恥ずかしながら修正方法が分かりません。大変申し訳ありませんが、直し方を教えていただけないでしょうか。
(モンスリール) 2022/02/04(金) 22:58
Sub test2() Dim dicIn As Object, dicOut As Object Dim r As Range, v Dim k As Long, j As Long Dim spec As String, no As String, mx As Long Dim stock As Long
Set dicIn = CreateObject("scripting.dictionary") Set r = Sheets("Sheet1").Cells(1).CurrentRegion
v = r.Value For k = 2 To UBound(v) spec = v(k, 2) & vbTab & v(k, 3) & vbTab & v(k, 4) If Not dicIn.exists(spec) Then Set dicIn(spec) = CreateObject("system.collections.queue") End If no = v(k, 1) For j = 1 To v(k, 6) dicIn(spec).enqueue no Next Next
Set dicOut = CreateObject("scripting.dictionary") Set r = Sheets("Sheet2").Cells(1).CurrentRegion
v = r.Value For k = 2 To UBound(v) spec = v(k, 2) & vbTab & v(k, 3) & vbTab & v(k, 4) mx = 0 dicOut.RemoveAll On Error Resume Next stock = 0 stock = dicIn(spec).Count On Error GoTo 0 If stock < v(k, 6) Then v(k, 1) = "在庫不足" Else v(k, 1) = dicIn(spec).peek For j = 1 To v(k, 6) no = dicIn(spec).dequeue dicOut(no) = dicOut(no) + 1 If mx < dicOut(no) Then v(k, 1) = no mx = dicOut(no) End If Next End If Next r.Value = v
End Sub
(マナ) 2022/02/05(土) 09:06
材料番号が切り替わるタイミングで"在庫不足"と出るようにしていただいていますが、在庫不足になったら次に古い材料番号が表示される"という動きにすることは可能でしょうか。例えば、入荷日が2021/11/5に200個仕入れた材料が在庫不足になったら2021/11/25に追加入荷した100個の材料番号を割り当てる、というイメージです。
(モンスリール) 2022/02/05(土) 12:18
(マナ) 2022/02/05(土) 12:31
【Sheet1】入荷明細
A B C D E F G 1 材料 成分 色 大きさ 入荷日 入荷数 仕入価格 2 100 A00 赤 大 2021/11/5 200 \100 3 101 A00 赤 中 2021/11/7 100 \120 4 102 A03 青 大 2021/11/10 120 \90 5 103 A04 青 小 2021/11/15 100 \200 6 104 A02 緑 中 2021/11/16 150 \180 7 105 A00 赤 大 2021/11/25 100 \120 ←追加仕入れ分 8 106 A03 青 大 2021/11/30 100 \100 ←追加仕入れ分
【Sheet2】出荷明細
A B C D E F G 1 材料 成分 色 大きさ 出荷日 出荷数 出荷価格 2 100 A00 赤 大 2021/12/5 50 \200 3 102 A03 青 大 2021/12/6 100 \180 4 101 A00 赤 中 2021/12/15 80 \250 5 100 A00 赤 大 2021/12/17 150 \220 ←11/5入荷分の在庫が0になる 6 102 A03 青 大 2021/12/22 20 \200 ←11/10入荷分の在庫が0になる 7 104 A02 緑 中 2021/12/18 50 \230 8 105 A00 赤 大 2021/12/20 80 \180 ←11/25入荷分を割り当て 9 106 A03 青 大 2021/12/22 20 \150 ←11/30入荷分を割り当て
(モンスリール) 2022/02/05(土) 18:14
(マナ) 2022/02/05(土) 18:38
こんにちは! 解決済ですけど、面白そうなのでちょっと書いてみました。 今は一番最後に使った材料の番号にしてます。 でも、一番多く使った材料の方がいいのかなと思ってそのコードも書いてます。 コメントしている部分のコメントを外すと一番多く使われた材料になるはずです?(^^; ちょっと検証不足なので駄目な時があるかもしれません。 その時は、、、あきらめてください。。。(笑) では、、では、、、
Option Explicit Sub てすと() Dim MyDic As Object Dim n As Variant Dim k As Variant Dim x As Variant Dim y As Variant Dim z As Variant Dim xx As Variant Dim 材料番号 As Variant Dim i As Long Dim ii As Long Dim j As Long Dim ki As Long Dim ni As Long Dim 回数 As Long Dim 出荷Flg As Boolean ReDim n(0) ReDim 材料番号(0) Set MyDic = CreateObject("Scripting.Dictionary") With Sheets("Sheet1") y = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Resize(, 8).Value End With QuickSort y, 5, LBound(y, 1), UBound(y, 1) For i = LBound(y, 1) To UBound(y, 1) x = Application.Transpose(Application.Index(y, i, 0)) n(UBound(n)) = x ReDim Preserve n(UBound(n) + 1) 材料番号(UBound(材料番号)) = Array(y(i, 1), 0) ReDim Preserve 材料番号(UBound(材料番号) + 1) Next ReDim Preserve n(UBound(n) - 1) ReDim Preserve 材料番号(UBound(材料番号) - 1) ReDim k(0) z = Sheets("Sheet2").Range("A1").CurrentRegion.Resize(, 8).Value For i = LBound(z, 1) + 1 To UBound(z, 1) xx = Application.Transpose(Application.Index(z, i, 0)) xx(1, 1) = Empty k(UBound(k)) = xx ReDim Preserve k(UBound(k) + 1) Next ReDim Preserve k(UBound(k) - 1) For ki = LBound(k) To UBound(k) 出荷Flg = False xx = k(ki) For ni = LBound(n) To UBound(n) x = n(ni) If x(5, 1) <= xx(5, 1) Then If (x(2, 1) & x(3, 1) & x(4, 1)) = (xx(2, 1) & xx(3, 1) & xx(4, 1)) Then If Not MyDic.exists(xx(2, 1) & xx(3, 1) & xx(4, 1)) Then MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1)) = Array(x(1, 1), 0) End If If x(6, 1) > 0 Then If x(6, 1) >= xx(6, 1) Then x(6, 1) = x(6, 1) - xx(6, 1) 回数 = xx(6, 1) 材料番号(ni)(1) = 回数 xx(1, 1) = 材料番号(ni)(0) '-----今まで一番多く使われた材料ならコメントを外す--------------------- If MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1))(1) < 回数 Then MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1)) = Array(x(1, 1), 回数) End If xx(1, 1) = MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1))(0) '------------------------------------------------------------- xx(6, 1) = 0 xx(8, 1) = Empty 出荷Flg = True n(ni) = x k(ki) = xx Exit For Else xx(6, 1) = xx(6, 1) - x(6, 1) 回数 = x(6, 1) 材料番号(ni)(1) = 回数 xx(1, 1) = 材料番号(ni)(0) MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1)) = Array(x(1, 1), 回数) x(6, 1) = 0 n(ni) = x End If Else MyDic(xx(2, 1) & xx(3, 1) & xx(4, 1)) = Array(x(1, 1), 0) End If End If End If Next If 出荷Flg = False Then z(ki + 2, 8) = "未出荷 " & xx(6, 1) Else z(ki + 2, 8) = Empty End If Next For i = LBound(z, 1) + 1 To UBound(z, 1) z(i, 1) = k(i - 2)(1, 1) Next Sheets("Sheet2").Range("A1").Resize(UBound(z, 1), UBound(z, 2)).Value = z Set MyDic = Nothing Erase n, k, x, y, z, xx, 材料番号 End Sub Private Sub QuickSort(MySAry As Variant, ByVal MySKey As Long, ByVal MySLeft As Long, ByVal MySRight As Long) Dim MySMid As Double Dim i As Long, j As Long, n As Long Dim MySLBound As Long, MySUBound As Long Dim MyStmp As Variant MySLBound = LBound(MySAry, 2) MySUBound = UBound(MySAry, 2) MySMid = MySAry((MySLeft + MySRight) \ 2, MySKey) i = MySLeft j = MySRight Do Do While MySAry(i, MySKey) < MySMid i = i + 1 Loop Do While MySAry(j, MySKey) > MySMid j = j - 1 Loop If i >= j Then Exit Do For n = MySLBound To MySUBound MyStmp = MySAry(i, n) MySAry(i, n) = MySAry(j, n) MySAry(j, n) = MyStmp Next i = i + 1 j = j - 1 Loop If MySLeft < i - 1 Then QuickSort MySAry, MySKey, MySLeft, i - 1 If MySRight > j + 1 Then QuickSort MySAry, MySKey, j + 1, MySRight End Sub すみません。使い切った時にディクショナリーを更新しなといけませんでした。m(__)m 2022/02/06 17:13 (SoulMan) 2022/02/06(日) 13:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.