在电子表格中,是否可以将行分成几组,以便在过滤时不会改变顺序?

在电子表格中,是否可以将行分成几组,以便在过滤时不会改变顺序?

我正在尝试在电子表格行中创建行子组,以便我可以对数据进行排序,但任何特定子组中的行都保持在一起。用图片来展示可能最容易。

按列数据对子组内的行进行排序

在此处输入图片描述

理想情况下,我希望找到一种在 Google 电子表格中执行此操作的方法,但我敢打赌这是不可能的,因此欢迎为任何类型的电子表格程序提供解决方案。

答案1

好的,在 Google 电子表格中:

  1. 我创建了一个初始电子表格,看起来应该是这样的(进行了一些艺术上的改动)。下半部分尚未排序,因此与上半部分相等:

    表格 - 未排序

  2. 选择组成类别 1 的三列,然后转到Data > Sort range

    排序范围

  3. 从那里,只需将预设列(应该是 A)更改为 C(又名第二个标准)。

    排序范围对话框

  4. 表格的这一部分现在已根据第二个标准排序。只需重复至第二个类别即可。

    最终结果

  5. 最终结果应该是您的表格。

更新:

根据@beroe 的建议,我可以再补一点。

首先,你需要添加一个额外的列,用于分配个别类别到每个项目。虽然这在当前数据设置下是可行的,但我发现这是正确做法得到如下表格:

表格 - 未分类的数据

请注意,我尚未根据您的第二个条件对数据进行排序。另请注意,第二个条件旁边现在有一列,其中包含每个项目的相应类别。

选择所有数据,然后转到Data > Sort Range。在其中先按 D 列(包含类别的列)排序,然后按添加另一个排序列,然后添加与第二个条件对应的列(C 列)。

之所以这样做,是因为电子表格软件有一个关于优先级的想法。事实上,Google 会首先尝试按 D 列排序。然后,它会按 C 列对所有剩余数据进行排序。所有剩余数据都已排序。

请注意,由于前面指出的原因,我放置列的顺序是这样的。如果您尝试先放置 C 列,然后再放置 D 列,那么您将无法获得所需的结果。

排序范围 - 多列

最终结果如下:

最终结果

最终,添加一个包含项目信息的列是一个很好的电子表格设计决策(如果存在类似的东西)。

最后要说的是,Google Spreadsheet 似乎默认具有 JavaScript 功能(即,它相当于 Excel 的宏)。可以通过 访问它Tools > Script Editor。但是,我不知道如何编写 JavaScript。最终,如果您需要更复杂的东西,您可以求助于它。

答案2

最简单的方法是添加一个对分组进行编码的列(例如CategoryNum)。然后首先按该列排序,然后Criteria再按您的列排序。

排序图像

如果您将类别代码放在子标题行(Category 1)中,则整个电子表格的顺序应该被保留。

(旁注:对于您尝试自动化的数据处理,最好以这种方式组织数据,而不是以难以解析的方式在视觉上分解它们。)

答案3

首先创建命名范围,然后调整它

Sub SortBySelectedCellColumn()
Dim cell As String
Dim srt As Integer
Dim nm As Name
 cell = ActiveCell.Address
 srt = ActiveCell.Column
For Each nm In ThisWorkbook.Names
   Range(nm).Select
   Selection.Sort _
    Key1:=Worksheets("Sheet1").Columns(srt), _
    Header:=xlGuess
Next
  Range(cell).Select
End Sub

在此处输入图片描述

选择要排序的列中的一个单元格

在此处输入图片描述

相关内容