You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel/VBA/公式:按循环首数字规则重排唯一四位数序列

解决Excel I列四位数循环按首数字1-7选取排序问题

VBA代码实现循环选取逻辑

  • 核心逻辑:循环遍历首数字1到7,每次从I列里揪出首个没被用过的对应首数字的四位数,放到J列,直到所有数据都处理完。
  • 完整代码:
Sub CycleSortByFirstDigit()
    Dim ws As Worksheet
    Dim sourceRng As Range, cell As Range
    Dim usedCells As Collection
    Dim firstDigit As Integer, i As Integer
    Dim targetRow As Integer
    
    ' 指定工作表,可根据实际修改
    Set ws = ThisWorkbook.ActiveSheet
    ' 用来记录已经选过的单元格
    Set usedCells = New Collection
    ' 结果从J列第1行开始放
    targetRow = 1
    
    ' 获取I列所有非空数据的范围
    Set sourceRng = ws.Range("I1:I" & ws.Cells(ws.Rows.Count, "I").End(xlUp).Row)
    
    ' 循环到所有数据都被选取为止
    Do While usedCells.Count < sourceRng.Cells.Count
        ' 按1-7的顺序遍历首数字
        For firstDigit = 1 To 7
            ' 逐个检查I列的数据
            For Each cell In sourceRng
                ' 匹配首数字
                If Left(cell.Value, 1) = CStr(firstDigit) Then
                    On Error Resume Next
                    ' 尝试把单元格加入集合,重复的会报错,以此判断是否已使用
                    usedCells.Add cell, Key:=CStr(cell.Address)
                    If Err.Number = 0 Then
                        ' 没报错说明是未使用的,写入J列
                        ws.Cells(targetRow, "J").Value = cell.Value
                        targetRow = targetRow + 1
                        Exit For
                    End If
                    On Error GoTo 0
                End If
            Next cell
        Next firstDigit
    Loop
    
    MsgBox "排序完成,结果已写入J列!"
End Sub
  • 使用步骤:
    1. 打开Excel,按Alt+F11打开VBA编辑器
    2. 右键插入新模块,粘贴上面的代码
    3. 运行宏CycleSortByFirstDigit,结果会自动输出到J列

公式实现方案(无需VBA)

如果不想用宏,可以借助辅助列实现:

  1. 插入辅助列K,在K1单元格输入以下公式,然后下拉填充到I列数据末尾:
=MOD(COUNTIF($I$1:I1,"^"&LEFT(I1,1)&".*")-1,7)+1

这个公式会给每个首数字的条目标记循环序号(1-7重复)
2. 在J1单元格输入数组公式(Excel 365直接回车,旧版本按Ctrl+Shift+Enter),下拉填充直到出现错误值:

=INDEX($I:$I,MATCH(SMALL(--($K:$K&LEFT($I:$I,1)),ROW(A1)),--($K:$K&LEFT($I:$I,1)),0))

这样就能得到按首数字1-7循环选取的排序结果

内容的提问来源于stack exchange,提问作者randomguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:53:23