JS宏排序依据问题,求老师指导

各位老师大佬好,请教如何实现以E列有数据的单元格内容作为排序依据用于排序A列? 说明:E列单元格内容是以函数公式计算出来的中文字符串,需求是E1定义排序的第一位置,E2是排序的第二位置,以此类推,然后A列按照E列对应的顺序进行排序,谢谢老师! 由于论坛问题,我原有需要修改的代码发到1楼,谢谢。
广东省
浏览 341
收藏
4
分享
4 +1
10
+1
全部评论 10
 
wils
wils

创作者俱乐部成员

其实公式就挺好用 不会用你写的调用表格排序的方式 用数组凑活大概这样 function tt() { const ra = Range("A" + Rows.Count).End(xlUp).Row const re = Range("E" + Rows.Count).End(xlUp).Row let d = {} Range("E1").Resize(re, 1).Value2.flat().forEach((x, y)=>{ d[x] = y }) let arr = Range("A1").Resize(ra, 1).Value2 arr.sort((a, b)=>d[a[0]] - d[b[0]]) Range("A1").Resize(ra, 1).Value2 = arr }
· 海南省
1
回复
林.
又遇到wils老师了,谢谢老师,我试试去。是的用公式其实本来就挺好的,但是主要还是关联太多了所以需要特别处理。
· 广东省
回复
 
LG
11
· 河南省
回复
 
wils
wils

创作者俱乐部成员

公式大概 =SORTBY(A1:A8,MATCH(A1:A8,E1:E5,0))
· 广东省
回复
林.
嗯嘛,谢谢老师,其实E列的数据就是这个公式写出来的,只是其他原因又需要从里面手动挑选内容,所以才需要再次对照排序这样。
· 广东省
回复
 
林.
这是我的原有代码,可以的话希望老师用这个稍微修改,因为太高级我小白怕看不懂,谢谢! Columns("A:A").Select(); (obj => { (obj.SortFields); obj.Header = xlNo; obj.MatchCase = false; obj.SortMethod = xlPinYin; obj.Orientation = xlSortColumns; obj.SetRange(Selection); obj.Apply(); })(ActiveSheet.Sort); Range("D3").Select();
· 广东省
回复