![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.2ベストアンサー
- 回答日時:
以下でどうなりますか
★ 部分を有効にすると、左詰め表示します
Public Sub Samp1()
Dim vA As Variant, vB As Variant
Dim i As Long, j As Long, k As Long, n As Long
vA = WorksheetFunction.Transpose( _
Range("A1", Cells(Rows.Count, "A").End(xlUp)))
Application.ScreenUpdating = False
With Range("C1").Resize(, UBound(vA))
.EntireColumn.Clear
k = 1
For i = 1 To UBound(vA)
ReDim vB(1 To UBound(vA))
j = 1
n = 0
Do While (1)
While (n < i)
vB(j) = vA(j)
j = j + 1
n = n + 1
Wend
k = k + 1
.Rows(k).Value = vB
vB(j - 1) = Empty
n = n - 1
If ((UBound(vA) - j + 1) < (i - n)) Then
j = j - 2
Do While (j > 0)
If (vB(j) <> "") Then
vB(j) = Empty
j = j + 1
n = n - 1
If ((UBound(vA) - j + 1) >= (i - n)) Then Exit Do
j = j - 1
End If
j = j - 1
Loop
If (j < 1) Then Exit Do
End If
Loop
Next
With .Resize(k)
.HorizontalAlignment = xlCenter
.Borders.LineStyle = xlContinuous
On Error Resume Next
' .SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft ' ★
.Columns.AutoFit
End With
End With
Application.ScreenUpdating = True
End Sub
30246kikuさん
ありがとうございます。
ほぼイメージ通りなのですが、一点気になるところがあるので質問させてください。
ふた通り以降の組み合わせで、りんごとみかんの出力は問題ないのですが、みかん以降の組み合わせを出力する際にりんごと組み合わせるパターンがなくなってしまいます。
りんごの組み合わせの場合は、6通りでみかんの組み合わせの場合は5通り、以降は4通り、3通りと減っている形になります。
これを、全て6通りの出力パターンにしたいです。
以降のりんご、みかん、ばななの組み合わせの際も同様です。伝わりにくいかも知れませんが、対処法を教えて頂けないでしょうか
よろしくお願い致します。
No.1
- 回答日時:
こんにちは。
基本的に、数式では、
n C r
n=総数 r=抜き取り数
ですね。
おっしゃっている「ひとつだけ、ふたつだけ」というのは、[抜き取り数]だと思います。
しかし、「値が全てブランク」というのは、
論理的にはあるかもしれませんし、Excelでも、
=COMBIN(7,0) 答えは1
として成立するようですが、これは省かせていただきます。
検算方法としては、 = COMBIN(7, i)
7つの内1つ 7
7つの内2つ 21
7つの内3つ 35
7つの内4つ 35
7つの内5つ 21
7つの内6つ 7
7つの内7つ 1
----
合計:127
ということでよろしいでしょうか?
以下は、古くからある組合せアルゴリズムを今風にアレンジしたものです。
'//
Dim n_TOTAL As Long 'Numbers of total -全体の個数
Dim r_PICK As Long 'Numbers of extraction -抽出数
Dim k As Long
Sub MakingCombin()
Dim Stock() As Variant
Dim i As Long
n_TOTAL = Cells(Rows.Count, 1).End(xlUp).Row 'A列のA1から
For r_PICK = 1 To n_TOTAL
ReDim Stock(0)
For i = 1 To n_TOTAL
ReDim Preserve Stock(i - 1)
Stock(i - 1) = Cells(i, 1).Value
Next i
Call sCombinations(Stock, r_PICK)
Next r_PICK
End Sub
Sub sCombinations(ByRef Stock() As Variant, ByVal r As Long)
Dim num As Long
Dim ar As Variant
Dim i As Long, j As Long
'Dim k As Long
num = UBound(Stock) - LBound(Stock)
r = r - 1
ReDim ar(0, r)
Dim idx() As Long
ReDim idx(0 To r)
For i = 0 To r
idx(i) = i
Next i
Do
For j = 0 To r
ar(0, j) = Stock(idx(j))
Next j
k = k + 1
Cells(k, 3).Resize(, r_PICK).Value = ar 'C列からの出力
i = r
While (idx(i) = num - r + i)
i = i - 1
If i = -1 Then
Exit Sub
End If
Wend
idx(i) = idx(i) + 1
For j = i + 1 To r
idx(j) = idx(i) + j - i
Next j
Loop
End Sub
'///
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- Excel(エクセル) エクセルの関数について 5 2023/04/30 17:24
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
リンク先のファイルを開かなく...
-
これって喉仏ですか? 私は女性...
-
EXCELで式からグラフを描くには?
-
【Excelで「正弦波」のグラフを...
-
精子に血が・・・
-
Excelで""で囲む方法
-
エクセルのグラフで、値0のとき...
-
風俗店へ行く前のご飯
-
値が入っているときだけ計算結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報