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

Vba 宏以导出x>;的所有n组值组合;n范围值,vba,excel,Vba,Excel,我需要一个宏来导出多组值的组合。 导出梳组将比数据范围集小。 例如,假设我需要一个数据范围内3组值的所有2组值组合 数据导出 A B C___;AB AC BC B B A____;BB BA - 数据的所有值都将在不同的单元格中,每个单元格中都有一个,但combs值每次必须在一个单元格中。 此外,出口必须以水平为例 这是一个我在网上找到的代码,对我来说有点接近,但我不能编辑它来使用它 enter code here Sub comb() Dim vElements As Variant, v

我需要一个宏来导出多组值的组合。 导出梳组将比数据范围集小。 例如,假设我需要一个数据范围内3组值的所有2组值组合

数据导出

A B C___;AB AC BC

B B A____;BB BA -

数据的所有值都将在不同的单元格中,每个单元格中都有一个,但combs值每次必须在一个单元格中。 此外,出口必须以水平为例

这是一个我在网上找到的代码,对我来说有点接近,但我不能编辑它来使用它

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

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

我想知道使用带有单元格参考的新表/范围是否更方便

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

次级出口_01()

Dim aStart,aExport Dim aRow为整数

 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

End Sub()

在我看来,这只是使用了第二个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)
-- -- 下一个ii


接下来,我

您真的需要尝试编写一些东西,并发布您的代码(即使它不起作用)以及您遇到的问题的描述。通常情况下,那些仅仅陈述了一组需求的问题——没有任何证据表明你确实试图提出解决方案——会很快在这里结束。为了帮助你解决(如果你想知道这个问题叫什么),在谷歌搜索“vba字符串排列”(或组合)。祝你好运谢谢大家的回复。我忘了说我是vba宏新手。这是我的新爱好。对我来说,从一开始就编写代码是非常困难的。我只能根据我的需要编辑一些我在网上找到的简单代码。但是对于这个项目,我还没有找到适合我需要的东西。Thamks Hatek,谢谢你的回复。你的代码完全导出我想要什么,但只适用于一小部分数字。只有我知道组合位置并将它们添加到您的代码手册中,我才能使用它。问题在于大量组合。例如6个值为12的组合。再次感谢您的回复。再次感谢hatek的回复。我相信此代码对我有效。我测试了它这只需要将第一个值与其余值结合起来。如果在你的代码中我不理解的是如何结合例如12组值中的6组值(即924梳)?你能发布这个示例的所有代码吗?