Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Excel 2010)
組み合わせを導いてくれるものができるでしょうか?
投稿日時: 20/05/01 20:41:08
投稿者: milkies5

お世話になります
 
たとえば
A列に
10
20
41
52
80
82
15
〜〜〜
とデータを入れていたとします
 
B2に例えば140と入力すると
その下のセルにずらっと
そのデータの中から足すと140になる結果の
たくさんの組み合わせを表示させたいのですができますでしょうか?
 
B列 結果の例
80 15 15 15 15
80 20 10 10
〜〜
 
 
よろしくお願い致します☆

回答
投稿日時: 20/05/02 16:09:58
投稿者: 半平太

回答ではありません m(__)m
 
1.こう言う質問は、データ量(何種類)がどれくらいあるかの情報が重要です。
  多すぎると計算量が膨大になって非現実的な話になるので。
 
2.同じ数値を何回でも使えるんですね?
  そうだとすると、必然的にA列に重複する数値は無いですね?
 
3.「たくさんの組み合わせ」とは、全部の組み合わせ?
   それとも一定数に達したら、それ以上は不要?
 
4.VBAによる解決法も選択肢にありますか?
  あるならVBA板で訊いた方がいいのではないかと思います。
 
あと、つかぬ事ですが、これは仕事関連から出た質問ですか?
それとも、ふとした思い付きからですか?

投稿日時: 20/05/02 16:58:04
投稿者: milkies5

コメントありがとうございました
仕事関連ではないです
送料の切手の組み合わせで毎回苦労するのでどうにかできないかと。。。
 
1、A列のデータ量は多くて10個くらいです
 
2、同じ数値が重複して使えますA列に重複する数値はないです
 
3、組み合わせは一定数ではなく全部の組み合わせが出てくれたほうがうれしいです
  例えば15円の切手の在庫が多いのでたくさん使いたいというときとかもあります
 
4、できれば数式で解決したいです
 
 
できますでしょうか?
 
表自体は何も作っていません
A列、B列は例えばで配置したものですので
やりやすいように構いません
よろしくお願い致します☆

回答
投稿日時: 20/05/02 17:19:31
投稿者: 半平太

>できますでしょうか?
 
種類は思いのほか少ない印象を受けますが、何枚でも使えるので
組み合わせ数としては膨らんで来そうな予感がします。
 
色々お聞きした上で申し訳ないですが、私のスキルでは無理です。
 
他の回答者のレスをお待ちください。

投稿日時: 20/05/02 17:33:30
投稿者: milkies5

すみません〜ありがとうございました
 
完璧なものでなくても
未完成でもすこしでも時間が短縮されればと思っています
今は、合計と差額だけを出して
適当に組み合わせた額面をカチカチと入力しているだけの簡易的なものですので( ;∀;)
 
未完成でもいくつか抽出されるものがあれば
あとは今まで通り、この分は15円切手を使おうとか、アナログで対処しようとも思っています
 
何か思いつくようなことがあれば
未完成でも知恵をお貸し頂けると助かります〜

回答
投稿日時: 20/05/02 22:33:19
投稿者: WinArrow
投稿者のウェブサイトに移動

一つの考え方です。
  
金種計算の論理が使えるかもしれません。
    
でも、在庫数がないのに、計算しても無駄・・・
   
切手種類ごとの在庫数を入れておく。
   
最も枚数の少ない組み合わせを考える。
   
在庫の引き当て関係は数式ではしんどいかも・・・

回答
投稿日時: 20/05/03 09:00:22
投稿者: MMYS

ソルバーを使っては
https://amidagamine.com/notes/3729
 
下記のデータでリンク先通りに進めて
「制約条件の追加」の所をintを選択(binではなく)
 

     A    B        C
1  切手 作業セル 関数
2   82           =SUMPRODUCT(A2:A7,B2:B7)
3   80           
4   52           
5   41           
6   20           
7   15           
8   10           

色々テストしているとリスト上位リストを優先して使うみたいです。
なので切手を降順にソートしておくと良いみたい。
 
 
 
ところで、これは、どのくらいの頻度ですか。
時々なら、現状のやり方が一番効率が良い。
 
