乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何使用<em>Excel</em>来对字符串进行排列组合?-excel 几个字母,excel首

如何使用<em>Excel</em>来对字符串进行排列组合?-excel 几个字母,excel首

作者:乔山办公网日期:

返回目录:excel表格制作


为了方便公式拖动,以字母的编码进行循环来达到有规律的组合枚举zd,这里仅展示英文字母一大写一小写的运算公式,三字符拼接则要具体看什么字符而定:

将以下公式拷贝到A1单元格(必须第1行),然后向下拖动复制至676行(26*26),试试看!
=CHAR(INT((ROW()-1)/26)+65)&CHAR(MOD(ROW()-1,26)+97)

只有用VBA循环来实现,函数是没e799bee5baa6e4b893e5b19e364法实现的

Sub plzh()
Dim a%, b%, c%, d%, e%, n%(1 To 5), arr(), i%, brr()
ReDim arr(1 To 120, 1 To 1)
Range("A1").CurrentRegion.ClearContents
brr = Array("abc", "bcd", "efg", "ABC", "S")
For a = 1 To 5
    n(a) = 1
        For b = 1 To 5
            If n(b) = 0 Then
                n(b) = 1
                    For c = 1 To 5
                        If n(c) = 0 Then
                            n(c) = 1
                                For d = 1 To 5
                                    If n(d) = 0 Then
                                        n(d) = 1
                                            For e = 1 To 5
                                                If n(e) = 0 Then
                                                    i = i + 1
                                                    arr(i, 1) = brr(a - 1) & brr(b - 1) & brr(c - 1) & brr(d - 1) & brr(e - 1)
                                                End If
                                            Next e
                                        n(d) = 0
                                    End If
                                Next d
                            n(c) = 0
                        End If
                    Next c
                n(b) = 0
            End If
        Next b
    n(a) = 0
Next a
[A1].Resize(UBound(arr), 1) = arr
End Sub


使用vba实现
自动排列组合,生成排列组合的列数,手动输入
然后从第二行第一列开始生成每列数据,每列数据数字不重e68a84e799bee5baa6337复,数量随机。
实现代码如下:

Sub 按钮1_Click()
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.ClearContents '清空表格
    a = InputBox("请输入产生序列的列数") '提示输入列数
    Set d = CreateObject("scripting.dictionary") '字典去重
    If VBA.IsNumeric(a) Then '判断输入的是否是数值,不是则跳出程序
        Randomize '初始化随机数
        
        For j = 1 To Int(a) '生成输入列数的随机数
            b = Int(Rnd * 99999) Mod 10 + 1 ' 每列产生随机数的数量
            d.RemoveAll
l2:
            If d.Count <> b Then '生成随机数
                d(Int(Rnd * 99999) Mod 10) = ""
                GoTo l2
            End If
            Cells(2, j).Resize(d.Count) = WorksheetFunction.Transpose(d.keys) '将随机数存入相应列里
        Next j
    Else
        MsgBox "请输入数值"
        GoTo l1
    End If
l1:
    Application.ScreenUpdating = True
End Sub

程序执行效果:






笨办法,任意单元格中输入
=MID("ABCD",MOD(ROW(A256)/64,4)+1,1)&MID("ABCD",MOD(ROW(A64)/16,4)+1,1)&MID("ABCD",MOD(ROW(A16)/4,4)+1,1)&MID("ABCD",MOD(ROW(D4),4)+1,1)
下拉。
第二种公式,任意单元格中输入
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SMALL(IF(MMULT(N(ABS(MID(ROW($1111:$4444),{1,2,3,4},1)-2.5)<=1.5),{1;1;1;1})=4,ROW($1111:$4444)),ROW(A1)),1,"A"),2,"B"),3,"C"),4,"D")
同时按下CTRL+SHIFT+ENTER,输入数组zhidao公式,下拉。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网