[英]Sorting the order of contents in a cell
顾名思义,我想知道是否有可能根据文本对内容的顺序进行排序。 例如,某些包含文本“ 4C + 5C + BBU / RRH + 4T4R”的单元格具有与之关联的特定复杂度编号。 问题是要查找特定的复杂度数字,我需要以准确的顺序在单元格中包含文本以使其匹配。 对于其他几个迭代,我有这样混乱的顺序(例如,“ 4C + 2rd RRH + 3C + BBU / RRH”应显示为“ 2C + 3C + 2nd RRH + BBU / RRH”)。 如果给出正确的优先顺序(如果它存在于单元格中),是否可以纠正单元格中内容的顺序? 这是相关的首选项列表:
这样,如果该单元格中存在该单元格,就应该能够形成应该排名第一,第二,第三等的排序系统(例如,应该能够将“ 7C + 3C + 4T4R + RRH ADD”带入“ 3C” + 7C + RRH ADD + 4T4R”,就像“ 4C + 3C + 2C”应读为“ 2C + 3C + 4C”)。 我希望能够使用VBA在AU列上应用此公式。 在此先感谢您,我还没有看到类似此问题的任何东西,因此任何见解都将走很长一段路。
您可以按顺序检查原始字符串中值的存在并构造一个新字符串,如下所示:
Function customSort(ByVal original As String) As String
Dim SortBy As Variant
Dim n As Double
Dim strReturn As String
SortBy = Array("2C", _
"3C", _
"4C", _
"5C", _
"6C", _
"7C", _
"2nd RRH", _
"RRH ADD", _
"BBU/RRH", _
"XMU/RRH", _
"4T4R")
'for each in SortBy array
For n = 0 To UBound(SortBy)
'loop from 1 to count of occurrence in string
'(Len(original) - Len(Replace$(original, SortBy(n), ""))) / Len(SortBy(n)) counts occurrences in string, case sensitive
For i = 1 To (Len(original) - Len(Replace$(original, SortBy(n), ""))) / Len(SortBy(n))
strReturn = strReturn & SortBy(n) & " + "
Next
Next
customSort = Left(strReturn, Len(strReturn) - 3)
End Function
您可以从Sub
调用此函数,也可以将其用作cell formula
。
eg: =customSort(A2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.