アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルを使って以下のことができるでしょうか?

36品目があり、同じ価格のものが一つもありません。
また36品目はキッチン用品、掃除用品、文具、雑貨で
各9品目です。
これらを、6個セットで販売するための組合せ表を作成し
また、いろいろな条件を設定して組合せ表示させることは
できるでしょうか?

設定条件例
・5個セットの合計が○○円以上○○円以内
・4個以上同じ種類のものが入った組合せの除外
・任意の商品の除外(種類によって在庫数がまちまちなため)
単一条件設定や複数条件設定ができること
など…

エクセルなどのソフトは今まで使ったことがなく、ただ漠然と表計算ソフトだとしか認識してなく、実際どんなことができるのかわかりません。質問内容のようなことができるのか、できないのかの判断だけでも結構です。
また、参考サイトがありましたら教えて頂きたいのでが…エクセル関係を検索しても質問内容が、できるかできないか判断できるサイトを見つけることができませんでした。

もしエクセルでできる場合、出張で表を作ってくれるサービスなどありますか?また、費用はどのくらいするものでしょうか?

A 回答 (3件)

下記の方が答えられているように、組み合わせが


膨大になり、リアルタイムで処理したいのであれば
最適化手法を駆使する必要があるかもしれません。

しかしながら、ある程度パターンが決まっており、
計算結果を表として持っておくのであれば
総当りで計算してもよいと思います。
小さいデータ例で説明します。

Excelの表に
A  B  C
1k100
2k120
3k140
4s160
5s180
6s200
7b220
8b240
9b260
10z280
11z300
12z320

と入力されているとします。
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
'-----ここまで-----
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/03 13:00

VBAを使えばできますが、かなり大変だと思いますよ。



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

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

お礼日時:2003/11/03 12:54

エクセルでは使い方を私は4種ぐらいに分けています。


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

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

お礼日時:2003/11/03 12:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!