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

はじめまして!

VBAの記述の方法が分からず困っています。
過去の質問も検索してみましたが、自分のケースにどうあてはめればよいかわからず・・。
どなたが教えていただけないでしょうか?


A1~AK1までそれぞれ1~37までの数字が入力されています。
組み合わせとして、そこから35個の数字を選ぶ場合の全通りを記載したいです。
2行目のA1~AI1までに選んだ35個の数字を出力し、
1行ずつ下にずらしていきたいです。


大変お手数ですが・・・よろしくお願いします・・・

A 回答 (1件)

えっとどこまでは出来ているのでしょうか。



まず全体の組み立てを考えてみてはどうでしょう。
わたしは原始的ですが以下のように考えてみました。

・37個の数値のうち、35個を選ぶ → どれか2つを取り除く
・その取り除く2つの組み合わせを全部記載する
・=COMBIN(37,35)で見てみると、666通り。

それでは、2行目以下に666通りを記載してみよう。

というわけで、

空白シートで以下。

Sub aaaaa()
Dim r As Integer, c As Integer
Dim p As Integer, q As Integer

ActiveWindow.Zoom = 70
Range(Columns(1), Columns(41)).ColumnWidth = 4

For r = 1 To 667
For c = 1 To 37
Cells(r, c).Value = c
Next c
Next r

r = 2
For p = 1 To 37
For q = p + 1 To 37
Cells(r, 40).Value = p
Cells(r, 41).Value = q
r = r + 1
Next q
Next p

For r = 2 To 667
Cells(r, Cells(r, 40)).ClearContents
Cells(r, Cells(r, 41)).ClearContents
Next r

Application.ScreenUpdating = False
For r = 667 To 2 Step -1
For c = 37 To 1 Step -1
If Cells(r, c).Value = "" Then
Cells(r, c).Delete shift:=xlToLeft
End If
Next c
Next r
End Sub


一番上には1~37を示し、2行目以降は全組み合わせを記載しました。
AL、AM列には取り除いた2つの値を記載しています。

ご確認ください。
    • good
    • 0
この回答へのお礼

ありがとうございますm(_ _)m
とてもわかりやすい記述で、とても勉強になりました!

私の努力が足りないようなので、もっともっと精進します!

お礼日時:2011/07/18 18:18

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