excel - 对具有字符和数字的键进行排序

标签 excel sorting vba

我在宏中使用以下代码对选定的列进行排序

Range("A14:CE" & lastRow).Sort key1:=Range(Cells(14, Col), Cells(lastRow, Col)), 
_Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, 
_Header:=xlNo 

我刚刚注意到,当单元格末尾有数字时,这可能会表现得很奇怪,就像这个例子一样

enter image description here

左列中的数据将像右列中一样从 A 到 Z 排序,这不是我想要的。 我想要 1 后 2,而不是 10! 我检查了一下,这就是Excel本身的排序方式。除了将文本更改为 FM-001 之外,还有其他方法可以防止这种情况发生吗?

最佳答案

是的,斯科特是对的,您需要 2 个单独的列来存放文本和数字,然后对它们进行排序;

如果这是唯一的组合,那么您可以使用

=LEFT(A1,2)

=RIGHT(A1,LEN(A1)-5)

如果您没有共同的模式,请先输入文字,然后输入数字

=LEFT(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))-1)

=RIGHT(A4,LEN(A4)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A4&"0123456789"))+1)

关于excel - 对具有字符和数字的键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206385/

相关文章:

vba - 从另一个工作簿中的范围更改多个工作表中单元格的值

C# 读取 XLS (XLSX) 文件和填充数据网格的最佳方式

excel - 使用数组并在 vba 中使用以下代码查找多个字符串?

ruby - 如何按值对哈希数组进行排序?

javascript - 如何同步跨 2 个 Angular UI-Grid 的列排序

c++ - 有选择地排序 vector C++

.net - Excel 2003 ActionsPane 中的 AutoSize ElementHost

excel - 将许多后继关系从 Excel 文件导入 MS Project

VBA 查找和替换

vba - 在word中分配奇数页码