![](/img/trans.png)
[英]How can I get the Sheet Options (Left to right or right to left) from Excel JS
[英]On an excel spread sheet how do I sort numeric values from 5 columns in asc order left to right 1 row at a time iterating through all rows
我无法为一定范围的列增加行数,并且无法对每行的范围进行排序,有人可以指导我完成这一过程吗?
使用宏或VBA,如何在遍历所有数据行(约765行)的同时从左到右从1列升序排列5列整数。
每行有6列数据,但仅需要对前5列进行排序。 每行具有相同数量的列和数据,并且永远不会有带有空白或NULL条目的单元格。 行中的每一列均包含该行唯一的整数。
每行需要独立于上一行或下一行进行排序,并且每行的第6列必须保留已排序的前5列。
我还没有弄清楚如何增加列的范围以执行每一行的排序。 非常感谢。
我假设要排序的五列是A到E。此宏循环遍历每一列(整个列),并独立于相邻列进行排序。
尝试这个:
Sub Macro2()
Set rng = Range("A:E")
For Each col In rng.Columns
Set rng = Columns(col.Column)
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Cells(1, col.Column), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange rng
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub
数据看起来像这样:
并且在运行宏后将如下所示:
请注意,最后一列保持不变。
****编辑****
您可以按照以下方法从左到右对行进行排序,而不是对列进行排序:(它将行A1至行A10从“ A”列到“ E”列
Sub Macro2()
Set Rng = Range("A1:E10")
col = Rng.Cells(Rng.Count).Column
Dim lastcol As Integer
lastcol = Rng.Cells(Rng.Count).Column
For Each rrow In Rng.Rows
Set RngB = Range(ActiveSheet.Cells(rrow.Row, Rng.Column), ActiveSheet.Cells(rrow.Row, lastcol))
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=RngB, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange RngB
.Header = xlNo
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.