暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA实用小程序77:生成字符的所有组合

完美Excel 2021-05-03
185

学习Excel技术,关注微信公众号:

excelperfect


这是在stackoverflow.com中看到的一段VBA程序,生成所有7个字符中5个字符的任意组合,有兴趣的朋友可以试试。

 

程序代码如下:

Public Function DropCH(sIn As String, L As Long) As String

    Dim ll As Long

    If L = 1 Then

        DropCH = Mid(sIn, 2)

        Exit Function

    End If

   

    ll = Len(sIn)

    If ll = L Then

        DropCH = Left(sIn, L - 1)

        Exit Function

    End If

   

    If L > ll Then

        DropCH = ""

        Exit Function

    End If

    DropCH = Mid(sIn, 1, L - 1) & Mid(sIn,L + 1)

End Function

 

在工作表单元格A1中输入包含7个字符的字符串,然后在单元格C1中输入公式:

=DropCH($A$1,COLUMNS($A:A))

然后拖动C1至单元格I1,如下图1所示。

1

 

在单元格C2中输入公式:

=DropCH(C$1,ROW()-1)

然后,向下拖至单元格C7,向右拖至单元格I7。结果如下图2所示。

2

 

要移除重复值,可以运行下面的程序:

Sub DropDuplicates()

    Dim c As Collection

    Dim K As Long

    Dim r As Range

   

    Set c = New Collection

    On Error Resume Next

    K = 1

    For Each r In Range("C2:I7")

        If r.Value <> "" Then

            c.Add r.Value, CStr(r.Value)

            If Err.Number = 0 Then

               Cells(K, "J").Value = r.Value

                K = K + 1

            Else

                Err.Number = 0

            End If

        End If

    Next r

    On Error GoTo 0

End Sub

 

这将在列J中放所有的不重复的5个字符组合,如下图3所示。

3

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论