[[20040911070457]] 『行が足りません』(めっち。) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行が足りません』(めっち。)

 ある問題をエクセルで解こうとしています。
 □□+□□+□□=□□□
 この□に数字を入れるのですが、つまり二桁の足し算をして三桁になる組合せですよね。
 左項には、それぞれに10〜99が入り、右項には100〜999が入ると思うのですが、
 これを根気強くエクセルで入力していったらセルが全然足りませんでした。

 と言うか、最初は思い違いをして左項を11〜99にしてしまったのです。
 A B C D E F   G
 1 1 1 1 1 1  =10*A+B+10*C+D+10*E+F
 1 1 1 1 1 2
 1 1 1 1 1 3
 1 1 1 1 1 4
 ・
 ・
 ・

 それでも1シートで(A-G列のみ使用)5万行を超え、A列が1の場合だけでシートがいっぱいになってしまいました。
 つまり、全部で9シート。。。これが10〜99だと、もっと増えますよね?
 すべての組合せを表示させたあとで、G列にフィルタをかけて3桁を抽出し、
 この別シートの中から同じ組合せを削除していき、最終的には1シートにまとめたいと思ったのです。
 が。ここで途方にくれてしまったのです。
 それって、どんな関数?
 9シートを参照して重複がなかったら10シート目のABC列の1行目から入力していき、
 ABC列がいっぱいになったら、DEF列へ、そこも詰まったらGHI列へ?

 もしかして関数では無理?とか考えているうちに朝になってしまいました。
 私の考え方自体に無理があるのでしょうか?
 どのようにして解いたらよいのでしょうか。

 朝から拝見していて、気になって、気になって。
単純な組み合わせ数を考えると、=90*90*90で729000通りあるわけですから、
一行一組なら、12シート必要です。大変です。
「二桁の足し算をして」なのにわざわざ一桁ずつセルに分けて、再び
計算式で=10*A+B+10*C+D+10*E+F としているのも何か意味があるのでしょうか。
二桁の数値をひとつのセルに入力すればいいんでないの?
ということで、横方向に展開してみては?というのが次の案。
	A	B	C	D	E
1			10	11	12
2	10	10	30	31	32
3	10	11	31	32	33
4	10	12	32	33	34
5	10	13	33	34	35
6	10	14	34	35	36
 
A2に「10」と入力、A3に「=IF(MOD(ROW(A2)-1,90)=0,A2+1,A2)」を入力して
フィルハンドル(セル選択枠の左下にある、小さい■)をマウスで
ポイントしてA8101までドラッグ。
90行ごとに1ずつ増える連番が出来ます。
B2に「10」、B3に「11」を入力して二つのセルを範囲選択、
B100までフィルドラッグ。10から99までの連番作成。
B101に「=B2」を入力してフィルハンドルダブルクリックで
B8101までの連番繰り返しが出来ます。
C1に「10」、D1に「11」を入力してCN1までフィルドラッグ。
10から99までの連番作成。
C2に「=$A2+$B2+C$1」を入力し、C2:CN8101までフィルドラッグ、
もしくはコピー、貼り付け。
ということで計算そのものは出来るのですが、
いったい何をするための計算なのか、何回読んでもよくわからない。
このような表作成で(めっち。)さんが利用できるものかどうかも
わかりません。
 
【注】足し算とはいえ、数式がたくさん入力されているので、
再計算にとっても時間がかかる場合があります。
計算結果だけが重要な場合は、値貼り付けなどで定数に固定した
ほうがいいでしょう。
(KAMIYA) 
(ちゅうねん)さんがこう言うの得意そうですが、見てくれないかなぁ〜


 VBA総当りで、ご飯を食べてるうちに算出してくれたようなのであげときます。
 約24MBあります(笑)。
 (ramrun) 

