提问人:Pepiniano 提问时间:11/10/2023 更新时间:11/11/2023 访问量:82
如何在单行中按字母顺序对字符串进行排序
How order a string in alphabetical order in a single row
问:
基本上,我有一个带有分号(;)的字符串,以范围(“H2”)分隔,例如(Restrict;无反射;阿尔法;宇宙;n..).这需要是动态的,这意味着字符串可以在一行中包含四个以上的单词。
“预期结果应该是(Alpha;宇宙;无限制;限制;n..)在范围内 (“H2”)
答:
0赞
Mayukh Bhattacharya
11/10/2023
#1
由于存在 Excel 标记并假设没有
Excel 约束,
因此可以使用以下命令完成此操作TEXTSPLIT()
• 细胞中使用的配方B1
=SORT(TRIM(TEXTSPLIT(A1,,";",1)))
或者,在单元格内:
• 细胞中使用的配方B1
=TEXTJOIN("; ",,SORT(TRIM(TEXTSPLIT(A1,,";",1))))
警告:由于要求输出在单元格内生成,因此使用存在字符限制,即如果字符串超过 32767 个字符(单元格限制),则返回错误。下面是 MSFT 文档。因此,最好使用或按适合您的数据的行/列进行拆分。TEXTJOIN()TEXTJOIN()#VALUE!
VBA
评论
0赞
Notus_Panda
11/10/2023
那不是(阿尔法;宇宙;无限制;限制),但;)啊 nvm,你还没有完成 TextJoin
0赞
Mayukh Bhattacharya
11/10/2023
@Notus_Panda我不明白?
1赞
Notus_Panda
11/10/2023
不,你很好,你的第一个解决方案不是 OP 想要的,但(现已编辑的)Textjoin 做到了。触发^^有点太快了
0赞
Mayukh Bhattacharya
11/10/2023
哦,是的,我正在编辑答案。有时很难理解OP在问什么。我发布的第一个答案也是因为 OP 说,范围而不是单元格,所以可能他们不清楚范围和单元格!
1赞
Paul
11/10/2023
OP 要求一个解决方案来对它进行分类,但我同意这是一个更好的选择(请参阅我对问题的评论)
0赞
Spectral Instance
11/11/2023
#2
下面是一种 VBA 方法
Sub sortCell(inp As Range)
Dim arr
arr = Strings.Split(inp.Value2, ";")
Dim sList As Object
Set sList = CreateObject("System.Collections.SortedList")
Dim i As Long
For i = 0 To UBound(arr)
sList.Add CStr(arr(i)), Null
Next i
Dim result As String
For i = 0 To UBound(arr)
result = result & sList.getKey(i) & ";"
Next i
inp.Value2 = Strings.Left(result, Strings.Len(result) - 1)
End Sub
您可以拨打电话,例如
call sortCell(ActiveSheet.Range("H2"))
上一个:替换字符串中的变量
评论