永发信息网

vba中字符串按照顺序排列

答案:2  悬赏:20  手机版
解决时间 2021-12-18 05:08
如何在vba中做这样的处理:
输入一个字符串(例如 JAEHG)希望他输出时是按照字母从A到Z的顺序输出(AEGHJ)
最佳答案
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False '屏蔽事件响应
  If Target.Address = "$A$1" Then
    a = Range("$A$1") '取字符串到a
    b = Len(a) '计算字符串字符数
    Dim arr
    ReDim arr(1 To b)
    For i = 1 To b
      arr(i) = Mid(a, i, 1) '拆分字符串到数组arr
    Next i
    '排序
    For i = 1 To b - 1 '外循环次数
      For j = 1 To b - i '内循环次数
        If Asc(arr(j)) > Asc(arr(j + 1)) Then '比下一个大则交换位置
          tmp = arr(j)
          arr(j) = arr(j + 1)
          arr(j + 1) = tmp
        End If
      Next j
    Next i
    a = "" '清空a中字符串
    For i = 1 To b
      a = a & arr(i) '数组转字符串
    Next i
    Range("$A$1") = a '排序后字符串返回原单元格
  End If
  Application.EnableEvents = True '开启事件响应
End Sub 在工作表标签上点右键点查看代码,粘贴上面代码。然后在A1单元格输入字符串查看效果。
全部回答
楼主,这个应该调用什么api能很快搞定,不过我一般用vba主要处理数据啥的,我大概试了下,用下面的方法也可行的。 sub test() dim arr() as string, brr() as string dim crr() as string dim i as long, k as long '随便定义了2个数据,按楼主说的,brr的所有元素在arr都存在 arr = split("a,b,c,d,e,f,g", ",") brr = split("b,d,g", ",") '用crr来存取 arr-brr的元素,crr的大小如下 redim crr(ubound(arr) - ubound(brr) - 1) '开整,遍历arr,把每个brr中没有的放到crr中就好了 for i = 0 to ubound(arr) if ubound(filter(brr, arr(i))) <> 0 then crr(k) = arr(i) k = k + 1 end if next i end sub 我试过了,可以滴。方法思路就是这个啦
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
兔子吃萝卜吗
下列各组词语中,有错别字的一项是A. 卑怯跋
海尔冰箱bcd-170wdpt为什么发热
请问贷款买车都需要哪些手续啊?一定要有收入
判断题70800=7万.
渭南市潼关县救助管理站办公位置在哪啊?好找
淤溪镇图书馆地址在什么地方,我要处理点事!
绿色靴子配驼色风衣好看吗
三星w2015手机外屏出现了这种状况该怎么解决
下列各数中,一定是无理数的是A.带根号的数B.
功夫不负有心人中的有心人指的是什么
地球公民当警醒阅读答案
墨墨所在的班要一批乒乓球和乒乓球拍,现了解
.无锡汽车站和无锡客运中心有什么区别两个进
史记·郦生陆贾列传阅读答案
推荐资讯
“神舟”七号飞船项目正在筹备过程中,“神七
一个自然数的倒数可能小于1,也可能等于1.…
对二次三项式4x2-6xy-3y2分解因式正确的是A.B
Ican’tleavetheofficenow.Alotofwork_______
The country is far from ours.A. awayB. wa
单选题脱式计算.1200-(187+896÷32)=A.994
请根据拼音和上下文在各句的横线上填写适合的
单选题在做“研究平抛运动”实验中,引起实验
单选题莫斯科保卫战胜利的意义是A.粉碎了德军
我的世界如何改物品贴图
工银速汇汇款什么时候到账?
Reporter-----R Michael------MR: 【小题1】
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?