http://members.at.infoseek.co.jp/ryusendo/img/sample.xls


 [KAMIYA]さんからご指名をいただいておりましたが、私のPC(WinXP)が、編集を選択しても
 何にも起こらないし、新規登録を選択しても空の画面([初めての方へ]…と、YukiWiki…の
 行だけの表示)になるし…となってしまい、返事が遅くなりました。m(_ _)m
 ひとまず別のPCを使って参加しています。

 さて、「同じ組合せを削除していき」をいう表現があるので、30+40+50 も 40+30+50 も
 一組と見なして、一つだけあれば良いと考えました。

	A	B	C
   1	10	10	80	←数字を手で打ち込む
   2	10	10	81	←下記の式を入力
   :	:	:	:	←2行目をコピーする

 A2: =IF(OR(B1<99,C1<99),A1,A1+1)
 B2: =IF(C1<99,B1,IF(B1<99,B1+1,A2))
 C3: =IF(C1<99,C1+1,MAX(B2,100-A2-B2))

 A列の値≦B列の値≦C列の値 とすることで、同じ組合せができないようにしています。
 ただし、これでも65536行を超えますので、次のシート(あるいはE列から)に、続きの数字を
 手入力して計算を継続してください。
 なお、2桁の数字の足し算という制限の判定をしていませんので、単にコピーすると最後の
 方は100を超えてしまいます。手で削除してください。
 ちなみに、115,002 個の組み合わせができます。
 (ちゅうねん)

 ちゅうねんさんへ、Yosh!です。
>私のPC(WinXP)が、編集を選択しても何にも起こらないし、
>新規登録を選択しても空の画面([初めての方へ]…と、
>YukiWiki…の行だけの表示)になるし…となってしまい

 私も同じような現象になった事があります。私の場合は、その原因は
セキュリティソフトの設定でした。私はNorton Internet Securityを
使用しているのですが、プライバシー設定で[ブラウザプライバシー]を
無効にしたら学校での編集ができるようになりました。
もし、ちゅうねんさんがセキュリティソフトをお使いなら、
その辺りの設定を確認されてみてはいかがでしょうか。
全然見当違いな書き込みでしたらごめんなさい。

 [めっち。]さんの質問に全然関係のない書き込み、失礼しました。(Yosh!)


 > ...私のPC(WinXP)が、編集を選択しても何にも起こらないし、
 > 新規登録を選択しても空の画面([初めての方へ]…と、YukiWiki…の
 > 行だけの表示)になるし…となってしまい、返事が遅く...

 ご迷惑をおかけしています。
 多分このボード用CGI-Perl のCookie が残ってしまっているのです。

 C:\Documents and Settings\USER名\LocalSettings\Temporary Internet Files

 に下↓のようなものが残っていると思いますので、まとめて削除してください。

 kazuwiki2.cgi?mycmd=edit&mypage=[20040912000000]

 (kazu)

 ちゅうねん です。私のPCで編集できるようになりました。
 最初に[kazu]さんの方法を試しましたが、変化ありませんでした。
 Cookie はたくさん残っていましたが、そのせいでは無かったです。
 [Yosh!]さんのご指摘通り、私もNorton Internet Securityを使っていましたので、
 [ブラウザプライバシー]を無効にしたら編集できるようになりました。
 [Yosh!]さん、[kazu]さん、ありがとうございました。
 [めっち。]さん、ボードお借りして助かりました。ありがとうございました。
 (ちゅうねん)

 休日中に考えて頂きました皆様、本当に有難うございました!
 お返事が大変遅くなり申し訳ございません。
 KAMIYAさん、すみません、>B100までフィルドラッグ。10から99までの連番作成。
 とありましたがBは91までで終わってしまって、なぜ?と考えてるうちに行き詰まってしまいました(情けない)
 ちゅうねんさんの御提案、行が足りなくなったときに手入力が必要とのことで...
 rumranさんの、とても重たかったので落とすのが今日になりました。
 ありがとうございます、とてもシンプルなマクロを作っていただいて、これからマクロの勉強をしようと思います。
 ありがとうございました。
 (めっち。)

 >Bは91までで終わってしまって、
(^_^;)そのとおりです。たしかにB91です。
確認ミスでした。
(KAMIYA)

 KAMIYAさんの方法、落ち着いてゆっくりやってみました。
 できた全ての組合せを、条件書式で色付けしたら階段状に綺麗に表示されました。
 そしてramrunさんのデータと同じ23メガ強になりました。
 お力を貸して頂き、有難うございましたm(__)m
 (めっち。)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.