
在EXCEL的A1中有数据:“2-1,5-3,” 在A2中有数据:“4-2,8-7,5-4,”求VBA
将A1、A2设为参数并返回A1与A2的并集。本题的并集为:“2-1,4-2,5-3,5-4,8-7,”(返回是按这样的顺序排列)...
将A1、A2设为参数并返回A1与A2的并集。本题的并集为:“2-1,4-2,5-3,5-4,8-7,”(返回是按这样的顺序排列)
展开
3个回答
展开全部
Function sorts(a)
Dim b, i%, j%, temp, vi%, vj%
a = Replace(a, ",", ",")
b = Split(a, ",")
For i = 0 To UBound(b) - 2
For j = i + 1 To UBound(b) - 1
vi = Split(b(i), "-")(0) * 100 + Split(b(i), "-")(1)
vj = Split(b(j), "-")(0) * 100 + Split(b(j), "-")(1)
If vi > vj Then temp = b(i): b(i) = b(j): b(j) = temp
Next j
Next i
sorts = Join(b, ",")
End Function
使用:=sorts(a1 & a2)
Dim b, i%, j%, temp, vi%, vj%
a = Replace(a, ",", ",")
b = Split(a, ",")
For i = 0 To UBound(b) - 2
For j = i + 1 To UBound(b) - 1
vi = Split(b(i), "-")(0) * 100 + Split(b(i), "-")(1)
vj = Split(b(j), "-")(0) * 100 + Split(b(j), "-")(1)
If vi > vj Then temp = b(i): b(i) = b(j): b(j) = temp
Next j
Next i
sorts = Join(b, ",")
End Function
使用:=sorts(a1 & a2)
展开全部
工作表名称上点鼠标右键 选查看代码,粘贴下面代码到弹出窗口
Sub 合并排序()
Dim arr
istr = Range("A1") & Range("A2")
arr = Split(Left(istr, Len(istr) - 1), ",")
For i = 1 To UBound(arr) - 1
For ii = i + 1 To UBound(arr)
tempi = Left(arr(i), InStr(arr(i), "-") - 1)
tempii = Left(arr(ii), InStr(arr(ii), "-") - 1)
If tempi > tempii Then
temp = arr(i)
arr(i) = arr(ii)
arr(ii) = temp
End If
Next
Next
Range("A3") = Join(arr, ",") & ","
End Sub
Sub 合并排序()
Dim arr
istr = Range("A1") & Range("A2")
arr = Split(Left(istr, Len(istr) - 1), ",")
For i = 1 To UBound(arr) - 1
For ii = i + 1 To UBound(arr)
tempi = Left(arr(i), InStr(arr(i), "-") - 1)
tempii = Left(arr(ii), InStr(arr(ii), "-") - 1)
If tempi > tempii Then
temp = arr(i)
arr(i) = arr(ii)
arr(ii) = temp
End If
Next
Next
Range("A3") = Join(arr, ",") & ","
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用VB 把所有数据并一列上
在用VB 执行 排序操作
在用VB 执行 排序操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询