宏导出x> n范围值的所有n组值组合

时间:2014-07-27 00:15:11

标签: vba excel-vba excel

我需要一个宏来从一系列多个值中导出组合。 出口梳子组将比数据范围集更加精确。 例如,我可以说我需要数据范围内3组值的所有2组值组合。

DATA ____ EXPORT

A B C____ AB AC BC

B B A____ BB BA BA

-

数据的所有值都是每个不同的cels,但梳子值每次必须在一个单元格中。 此外,出口必须在地平线上作为例子。

这是一个代码,在网上ifound对我很近,但我不能编辑它来使用它。

enter code here

Sub comb()
Dim vElements As Variant, vresult As Variant
Dim lRow As Long, i As Long

vElements = Application.Transpose(Range("A1", Range("A1").End(xlDown)))
Columns("C:Z").Clear

lRow = 1
For i = 1 To UBound(vElements) 
ReDim vresult(1 To i)
Call CombinationsNP(vElements, i, vresult, lRow, 1, 1)
Next i
End Sub

Sub CombinationsNP(vElements As Variant, p As Long, vresult As Variant, lRow As Long,  

iElement As Integer, iIndex As Integer)                                                                                                      
Dim i As Long

For i = iElement To UBound(vElements)
vresult(iIndex) = vElements(i)
If iIndex = p Then
    lRow = lRow + 1
    Range("C" & lRow).Resize(, p) = vresult



Else
    Call CombinationsNP(vElements, p, vresult, lRow, i + 1, iIndex + 1)
End If
Next i
End Sub

非常感谢,对不起我的英语。

2 个答案:

答案 0 :(得分:0)

我想知道使用带有单元格引用的新Sheet / Range是否更方便

((= Sheet1!$ A1& Sheet1!B1)) 这是三行然后复制

Sub Sub export_01()

Dim aStart,aExport   Dim aRow As Integer

 aRow = ActiveSheet.Range("A65536").End(xlUp).Row
 aStart = 1
 aExport = 5

   For i = 1 To aRow

   Cells(i, aExport).Value = Cells(i, aStart) & Cells(i, aStart + 1)
   Cells(i, aExport + 1).Value = Cells(i, aStart) & Cells(i, aStart + 2)
   Cells(i, aExport + 2).Value = Cells(i, aStart + 1) & Cells(i, aStart + 2)
   Next i

结束Sub()

答案 1 :(得分:0)

在我看来,这只是使用第二个for循环

dim aStartend = 1

对于i = 1到aRow

For ii = 0 To 5  ' starts whist 0 to 5 = 6 time

  Cells(i, aExport+ii).Value = Cells(i, aStart) & Cells(i,aStartend + ii)

-    -     下一个

下一个