繁体   English   中英

排序单元格中内容的顺序

[英]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”)。 如果给出正确的优先顺序(如果它存在于单元格中),是否可以纠正单元格中内容的顺序? 这是相关的首选项列表:

  1. 2C
  2. 3C
  3. 4C
  4. 5C
  5. 6C
  6. 7C
  7. 第二RRH
  8. 添加RRH
  9. BBU / RRH
  10. XMU / RRH
  11. 4T4R

这样,如果该单元格中存在该单元格,就应该能够形成应该排名第一,第二,第三等的排序系统(例如,应该能够将“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM