魚市場の競り管理について、Excelを使いたいです

このQ&Aのポイント
  • 私が市場主として魚市場の競り管理に問題を抱えています。昔から使っているシステムの限界に直面し、高価なシステム導入も難しい状況です。そこで、Excelを活用して管理する方法を検討しています。
  • 売り手と買い手の情報を予め登録し、競りによって値付けされるさまざまな種類の魚の数量を管理する必要があります。市場の営業時間は午前5時から7時半までで、競り場では売り手と買い手の取引情報を紙とペンで記録しています。市場終了後には、売り手と買い手が精算所に現金精算に来て明細書を受け取ります。
  • Excelを使用して魚市場の競り管理を行う方法について、データベース関数を使用する経験はなく、基本的な関数やvlookup程度の能力しかありません。分かりやすいサイトやサンプル実例ファイルを教えていただけると助かります。
回答を見る
  • ベストアンサー

魚市場の競り管理について、Excelを使いたいです

こんばんは。早速ですが詳しい方ご回答お願いできませんでしょうか。 魚市場で競りがあるとして、私が市場主とします。 昔から使っているシステムも限界で、かといって何十万もするシステム導入はできません。 一番安価な方法として、Excelを活用して管理できないか思案しています。 内容 --------- 売り手【漁師さん】 予め登録してある10社程度(A社は01番、B社は02番と番号がふってあります) 日によって水揚げされる(ヒラメ・ハマチ・鯛・鰯・鰹等)種類や数量が異なります。 買い手【魚屋さん】 予め登録してある20社程度(X社は101番、Y社は102番と番号がふってあります) 一品一品、競りを行うため、値付価格が異なります。 午前5時に市場が始まって、午前7時半には市場は終了します。 ちなみに競り場では、 どの売り手が、どの買い手に、いくらで何を何匹売ったか 例)A社が、X社に、1000円で、ヒラメを売った と紙とペンで記載してあります。 市場が終了するとそれぞれ、売り手・買い手が現金精算に一人づつ精算所に来て精算します。 精算時に一人づつ、明細をプリントアウトして渡します。 たとえば、X社の精算時の明細書には日時等の他に 例)A社からヒラメを1000円で買った B社から鰹を2000円で買った という情報が記されています。 可能な限りExcelのみで済ませたいのですが みなさんならどのような方法で作製しますか? ちなみに私ですがデータベース関数等を駆使するほどExcelの経験値は高くありません。 一般関数や、vlookupまでが使用できる程度の能力です。 もしも可能でしたらわかりやすいサイトや、サンプル実例ファイルを教えていただけたらとても助かります。 お詳しい方よろしくお願い致します。 ※なお、エクセルデータが不具合をおこしても、相手から損害賠償や保証を求められることはありません。わからないならしっかりとしたシステム会社に依頼するべきといった答えは望んでおりません。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>L列に数式を入力し、それをドロップダウンリスト化する方法なのですが、 ・手打ちテンキー入力のほうが効率がいい(打ち間違いリスクはありますが速い) テンキー入力ということはコード番号を入力するということですね。 この場合は、この数字からVLOOKUP関数で会社名を表記するまたは数式内で対応するのが簡単なように思います。 >・基本的に売り手側は連続して獲れた海産物を競り場に出品していきます 同じデータを連続入力するなら、Ctrl+Dのショートカット操作で上と同じデータを入力するような対応が簡単かもしれません。 >上記のため、わたくしとしましては、売り手、買い手についてはDDL化せずに進めたいと思っています。 私の提示したL列の重複のないデータを利用する主目的は、シートに入力されている業者名(当日取引のあった業者)だけをドロップダウンリストから選択できるようにすることです。 この設定によって、業者ごとの内訳を表示するシートでドロップダウンリストから業者名を選択すれば、詳細データが一発で表示でき印刷できるようにすることができます。 >明細書発行時に、売り手、買い手を各業者正式名 例) 売り手101を、株式会社Macky 買い手501を、株式会社aiueoosaka としてヒモ付して、会社名をシート一覧に書き出して、クリックすることで、売買内容を印刷する方式を思案しております。 (ダブル?)クリックすることで売買内容を印刷するというのは、誤操作を行う可能性もあり、あまりお勧めできません。 上に述べたように、印刷したい業者をドロップダウンリストから選択して印刷(マクロボタンで対応)するほうがこのようなケースでは適切です。 >MackyNo1さんでしたら、どのような方法を取るのか、恐れ入りますがお時間ありましたらお答えいただけましたら幸いです。 今回は1日分だけのデータで処理するシートを作成しましたが、私なら日付の列をいれて、縦方向に日々のデータを追加しておき、1か月分の集計などが簡単にできるようにします。 この場合、内訳の印刷は売買当日に行うなら、TODAY関数を併用した数式で絞り込んで、当日分だけの内訳を印刷できるような対応にします。 なお、データ範囲が大きくなると、配列数式の再計算に時間がかかりシートの動きが重くなるので、1日分の帳票印刷ブックからデータベースシートにマクロでデータを送るような対応をするほうが良いかもしれません。

