|
|
- Sub ykcbf() '//2025.3.26 按关键字模糊排序
- Application.ScreenUpdating = False
- With ActiveSheet
- col = 7
- r = .Cells(.Rows.Count, col).End(3).Row
- st = "一、二、三、四、五、六、七、八、九、十、十一、十二、十三、十四、十五、十六"
- px = Split(st, "、")
- Set Rng = .Range("A4:G" & r) '//排序范围
- arr = Rng.Value
- For i = LBound(arr, 1) To UBound(arr, 1) - 1
- For j = i + 1 To UBound(arr, 1)
- key1 = GetKeyIndex(arr(i, col), px)
- key2 = GetKeyIndex(arr(j, col), px)
- If key1 > key2 Then
- For k = LBound(arr, 2) To UBound(arr, 2)
- temp = arr(i, k): arr(i, k) = arr(j, k): arr(j, k) = temp
- Next
- End If
- Next j
- Next i
- Rng.Value = arr
- End With
- Application.ScreenUpdating = True
- MsgBox "模糊排序完成!", vbInformation, "完成"
- End Sub
- Function GetKeyIndex(cellValue As Variant, keys As Variant) As Long
- Dim i As Long
- Dim foundIndex As Long
- Dim maxLen As Long
- foundIndex = UBound(keys) + 1
- maxLen = 0
- For i = UBound(keys) To LBound(keys) Step -1
- If InStr(1, cellValue, keys(i), vbTextCompare) > 0 Then
- If Len(keys(i)) > maxLen Then
- maxLen = Len(keys(i))
- foundIndex = i
- End If
- End If
- Next i
- GetKeyIndex = foundIndex
- End Function
复制代码
|
|