奇数甚至在VBA中排序

时间:2017-10-25 00:43:50

标签: vba sorting

我正在尝试对数据行进行排序,以便字母数字地址的整数值按奇数值的顺序排列,然后给出它们属于同一类型的偶数值。

我得到(半)工作的唯一方法是:

- 如果地址的整数是偶数或奇数,则查找 - 将EVEN或ODD添加到该地址对应行的单元格中 - 跑宏 - 通过EVEN或ODD指定过滤数据

这种方法并不理想。我有兴趣重新排列行而不必使用过滤。

以下是排序方式的示例。

$args

我是VBA的新手。提前感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我认为您需要创建一个帮助列,您可以在其中存储可用于排序的值。

基本思路是从“地址”列中提取数值,检查它是否为偶数,如果是,则将其乘以高值(例如1000),以保证它高于最高可能的奇数值

您可以为此单元格使用公式 - 但对我来说这看起来有点复杂。假设您的数据在单元格A2中开始:

=VALUE(LEFT(A2, SEARCH("p", A2, 1)-1))*IF(ISODD(VALUE(LEFT(A2, SEARCH("p", A2, 1)-1))),1,1000)

或写一个小的 UDF

Function SortVal(s As String) As Double
    SortVal = Val(s)
    If Int(SortVal) Mod 2 = 0 Then SortVal = SortVal * 1000
End Function

并在帮助栏

中调用它
=SortVal(A2)