• ベストアンサー

エクセルで可能ですか?

エクセルを使って以下のことができるでしょうか? 36品目があり、同じ価格のものが一つもありません。 また36品目はキッチン用品、掃除用品、文具、雑貨で 各9品目です。 これらを、6個セットで販売するための組合せ表を作成し また、いろいろな条件を設定して組合せ表示させることは できるでしょうか? 設定条件例 ・5個セットの合計が○○円以上○○円以内 ・4個以上同じ種類のものが入った組合せの除外 ・任意の商品の除外(種類によって在庫数がまちまちなため) 単一条件設定や複数条件設定ができること など… エクセルなどのソフトは今まで使ったことがなく、ただ漠然と表計算ソフトだとしか認識してなく、実際どんなことができるのかわかりません。質問内容のようなことができるのか、できないのかの判断だけでも結構です。 また、参考サイトがありましたら教えて頂きたいのでが…エクセル関係を検索しても質問内容が、できるかできないか判断できるサイトを見つけることができませんでした。 もしエクセルでできる場合、出張で表を作ってくれるサービスなどありますか?また、費用はどのくらいするものでしょうか?

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

  • ベストアンサー
  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.3

下記の方が答えられているように、組み合わせが 膨大になり、リアルタイムで処理したいのであれば 最適化手法を駆使する必要があるかもしれません。 しかしながら、ある程度パターンが決まっており、 計算結果を表として持っておくのであれば 総当りで計算してもよいと思います。 小さいデータ例で説明します。 Excelの表に A  B  C 1 k 100 2 k 120 3 k 140 4 s 160 5 s 180 6 s 200 7 b 220 8 b 240 9 b 260 10 z 280 11 z 300 12 z 320 と入力されているとします。 A列は品目名(ここでは番号で示します) B列は種類(キッチン用品、掃除用品、文具、雑貨の略) C列は値段 です。 Excelの[ツール]-[マクロ]-[Visual Basic Editor] を開き、 そのVisual Basic Editorの[挿入]-[標準モジュール] を開きます。 そこに以下のコードをコピーしてください。 そして、F5を押してもらうと、 合計金額が500円以上の組み合わせの 品目番号(e-h列)と合計金額(i列) がシートに書き込まれます。 このコードをを工夫することによって、 目的の条件に合致したものだけ書き出すことが できます。 '----コードはここから----- Sub test() Dim i1 As Integer Dim i2 As Integer Dim i3 As Integer Dim i4 As Integer Dim n As Integer Dim goukei As Integer n = 0 For i1 = 1 To 9 For i2 = i1 + 1 To 10 For i3 = i2 + 1 To 11 For i4 = i3 + 1 To 12 n = n + 1 goukei = 0 goukei = Range("c" & i1) goukei = goukei + Range("c" & i2) goukei = goukei + Range("c" & i3) goukei = goukei + Range("c" & i4) If goukei > 500 Then Range("e" & n) = i1 Range("f" & n) = i2 Range("g" & n) = i3 Range("h" & n) = i4 Range("i" & n) = goukei End If Next i4 Next i3 Next i2 Next i1 End Sub '-----ここまで-----

nascar
質問者

お礼

おぉ!具体例まで出していただけるとは! コードについては理解できませんが、実際どのようになるのか自分でトライしてみようと思います。 とても参考になる回答ありがとうございました。

その他の回答 (2)

  • Silent-G
  • ベストアンサー率15% (2/13)
回答No.2

VBAを使えばできますが、かなり大変だと思いますよ。 種類とか、品目などを除外したとして、 全組み合わせは 36*35*34*33*32*31=1,402,410,240 で、Excelの1シートで扱える行数(65536)をはるかに超えています。 というわけで、パターンを作り出すだけでも難しいですね。 さらに、その中から絞り込みをかけることに なるわけですから大変です。

nascar
質問者

お礼

VBAを使えば可能なんですか?といってもVBA自体よく分かりません。ネットで検索してみたら、VBAでゲームなども作れるんですね!早速DLして遊んでしまいました(笑) それは、それとして… 大変だけどVBAで可能ということが分かっただけ進歩しました。 回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

エクセルでは使い方を私は4種ぐらいに分けています。 (1)人手操作--通常の操作 (2)関数を使う-関数式を作る (3)VBA----VBのプログラムを組む (4)アドイン--特別の機能を実現するソフト (1)で組み合わせの問題を処理すると、試行錯誤の繰り返しの回数が膨大になったりして、事実上不可能になる可能性が大きい。 (2)は組み合わせには向かないと思う。 (3)はプログラムを組むので、ロジック的には何でも出きるが、試行錯誤の繰り返しの回数が膨大になったり、素人が組むと、素人的場当たり的エラーを含んだプログラムになることが考えられるので万能ではない。 (4)も(3)と似たようなもの。これは熟達者が組んだものを利用するものです。ピッタリのものが見つかれば 良いが、あるとは限らない。 以上はエクセルであるからと言うよりも、手続き的プログラムの限界から来るものと思います。 本質問の型の問題解決は、数学的な裏付けがしっかりした やり方(アルゴリズムに基ずいて)でやるべきです。「線形計画法」を使った解き方が近いのかなと思う(自信なし)。 IF-THENルール、エキスパートシステム、人口知能などとも 関連する問題と思う。 エクセルのような表計算ソフトは適さないと思います。 --- http://www.affrc.go.jp/seika/data_narc/h10/narc98S520.html http://cse.naro.affrc.go.jp/ooisi/xlp.html のようなものはあるらしいが、エクセルはインプット(データや条件入力)とアウトプット(結果表示)で使われているだけで、解を見つける処理プログラムは、エクセルと関係がないと思われる。 ---- 「線形計画法」と言えば、エクセルには「ソルバー」(一種のアドインか)と言う機能があり、それでとける問題もある。 http://zhangyi.at.infoseek.co.jp/data_ana/lp.html 以上小生が使いこなしてない分野で、ムード的説明になっており済みません。少しでもご参考になれば幸いです。

nascar
質問者

お礼

とても丁寧な回答ありがとうございます。 回答にあるURLを閲覧してみましたが、ちんぷんかんぷんでした(恥) 質問の内容を実行させるには、やはり別のプログラムを作るべきなんでしょうね。しかし、エクセルすら使い方が分からない私にとっては今から勉強したのでは日が暮れてしまうどころか何年かかるか分かりません。 もし、低料金でプログラムを作成してくれるサービスなど知っていたら、教えていただけますでしょうか?個人法人問いません。

関連するQ&A