頻繁なら、切手は切手は当然減ります。
切手が不足すれは、補充ですね。で、補充は
・よく使う切手。
・計算しやすい単位。
で補充ですよね。
 
必然的に、計算は楽になると思うのですか。
 

投稿日時: 20/05/03 21:34:15
投稿者: milkies5

ありがとうございました!
ソルバーよさそうですね!
何度かやってみましたがうまくできなかったので、
少しバタバタが落ち着いてから、もう一度落ち着いてやってみます!
 
 
切手の在庫とか補充とか、少ない組み合わせとか
そこまでは考えなくても大丈夫です
切手はたくさんあります。
組み合わせの例がいくつか表示されれば残りはアナログでやろうと思っています
 
 
すみません今日も一日慌ただしくてゆっくり時間が取れなかったもので><
切手の処理時間でもいくらか時間短縮できればと思い質問してみたのですが
まとまった時間がなかなか取れず申し訳ございません

回答
投稿日時: 20/05/08 07:39:08
投稿者: WinArrow
投稿者のウェブサイトに移動

milkies5 さんの引用:

切手の在庫とか補充とか、少ない組み合わせとか
そこまでは考えなくても大丈夫です
切手はたくさんあります。
組み合わせの例がいくつか表示されれば残りはアナログでやろうと思っています

肝心なことが置き去りになっていませんか?
 
機械的に組み合わせを求めることが、仕事の効率を高めることにはつながらないということです。
提示の種類おなかに1円、5円切手がないけれど、
例えば、
1円が140枚
15円x9枚+10円x1枚
のような組み合わせが出たとして
封筒の表面が切手だらけになってしまいます。
封筒に貼付する切手には、面積的な限界がある・・・・つまり、あなたがいうアナログにならざるを得ない
ということです。
実際に使えるツールにしないと、単純なお遊びです。
 
 
 
 

回答
投稿日時: 20/05/15 19:48:42
投稿者: んなっと

再計算に時間がかかるし、重複した結果も出ますが...
 
 
A1に目標金額、A2:A15に切手金額
 
   A   B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q
 1 140  140                                      
 2  10     14    11  12       1  5  1       6       1
 3  15          2     8     2       2       4     2
 4  20   7     7     1  1  7  5     2  1  3       3  1
 5  41                                         
 6  52                                         
 7  80                              1  1  1  1  1
 8  90                       1  1  1             
 9                                           
 
17                                           
18     10  20  30  40  50  60  70  80  90 100 110 120 130 140  -   
19     15    45    75    105    135  -               
20                       -                    
21     41  82 123  -                              
22     52 104  -                                 
23        -                                   
24        -                                   
25                                           
 
33                                           
34       140 265 258 255 245 240 239 235 225 217 215 210 205 195 187
35    合計  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
36                                           
37  20  140  20                                   
38  15  135    15  15  15  15  15  15  15  15  15  15  15  15  15  15
39  10  130    10                                 
40  41  123       41                              
41  20  120         20                            
42  10  110            10                         
43  15  105              15                       
44  52  104                 52                    
45  20  100                   20                  
46  90  90                      90               
47  41  82                        41             
48  80  80                           80          
49  15  75                             15        
50  10  70                                10     
51  20  60                                  20   
52  52  52                                     52
53  10  50                                      
54  15  45                                      
55  41  41                                      
56  20  40                                      
57  15  30                                      
58  20  20                                      
59  15  15                                      
60  10  10                                      
 
B1
=MIN(34:34)
B2
=IF($A2="","",IFERROR(TEXT(SUMIF(INDEX($37:$200,,MATCH(COLUMN(A2),$35:$35,0)),$A2,$B$37:$B$200)/$A2,"0;;;")*1,""))
右方向・→下方向・↓[AE15まで]
B18
=IF($A2="","",IF(OR(COUNTIF(A18:$A18,"-"),COUNTIF($17:17,$A2*COLUMN(A2))),"",IF($A2*COLUMN(A2)>$A$1,"-",$A2*COLUMN(A2))))
右方向・→下方向・↓[AE31まで]
 
 
C34
=IFERROR(TEXT(SUMIF(C37:C200,">0",$B37:$B200),"[>="&$A$1&"]0;;;")*1,"")
右方向・→[LL列まで]
C35
=N(B35)+(C34=$A$1)
右方向・→[LL列まで]
 
