Excel:可以通过这种方式进行部分排序吗?

时间:2017-12-21 13:19:04

标签: excel excel-formula excel-2007

假设在表格的B列中,我按行排列以下数据:

New York zip- 2067 . Temperature cool  
Beijing  zip- 1063 . Temperature is chilly  
Africa   zip- 3069 . Temperature is hot  

等等

我想按照zip值的顺序对列进行排序。 所以在这种情况下它将是:

Beijing zip- 1063 . Temperature is hot  
New York .......  

依此类推至第n行......

如何做到这一点。有什么办法/公式吗?

2 个答案:

答案 0 :(得分:0)

如果可以&将在VBA中编码,您可以执行以下操作:

  • 阅读该范围的每个单元格,并在.zip-之间进行部分。
  • 然后将此部分放在范围的开头。
  • 对范围进行排序,该范围将按数字
  • 排序
  • 删除数字部分

如果您将值放在A1:A3中,它将是这样的:

Public Sub TestMe()

    Dim readDataArr     As Variant
    Dim testArr         As Variant
    Dim cnt             As Long
    Dim myCell          As Range
    Dim addSomething    As String
    Dim separator       As String

    separator = "SomethingQuiteUniqe"

    For Each myCell In Range("A1:A3")
        'Read the every cell of the range and take the part between . and the zip-.
        addSomething = Split(Split(myCell, "zip-")(1), ".")(0)
        'Then put this part at the beginning of the range.
        myCell = addSomething & separator & myCell
    Next myCell

        'Sort the range, which would be sorted by the number
    Range("A1:A3").Sort key1:=Range("A1:A3")

        'Remove the numeric part
    For Each myCell In Range("A1:A3")
        myCell = Split(myCell, separator)(1)
    Next myCell

End Sub

以下是步骤:

  1. 输入:
  2. enter image description here

    1. 将分隔符放入字符串并对其进行排序后:
    2. enter image description here

      1. 排序后删除第一部分:
      2. enter image description here

答案 1 :(得分:0)

如果您的数据位于A列,则将其粘贴到B列: = ABS(VALUE(MID(A1; SEARCH(“zip - ”; A1; 1)+3; 7)))这只提取邮政编码。

按照以下5个步骤进行操作:

01

02

03

04

05