aiueoosaka
質問者

お礼

お答えをいただきまして感謝致します。 >私の提示したL列の重複のないデータを利用する主目的は、シートに入力されている業者名(当日取引のあった業者)だけをドロップダウンリストから選択できるようにすることです。この設定によって、業者ごとの内訳を表示するシートでドロップダウンリストから業者名を選択すれば、詳細データが一発で表示でき印刷できるようにすることができます。 なるほど便利ですね。 >(ダブル?)クリックすることで売買内容を印刷するというのは、誤操作を行う可能性もあり、あまりお勧めできません。 上に述べたように、印刷したい業者をドロップダウンリストから選択して印刷(マクロボタンで対応)するほうがこのようなケースでは適切です。 MackyNo1さんならば、マクロボタンをクリックする手法を取られるということですね。 >今回は1日分だけのデータで処理するシートを作成しましたが、私なら日付の列をいれて、縦方向に日々のデータを追加しておき、1か月分の集計などが簡単にできるようにします。 この場合、内訳の印刷は売買当日に行うなら、TODAY関数を併用した数式で絞り込んで、当日分だけの内訳を印刷できるような対応にします。 なお、データ範囲が大きくなると、配列数式の再計算に時間がかかりシートの動きが重くなるので、1日分の帳票印刷ブックからデータベースシートにマクロでデータを送るような対応をするほうが良いかもしれません。 トレーサビリティに優れていますので、教えていただいた方法をとれば抽出や、訂正が簡便に行えそうです。 いろいろおしえていただきましてありがとうございました。 Excelの関数は単純なものしかできなかったので、ガヤガヤといろんな関数でひねりを加えるのではなく ほしい情報を一行で簡潔にまとめてしまう手法に驚きました。 今回非常に助かりました。 大切な情報をいただきまして本当に感謝しております、MackyNo1さん、ありがとうございます。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

No5の回答の補足です。 L1セルに入力する数式を提示していませんでした。 以下の式を入力して右方向に1つおよび下方向にオートフィルしてください。 =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$100&"",$A$2:$A$20&"",0)<>ROW($2:$100)-1)*1000+ROW($2:$100),),ROW(1:1)))&""

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>他ソリューションがありましたらご教授ください。 このようなシートでの運用で最も気を付けなければならないことは売り手や買い手のデータの入力ミス(同じデータで2つの表記をしてしまうなど)で必要なデータが抽出できなくなる可能性があることです。 それを避けるには入力規則のリストからドロップダウンリストで選択するようにします。 たとえば、現在のシートのA列やB列に入力された売り手または買い手データだけを印刷対象にしたいなら、たとえばL1セルに以下の式を入力して右方向および下方向にオートフィルすれば、重複のない売り手および買い手のリストを作成できます。 このリストを使用して、たとえば売り手を入力するセル(F1セル)で入力規則を設定し、「リスト」から以下の式を入力すれば、ドロップダウンリストから入力されている売り手を選択できるようになります。 =L$1:INDEX(L:L,SUMPRODUCT((L$1:L$100<>"")*1)) また入力シートのA列やB列に売り手や買い手をドロップダウンリストから選択できるようにするなら(過去の重複のあるデータベースがある場合)、A2:B100セルを選択して条件付き書式で上記の設定をすれば(重複のないデータリストがあるなら、その範囲をそのままリストに指定できます)、添付画像のように間違えのない入力をすることができます。

aiueoosaka
質問者

お礼

>このようなシートでの運用で最も気を付けなければならないことは売り手や買い手のデータの入力ミス(同じデータで2つの表記をしてしまうなど)で必要なデータが抽出できなくなる可能性があることです。 本当に仰るとおりで、その部分が最も懸念している点です。 L列に数式を入力し、それをドロップダウンリスト化する方法なのですが、 ・手打ちテンキー入力のほうが効率がいい(打ち間違いリスクはありますが速い) ・基本的に売り手側は連続して獲れた海産物を競り場に出品していきます 上記のため、わたくしとしましては、売り手、買い手についてはDDL化せずに進めたいと思っています。 明細書発行時に、売り手、買い手を各業者正式名 例) 売り手101を、株式会社Macky 買い手501を、株式会社aiueoosaka としてヒモ付して、会社名をシート一覧に書き出して、クリックすることで、売買内容を印刷する方式を思案しております。 一部の方は、売りメインですが、場合によっては必要なものも買っていきます(あるいはその逆も)。 No.3にてご回答いただきました方法をメインに進めて行きたいと思いますが その場合、F1に会社名を記入し、買いと、売りを上下に分割して、それを各シートに割り振って印刷マクロを組む方法をと考えています。 MackyNo1さんでしたら、どのような方法を取るのか、恐れ入りますがお時間ありましたらお答えいただけましたら幸いです。

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

No.2です。 >プリントアウトする時にやや時間が掛かりそうなんですが、タイムロスを回避する方法は・・・ VBAでやってみました。 今回は↓の画像のようにSheet1の配置を変えています。 (実データは2行目から) ただどこまでのデータが必要なのか判りませんので、勝手に前回の表通りとしました。 Sheet2を印刷用のSheetとしています。尚、Sheet3は作業用のSheetとして使用していますので 使っていない状態にしてみてください。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り「売り手」「買い手」のマクロを実行してみてください。 Dim i As Long, lastRow As Long, wS2 As Worksheet, wS3 As Worksheet 'この行から Sub 売り手() Set wS2 = Worksheets("Sheet2") Set wS3 = Worksheets("Sheet3") With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row .Range("E:E").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS3.Range("A1"), unique:=True For i = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row wS2.Cells.Clear .Range("A1").AutoFilter field:=5, Criteria1:=wS3.Cells(i, "A") If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then wS2.Range("A1") = wS3.Cells(i, "A") & "様" wS2.Range("C1") = "支払明細" wS2.Range("F1") = Format(Now(), "yyyy/mm/dd h:mm") Range(.Cells(1, "A"), .Cells(lastRow, "H")).SpecialCells(xlCellTypeVisible).Copy wS2.Range("A2").PasteSpecial Paste:=xlPasteValues wS2.Cells(Rows.Count, "A").End(xlUp).Offset(1) = "合計" wS2.Cells(Rows.Count, "H").End(xlUp).Offset(1) = WorksheetFunction.Sum(wS2.Range("H:H")) wS2.Range("D:E").Delete wS2.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous wS2.Columns.AutoFit wS2.PrintPreview End If Next i .AutoFilterMode = False End With wS3.Cells.Clear End Sub Sub 買い手() Set wS2 = Worksheets("Sheet2") Set wS3 = Worksheets("Sheet3") With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row .Range("G:G").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS3.Range("A1"), unique:=True For i = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row wS2.Cells.Clear .Range("A1").AutoFilter field:=7, Criteria1:=wS3.Cells(i, "A") If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then wS2.Range("A1") = wS3.Cells(i, "A") & "様" wS2.Range("C1") = "請求明細" wS2.Range("D1") = Format(Now(), "yyyy/mm/dd h:mm") Range(.Cells(1, "A"), .Cells(lastRow, "H")).SpecialCells(xlCellTypeVisible).Copy wS2.Range("A2").PasteSpecial Paste:=xlPasteValues wS2.Cells(Rows.Count, "A").End(xlUp).Offset(1) = "合計" wS2.Cells(Rows.Count, "H").End(xlUp).Offset(1) = WorksheetFunction.Sum(wS2.Range("H:H")) wS2.Range("F:G").Delete wS2.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous wS2.Columns.AutoFit wS2.PrintPreview End If Next i .AutoFilterMode = False End With wS3.Cells.Clear End Sub 'この行まで ※ 印刷プレビューで止めています。 とりあえず印刷プレビューで確認し、手動で「印刷」をクリックしてください。 まずはこの程度で・・・m(_ _)m