A37
=IF(B37="","",LOOKUP(1,0/(MOD(B37,A$2:A$15)=0),A$2:A$15))
下方向・↓[200行まで]
B37
=IFERROR(LARGE($18:$31,ROW()-ROW(B$36)),"")
下方向・↓[200行まで]
C37
=IF($B37="","",IF(AND(COLUMN(A37)>1,SUM(B$37:B$200)=0),"",IF(SUMIF(C$36:C36,">0",$B$36:$B36)>=$A$1,"",IF(AND(COLUMN(A37)>1,SUM(B38:B$200)=0),IF(B37<>"","",$A37),IF(B37="","",$A37)))))
右方向・→下方向・↓[LL200まで]

回答
投稿日時: 20/05/15 20:21:34
投稿者: んなっと

LL列まで LL200まで の「LL」の部分は、切手の種類が少し増えただけで
QQとかZZに増やす必要がでてくるかもしれません。
ただし、再計算に何秒もかかるようになってしまいます。

投稿日時: 20/05/20 22:07:36
投稿者: milkies5

ありがとうございます☆
すみませんゆっくり時間が取れずにやっと覗いてみましたら大がかりなものが提示されておりましてびっくりしました〜
お時間とらせてすみません。
 
書かれている通りにやってみたのですが、
同じ結果にならずに苦戦しております〜
 
私の結果がこうなりました。
 

	A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V							
1	140	140																											
2	10	2		14	14		2	11	12	12	11			2	2		1	1	2	1	1	5							
3	15	2						2			2	8	8	8	8		2	2		2	2								
4	20	1	7			7	6		1	1		1	1			7	5	5	6	5	5								
5	41	2																											
6	52	2																											
7	80	1																											
8	90	1																				1							
9																													
10																													
11																													
12																													
13																													
14																													
15																													
16																													
17																													
18	10	10	20	30	40	50	60	70	80	90	100	110	120	130	140	-													
19	15	15		45		75		105		135	-																		
20	-																												
21	41	41	82	123	-																								
22	52	52	104	-																									
23	-																												
24	-																												
25																													
26																													
27																													
28																													
29																													
30																													
31																													
32																													
33																													
34	140	265	140	265	258	255	245	240	239	235	225	217	215	210	205	195	187	187	185	180	176	176	175	165	155	150	150	145	145
35	合計	1	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2
36																													
37	20	140	20																										
38	15	135		15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15	15
39	10	130		10																									
40	41	123			41																								
41	20	120				20																							
42	10	110					10																						
43	15	105						15																					
44	52	104							52																				
45	20	100								20																			
46	90	90									90																		
47	41	82										41																	
48	80	80											80																
49	15	75												15															
50	10	70													10														
51	20	60														20													
52	52	52															52												
53	52	52																52											
54	10	50																	10										
55	15	45																		15									
56	41	41																			41								
57	41	41																				41							
58	20	40																					20						
59	15	30																						15					
60	20	20																							20				
61	15	15																								15			
62	15	15																									15		
63	10	10																										10	
64	10	10																											10

 
 
 
B2〜AE15に答えが出るんですよね?
A2~A15は小さい順に入力したほうがいいんでしょうか?
間に空白とかはない方がいいですか?
 
A18〜A24は10,15、-、41,52、-、-、をそのまま入れておくのでしょうか?
A34,B34,B35もそのまま固定の数字でしょうか?
 
質問ばかりですみません
そして遅くなってすみませんでした (*_ _)人

回答
投稿日時: 20/05/21 08:21:21
投稿者: んなっと

引用:
A18〜A24は10,15、-、41,52、-、-、をそのまま入れておくのでしょうか?

違います。空欄で。
B18
=IF($A2="","",IF(OR(COUNTIF(A18:$A18,"-"),COUNTIF($17:17,$A2*COLUMN(A2))),"",IF($A2*COLUMN(A2)>$A$1,"-",$A2*COLUMN(A2))))
と書きましたよ?
引用:
A34,B34,B35もそのまま固定の数字でしょうか?

違います。数字を入れるなどと書いていません。

トピックに返信