我正在尝试在电子表格行中创建行子组,以便我可以对数据进行排序,但任何特定子组中的行都保持在一起。用图片来展示可能最容易。
按列数据对子组内的行进行排序
理想情况下,我希望找到一种在 Google 电子表格中执行此操作的方法,但我敢打赌这是不可能的,因此欢迎为任何类型的电子表格程序提供解决方案。
答案1
好的,在 Google 电子表格中:
我创建了一个初始电子表格,看起来应该是这样的(进行了一些艺术上的改动)。下半部分尚未排序,因此与上半部分相等:
选择组成类别 1 的三列,然后转到
Data > Sort range
。从那里,只需将预设列(应该是 A)更改为 C(又名第二个标准)。
表格的这一部分现在已根据第二个标准排序。只需重复至第二个类别即可。
最终结果应该是您的表格。
更新:
根据@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
选择要排序的列中的一个单元格