aiueoosaka
質問者

お礼

なるほど、こういうやり方があるんですね。 ワンボタンで印刷までいけるとはありがたいです。 こういう考え方があるとは思いませんでした。 ありがとうございます!

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

F1セルに売り手の名前を入力した場合(実際は入力規則でドロップダウンリストから選択するほうが簡単)、G4セルに以下の数式を入力して、セルの書式設定で表示形式をユーザー定義にして「0;;;@」右方向および下方向にオートフィルすればご希望の詳細が表示されます。 =INDEX(B:B,SMALL(INDEX(($A$2:$A$1000<>$F$1)*1000+ROW($A$2:$A$1000),),ROW(1:1))) 買い手の内訳を表示する場合は、上記の式のA列とB列を入れ替えた数式にしてください(この場合は右方向にオートフィルして2列目を削除してください。

aiueoosaka
質問者

お礼

早速ありがとうございます! すごくスマートですね。 この後は 売り手、買い手ごとにシートを作成して ↓ プリントアウトのマクロを組む という方法が一番楽チンな方法なんでしょうか。 他ソリューションがありましたらご教授ください。

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

こんばんは! 忙しいときの入力になると思いますので、極力クリックだけで済ます方法が良いと思います。 一案です。 ↓の画像のような表を作成しておきます。 A・D・F列は入力規則の「リスト」を設定しておきます。 そうすればいちいち入力する必要はなく、リストから選択できます。 A列必要行を範囲指定 → データ → データの入力規則 → 「入力値の種類」で「リスト」を選択 → 「元の値」の欄をクリック → 「品名」のJ列必要行だけ範囲指定 → OK これでA列にプルダウンで「品名」が表示されますので、それをクリックするだけです。 同様にD列も「リスト」表示させます。「元の値」は「売り手」のK列を指定 → OK F列 → 「リスト」 → 「元の値」は「買い手」のM列を指定 → OK これで売り手・書いての入力は不要となります。 そしてE3セルに =IF(D3="","",VLOOKUP(D3,K:L,2,0)) G3セルに =IF(F3="","",VLOOKUP(F3,M:N,2,0)) H3セルに =IF(COUNTBLANK(B3:C3),"",B3*C3) という数式を入れそれぞれをフィルハンドルでずぃ~~~!っと下へコピー! 尚、「数量」と「単価」の列は手入力する必要があります。 ただこれでは単にデータを表示しているだけですので、 各「売り手」・「買い手」の集計が必要になると思います。 その場合はオートフィルタをしても非表示にならない行 例えば1行目のどこかに =SUBTOTAL(9,H:H) という数式を入れておき、2行目すべてを範囲指定 → 必要列でオートフィルタを掛けます。 これで表示されているデータだけの合計が表示されます。 ※ あくまで一案ですので、 他に良い方法があればごめんなさいね。m(_ _)m

aiueoosaka
質問者

お礼

ご提案を頂きとても助かります。 なるほど、最終的にSUBTOTAL関数をつかうんですね。 プリントアウトする時にやや時間が掛かりそうなんですが、タイムロスを回避する方法はありますでしょうか。

  • yasuto07
  • ベストアンサー率12% (1344/10625)
回答No.1

リレーションが必要な場合は、アクセスだっけ、、、それかファイルメーカーが扱いやすいです。 リレーショナルデーターベースと言います。 一枚の伝票の項目を、10枚用意して、積み重ねて、各項目を行き来して、積算できるのです、意味わかるかな。

aiueoosaka
質問者

お礼

他のところではExcelのみで管理しているようでした。 別角度からの提案ありがとうございました。

関連するQ&A

  • 市場の需要(供給)曲線の出し方

    個人の需要(供給)曲線から 市場需要(供給)曲線はどう求めればいいのでしょうか? たとえばこんな問題のとき・・ 売り手1:x=3p-2 売り手2:x=2p-3 買い手1:x=ーp+10 書い手2:x=-2p+9 買い手・売り手はプライステーカーとする。 近郊需給量・均衡価格は? 私はとりあえずp=の形にして、売り手・買い手それぞれで 足して(水平和?)市場需要(供給)曲線を作ったつもりで連立してみたのですが答えとあいません^^; ちなみに答えは価格3、需給量10です。 よろしくお願いします。

  • 買い手市場の時に就職活動をした事

    最近就職活動で「売り手市場」というニュースをときたま目に致します。私はこの時非常に悔しく思います。理由は、私は超が付くほど買い手市場の時に就職活動をして、物凄く嫌な思いをしたからです。なかなか内定を貰えず、やっと貰えたと思ったら、家族に「大学まで出てなんでこんなへんちくりんな企業しか内定を貰えないんだ?人に聞かれたら恥ずかしいから企業名を答えるな。」とまで言われ、就職祝いも貰えずしばらく絶縁状態でした。大企業はおろか中小企業の内定も容易でなかったです。 その反面売り手市場の時に就職活動した人間が本当に恨めしいです。これからどんどん人口も減少していくわけですから就職活動も楽になると思います。 就職だけでなく進学もかなりしんどかったですし、結婚も男性が圧倒的に多い世代なので男性は完全に買い手市場です。 悪い事をしたわけでないのにあまりにも怒り心頭です。反対にこんな状況で得する事は何か一つでもありますか? こんな時代に産んだ親を恨む事さえあります。

  • 転職で、内定をもらった時の対応でこういう交渉したことありますか?

    転職で、内定をもらった時の対応でこういう交渉したことありますか? よろしくお願いします。 転職で、2つの会社に応募していて、ひとつの会社(A社とします)から内定が先に出たとします。 自分としてはもうひとつの会社(B社とします)にも興味がある、 A社に、現在他の会社にも応募していて、B社の選考が終わるまで回答を保留してもかまわないか、 というような交渉をしたことはありますか? 売り手市場ならともかく、現在の買い手市場では難しいとは思いますが。。。 よろしくお願いします。

  • 就職難/売り手市場の受験社数

    就活で,就職難の時はそうでない時に比べ,数多くの企業を受けないと (志望度のあまり高くない企業も受けないと) 内定を貰えませんが, 新卒の就職で,就職難の時・売り手市場の時それぞれ何社ぐらい受ければ内定貰えるものですか?

  • 完全競争市場の均衡条件について。

    完全競争市場の均衡条件について。 少しミクロ経済学かじり始めた初心者です・・ 「完全競争市場の均衡条件についてグラフを使って説明する」 という課題が授業で出たのですが、おおざっぱに言うと以下の内容を描けば、的外れになってませんか?? ■完全競争市場には以下の条件が成立していないといけない。 (1)多数の売り手・買い手の存在 (2)財の同質性 (3)情報の完全性 (4)自由参入・退室 ■完全競争市場では「市場均衡」の状態が達成されなければならない。また価格は「均衡価格」の状態。 ■「グラフを使って説明」に関しては、市場均衡を表している「需要曲線と供給曲線の図」を描いて説明すれば、的外れになりませんか?(←需要曲線と供給曲線がバッテンで交わっている図のこと。交点が市場均衡であり、この時の価格が均衡価格。) また、教科書には「多数均衡」のグラフも記載されてますが、これは特にふれるところではありませんか? ご指導下さいm(__)m

  • 楽天市場の個人情報について。

    最近楽天で買い物をするようになったのですが、 Q&Aを読んでもよくわからなかった事があるので、ぜひ教えてください。 1.楽天市場で買い物をした際、入力されたクレジットカードの番号は、お店側に知られるのでしょうか? Q&Aには、楽天市場のシステムで止まると書いてあったので、 お店側にはカード番号は知られないと思っていたのですが、カードの明細書には、利用店名で請求が来ていました。 2.懸賞市場に応募した際、当選した場合・落選した場合、どの程度の個人情報が先方に渡るのでしょうか? よろしくお願いします。

  • 仲介時の領収書について

     物販仲介時の領収書についての質問です。  宜しくお願い致します。現在、日用雑貨類の仲介販売をしています。  売り手には明細書(販売)、買い手には明細書(購入)を渡しているのですが、時々、 買い手の方から、領収書が欲しいと言わます。そういう時、こちらは仲介をしている だけなので、仲介の手数料分の領収書は発行するけど、全額の領収書は出せない と答えています。  たしかに買い手からすれば、10万円払ったら10万円分の領収書が欲しいという のは当然だと思うのですが、こちらも10万円預かって、手数料を引いた金額を売り 手の方に渡しているので、10万円分の領収書を発行するとおかしくなると思ってい ます。   多分、売り手からこちら宛に領収書を発行してもらえばいいと思うのですが、諸般 の事情でそれが困難な状況にあります。  そこで教えていただきたいのは、現在発行している明細書が領収書の代わりに なるのかどうです。  ちなみに、現在、明細書には、販売・購入共に合計金額と日付、こちらの屋号のみ を載せています。また、それぞれ請求しますや領収しましたというような文言は載せ ていません。購入と販売の区別はあたまの明細書(販売)と明細書(購入)だけです。  これでは、領収書にはならないや、項目や文言を付け加えれば領収書になるなど のアドバイスをいただければと思っています。  皆様、宜しくお願い致します。 

  • 経理について教えてください

    質問を解りやすくするために例題にして質問します。 A社(売手)はB社(買手)にシステム一式を販売します。A社は3月中に導入システムの検収を完了するために、3月度で処理し消費税5%で請求書を発行します。しかしB社では4月度の処理をする予定です。消費税が8%になっていなくても問題はないでしょうか? 契約書類の日付は関係ないものとして教えてください。

  • 築地の魚の競りについてなのですが、なぜ魚の競りが行われているのかを知る

    築地の魚の競りについてなのですが、なぜ魚の競りが行われているのかを知るきっかけとなる本がもしあれば 教えて下さい。

  • 特別買い(売り)気配とは?

    市場が始まった段階で多く出る「特別買い(売り)気配」とはどんな状態なのでしょうか? 買い手(売り手)しか無い状態なのかと思っておりましたが、売り手(買い手)がいないとはとても考えられないような銘柄でも発生しておりますので、どうもそうではなさそうです。 確かに、「特別買い(売り)気配」の状態時の「気配画面」を見る限り、一本値の買い(売り)しか入っていないように見えます。しかし、一旦値が付いた後の「気配画面」を見ますと、付いた値の前後に多数の「売り」「買い」が入っていることから考えますと、どうも「特別買い(売り)気配」の取引が、一般の取引を押しのける形で行われている(だから「特別」なのでしょうが)ようです。一体、「特別買い(売り)気配」とはどのようは取引なのでしょうか? また、どんな目的・理由で優先して取引するのでしょうか?

専門家に質問してみよう