Excel 多条件排序(可能要用VBA) Excel VBA 按条件排序

\u6c42excel vba\u5982\u4f55\u5b9e\u73b0\u5982\u4e0b\u591a\u6761\u4ef6\u3001\u4e0d\u540c\u5217\u6761\u4ef6\u7684\u6392\u5e8f\u3002

\u5982\u679c\u6ca1\u6709\u6807\u9898\u884c\u7684\u8bdd\uff0c\u5355\u51fb\u6570\u636e\u533a\u57df\uff0c\u70b9\u51fb\u6570\u636e\u2014\u2014\u6392\u5e8f\u2014\u2014\u4e3b\u8981\u5173\u952e\u5b57\u91cc\u9009 \u5217B\u2014\u2014\u6b21\u8981\u5173\u952e\u5b57\u9009 \u5217C\uff0c\u9009\u65e0\u6807\u9898\u884c\u2014\u2014\u786e\u5b9a\u3002

\u6240\u6709\u4ee3\u7801\u5982\u4e0b\uff1a
Private Sub ComboBox1_Change() '\u7b2c\u4e00\u4e2a\u7ec4\u5408\u6846\u53d8\u5316 Dim dc As Object Set dc = CreateObject("Scripting.Dictionary") Dim i As Long ComboBox2.Clear With Sheet1 For i = 1 To .[a65536].End(3).Row If .Cells(i, 1) = ComboBox1.Value Then If Not dc.exists(.Cells(i, 2).Value) Then ComboBox2.AddItem .Cells(i, 2).Value dc.Add Sheet1.Cells(i, 2).Value, i End If End If Next End With ComboBox2.Value = ComboBox2.List(0)End SubPrivate Sub UserForm_Initialize() '\u7a97\u4f53\u521d\u59cb\u5316 Dim dc As Object Set dc = CreateObject("Scripting.Dictionary") Dim i As Long For i = 1 To Sheet1.[a65536].End(3).Row If Not dc.exists(Sheet1.Cells(i, 1).Value) Then ComboBox1.AddItem Sheet1.Cells(i, 1).Value dc.Add Sheet1.Cells(i, 1).Value, i End If Next ComboBox1.Value = Sheet1.Cells(1, 1).ValueEnd SubPrivate Sub CommandButton1_Click() '\u6392\u5e8f\u6309\u94ae Dim arr, brr(), crr() arr = Sheet1.Range("A1:B" & Sheet1.[a65536].End(3).Row).Value Dim i As Long, m As Long, n As Long For i = 1 To UBound(arr) If arr(i, 1) & arr(i, 2) = ComboBox1.Value & ComboBox2.Value Then n = n + 1 ReDim Preserve brr(1 To 2, 1 To n) brr(1, n) = arr(i, 1) brr(2, n) = arr(i, 2) Else m = m + 1 ReDim Preserve crr(1 To 2, 1 To m) crr(1, m) = arr(i, 1) crr(2, m) = arr(i, 2) End If Next With Sheet1 .Cells(1, "D").Resize(n, 2) = WorksheetFunction.Transpose(brr) .Cells(n + 1, "D").Resize(m, 2) = WorksheetFunction.Transpose(crr) End WithEnd Sub\u8be6\u89c1\u9644\u4ef6\uff1a

  1. 如图,有一组数据,既有学生的分数,又有性别,这里排列混乱,男女也混合在一起。

  2. 选中全部的数据,如图。

  3. 选择【排序与筛选】->【自定义排序】,如图。

  4. 先把男女生分开,选择“主要关键字”选择“性别”,也就是先按性别来排序。排列依据,选择“数值”,默认升序就行。


  5. 点击确定后看到男女生分开排序了。

  6. 再对男女生的数据按成绩排序,而且保持刚才的男女分开。再按第3条,进入“自定义排序”界面。如图,【添加条件】。

  7. 按红色框内的示例,选择“次要关键字”为“成绩”,排列依据为“数值”,次序为“升序”,根据自己需要来,如图。

  8. 点击【确定】后,就可以看到如图,把男女分开,并且分别按各自的成绩再排序。




1、建立辅助列,用公式:=IF(A2="Eton",1,IF(A2="Apeal",2,IF(A2="Optima",3,4))) ,下拉公式:
2、自定义排序:开始--排序和筛选--自定义排序,主关键字为“辅助列”,升序;次关键字为“编号”列,升序。

1、创建一个自定义序列:Eton, Appeal, Optima
2、对A列应用自定义序列排序
3、对B列应用长序排序。

扩展阅读:excel 多条件判断输出 ... 如何根据条件排序 ... excel if多个条件嵌套 ... 表格怎么排序名次1234 ... sumproduct多条件求和 ... 表格1-100自动排序 ... vlookup if多条件查询 ... 一键自动生成序号 ... 排序怎么设置多个条件 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网