我有一列数据,每个单元格中都有数字和文本,用逗号分隔。我在另一个论坛(请参见下面的代码)中找到了UDF,但它做得并不好。例如:
原始单元格:
84,86,NA,268,277,400,411,42,120,244,346
UDF结果:
120、244、268、277、346、400、411、42、84、86,不适用
所需结果:
42、84、86、120、244、268、277、346、400、411,NA
我想知道是否有人可以帮助我修复此代码。 非常感谢 最好的祝愿 马诺伊
查看我在另一个论坛中找到的UDF的代码
Function StrSort(ByVal sInp As String, _
Optional bDescending As Boolean = False) As String
' sorts a comma-delimited string
Dim asSS() As String ' substring array
Dim sSS As String ' temp string for exchange
Dim n As Long
Dim i As Long
Dim j As Long
asSS = Split(sInp, ",")
n = UBound(asSS)
For i = 0 To n
asSS(i) = Trim(asSS(i))
Next
If n < 1 Then
StrSort = sInp
Else
For i = 0 To n - 1
For j = i + 1 To n
If (asSS(j) < asSS(i)) Xor bDescending Then
sSS = asSS(i)
asSS(i) = asSS(j)
asSS(j) = sSS
End If
Next j
Next i
StrSort = Join(asSS, ", ")
End If
End Function
答案 0 :(得分:2)
您的代码将数组的内容视为文本,因此这就是为什么值按原样排序的原因。
不幸的是,由于您的String
(或任何其他{{1},考虑将数组的类型从Long
更改为Double
或NA
并不那么简单}})值...
这种解决方案不是很优雅,我不希望看到功能这么长,但是可以使用。
String