Excel:通过“x”创建列 A 和(单独)无限数量的列 B 的所有可能组合

Posted

技术标签:

【中文标题】Excel:通过“x”创建列 A 和(单独)无限数量的列 B 的所有可能组合【英文标题】:Excel: Create all Possible Combinations of Column A and (individually) an unlimited number of Columns B thru "x" 【发布时间】:2018-12-17 15:13:44 【问题描述】:

我在 A 列中有数据,需要与 B、C、D 等列中的每个数据进行所有组合的结果...

所以我不需要所有列的组合,我需要 AB、AC、AD、AE 等...

为了我的目的,更容易将每个单元格的结果组合在一起,现在组合的数据之间有一个空格

例如

Blue   One
Red    Two
Yellow Three

会变成

Blue One
Blue Two
etc

希望能够指定组合的顺序,例如,列 B、C、D 等中每一个的所有可能性...其中 A 列单元格数据被附加而不是继续

【问题讨论】:

这需要 vba。公式不会结束列计数。 【参考方案1】:

这尽可能使用数组,从而限制访问工作表的次数

Sub mygrouping()
    With Worksheets("Sheet6") ' change to your sheet
        Dim rngA As Variant
        rngA = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Value

        Dim rngOthers As Variant
        ReDim rngOthers(1 To Application.CountA(.Range("B1", .Cells(1040000, .Cells(1, .Columns.Count).End(xlToLeft).Column)))) As Variant
        Dim j As Long, k As Long, i As Long
        k = 1
        For j = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
            rngintm = .Range(.Cells(1, j), .Cells(.Rows.Count, j).End(xlUp)).Value
            For i = 1 To UBound(rngintm, 1)
                If rngintm(i, 1) <> "" Then
                    rngOthers(k) = rngintm(i, 1)
                    k = k + 1
                End If
            Next i
        Next j
        Dim outarr() As Variant
        ReDim outarr(1 To UBound(rngA, 1) * UBound(rngOthers), 1 To 1)
        k = 1
        For i = 1 To UBound(rngA, 1)
            For j = 1 To UBound(rngOthers)
                outarr(k, 1) = rngA(i, 1) & rngOthers(j)
                k = k + 1
            Next j
        Next i


        'Outputs to another sheet change to your sheet name and desired location
        Worksheets("Sheet7").Range("A1").Resize(UBound(outarr, 1), 1).Value = outarr

    End With
End Sub

【讨论】:

以上是关于Excel:通过“x”创建列 A 和(单独)无限数量的列 B 的所有可能组合的主要内容,如果未能解决你的问题,请参考以下文章

如何为已知行数创建具有无限列的 Angular Material Design 表?

循环通过excel列

excel 里面,如果A列有数,B就必须要填写数,否则就是红色

EXCEL如何用宏表示列数的递增。VAB

CF1294E Obtain a Permutation 题解

VBS编程:怎样用VBS给EXCEL画折线图(A列X坐标,B列Y坐标), 谢谢