如何使用宏来对多个列中的数据作为在 Excel 中的一列进行排序

文章翻译 文章翻译
文章编号: 247311 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

Microsoft Excel 没有报纸 (蛇形) 列的数据排序的内置方法。本文包含报纸样式列格式的数据进行排序的示例宏。

更多信息

Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证。这包括,但不限于对适销性或针对特定用途的适用性的暗示的担保。本文假定您熟悉演示了正在使用的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以提供额外的功能或构建过程来满足您的具体要求。

内置排序

在 Microsoft Excel 中,您通常使用排序功能对列表进行排序。在 Excel 中的列表是一系列包含一个发票数据库或一组客户端名称和 $ 电话号码的相关的数据的工作表行。您可以作为一个数据库中的每一行是一个记录中使用列表和列为字段。在列表中的第一行通常例如有了的列的标签:
   A1: Q1   B1: Q2   C1: Q3
   A2: 10   B2: 2    C2: 4
   A3: 14   B3: 18   C3: 9
   A4: 7    B4: 17   C4: 12
   A5: 1    B5: 13   C5: 5
   A6: 11   B6: 8    C6: 16
   A7: 3    B7: 6    C7: 15
				
排序按升序排列此列表,如果通过在第 1 季度字段 (列 A),结果将如下所示:
   A1: Q1   B1: Q2   C1: Q3
   A2: 1    B2: 13   C2: 5
   A3: 3    B3: 6    C3: 15
   A4: 7    B4: 17   C4: 12
   A5: 10   B5: 2    C5: 4
   A6: 11   B6: 8    C6: 16
   A7: 14   B7: 18   C7: 9
				

报纸样式列排序

报纸样式分栏和蛇形列都是相同类型的数据格式为不同的术语。报纸样式分栏中将数据填充一列,并继续在下一列的顶部。在这种情况下您的数据可能不具有的每个列标签,例如:
   A1: 10   B1: 2    C1: 4
   A2: 14   B2: 18   C2: 9
   A3: 7    B3: 17   C3: 12
   A4: 1    B4: 13   C4: 5
   A5: 11   B5: 8    C5: 16
   A6: 3    B6: 6    C6: 15
				
可以使用本文中示例宏进行排序按升序排列的报纸样式分栏。如果上面的数据使用的示例宏结果如下所示:
   A1: 1    B1: 7    C1: 13
   A2: 2    B2: 8    C2: 14
   A3: 3    B3: 9    C3: 15
   A4: 4    B4: 10   C4: 16
   A5: 5    B5: 11   C5: 17
   A6: 6    B6: 12   C6: 18
				
要查看排序工作所述的宏,请按照下列步骤操作:
  1. 打开一个新的工作簿。
  2. 在工作表中键入下面的示例数据:
       A1: 10   B1: 2    C1: 4
       A2: 14   B2: 18   C2: 9
       A3: 7    B3: 17   C3: 12
       A4: 1    B4: 13   C4: 5
       A5: 11   B5: 8    C5: 16
       A6: 3    B6: 6    C6: 15
    					
  3. 工具 菜单上指向 ,然后单击 Visual Basic 编辑器
  4. 插入 菜单上单击 模块
  5. 在模块中键入下面的代码:

    注意下面的示例演示如何按升序排序。您可以通过修改的值来更改此该"Order1: ="参数,以 xlDescending
       Sub SortAllRangeData()
       ' Place column header for temporary sort area.
       Range("IV1").Value = "Numbers"
       
       ' Move numbers to temporary sort location.
       For Each cell In Selection
          Range("iv65536").End(xlUp).Offset(1, 0) = cell.Value
       Next cell
       
       ' Sort numbers in ascending order.
       Range("IV1", Range("IV1").End(xlDown)).Sort Key1:=Range("IV2"),  _
       Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
            
       ' Move sorted data back to original sheet location.
    
       Selection(1, 1).Activate ' Make sure the ActiveCell is the
                                ' top left of Selection first.
       CCnt = Selection.Columns.Count
       RCnt = Selection.Rows.Count
       CellCnt = Selection.Cells.Count
       Tcell = 2
       For c = 1 To CCnt
         For r = 1 To RCnt
            Range(ActiveCell.Address).Offset(r - 1, c - 1).Value =  _
            Range("iv" & Tcell).Value
            Tcell = Tcell + 1
         Next r
       Next c
       
       ' Clean up temporary sort location.
       Range("IV1", Range("IV1").End(xlDown)).Clear
    End Sub
    					
  6. 在 Microsoft Excel X 为 Mac 和更高版本的 Excel 的 Mac,Excel 菜单上或在在所有其他版本的 Excel 中的文件菜单上,单击 关闭并返回到 Microsoft Excel
  7. 选择 A1:C6。
  8. 工具 菜单上指向 ,然后单击 。选择 SortAllRangeData 宏,然后单击 运行
所有选定的区域数据现在进行排序,并显示如下:
   A1: 1    B1: 7    C1: 13
   A2: 2    B2: 8    C2: 14
   A3: 3    B3: 9    C3: 15
   A4: 4    B4: 10   C4: 16
   A5: 5    B5: 11   C5: 17
   A6: 6    B6: 12   C6: 18
				

参考

Mac 和更高版本的 Excel X

有关如何进行排序,请单击 帮助 菜单上的 Excel 帮助 的详细信息,键入 排序、 单击 搜索,然后单击查看相关主题。

有关如何使用 Sort 方法从 Visual Basic 编辑器,请单击 Visual Basic 帮助帮助 菜单上,键入 排序方法 的详细信息,单击 搜索,然后单击以查看 对方法进行排序

Excel 2001 年的 Mac

有关如何进行排序的详细信息的单击 Office 助手、 键入 排序列表、 单击 搜索,然后单击相关主题以查看它。

注意如果隐藏的助手单击 常用 工具栏上的 Office 助手 按钮。

有关如何使用 Sort 方法从 Visual Basic 编辑器,请单击 Office 助手,键入 排序方法 的详细信息,单击 搜索,然后单击以查看 对方法进行排序

属性

文章编号: 247311 - 最后修改: 2007年1月25日 - 修订: 6.3
这篇文章中的信息适用于:
  • Microsoft Excel 2000 标准版
  • Microsoft Excel 2004 for Mac
  • Microsoft Excel X for Mac
  • Microsoft Excel 2001 for Mac
  • Microsoft Excel 98 for Macintosh
关键字:?
kbmt kbautomation kbprogramming kbhowto KB247311 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 247311
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com