怎么用VBA对EXCEL内的数据排序
答案:3 悬赏:0 手机版
解决时间 2021-04-28 18:12
- 提问者网友:孤凫
- 2021-04-27 20:59
怎么用VBA对EXCEL内的数据排序
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-04-27 21:11
既然已经知道数据是从10100~10199,10200~10299,10300~10399……,为何还用排序,直接在A1输入10100,B1输入10200,C1输入10300……,然后选中A1:C1,向下拉动填充序列即可(下拉后,右下角有个方块提示按钮,点击,弹出中点选“序列填充”即可)。
根据你的补充,如下两个办法:
假设数据源在sheet1表的A1:F100,则在sheet2表操作:
1、公式+定位法
在A1输入
=IF(COUNTIF(Sheet1!$A$1:$F$100,1&TEXT(COLUMN(),"00")&TEXT(ROW()-1."00")),1&TEXT(COLUMN(),"00")&TEXT(ROW()-1."00")),"")
然后右拉F1,再下拉到F99,选中,复制,就地选择性粘贴——数值,然后,选中A1:F99,按F5——定位条件——空值——确定,然后鼠标指向任意一个被选中的单元格——右键——删除——单元格上移——OK!
2、纯公式法
在sheet2表的【B1】输入
=TEXT(SMALL(Sheet1!$A$1:$F$100,SUMPRODUCT(N($A$1:A$100<>""))+ROW()),"[<"&10^4+COLUMN()/1%&"]#;;")右拉到G1,再下拉到G100即可。
追问最后一个问题了,为什么大于12000以上的数就显示不了呢,我的数据范围从00000到14000,我只能保证一定是5位数。应该怎么修改公式。我的数据范围是从A1到W32.我问第二种方法。追答首先,必须确保sheet1表的是数值型数字格式(或常规)(文本型数字无法使用上述公式)
其次,如果计算区域是A1:W32,将上述公式中的sheet1!$a$1:$f$100修改为sheet1!$a$1:$w$32即可,其他地方不用修改。
最后,为了容错,可以增加一个判断函数,将公式变成:
=IF(SUMPRODUCT(N($A$1:A$100<>""))+ROW()<=COUNT(sheet1!$A$1:$W$32),TEXT(SMALL(Sheet1!$A$1:$W$32,SUMPRODUCT(N($A$1:A$100<>""))+ROW()),"[<"&10^4+COLUMN()/1%&"]#;;"),"")
即可,公式应下下啦填充,然后再右拉填充。
详见附件。
追问亲,还差一点,10000以下的数呢,谢谢。你可以当最小数是1000开始的。可是我数据里面是写成了01000的。排好后写成1000也没问题。追答=IF(SUMPRODUCT(N($A$1:A$100<>""))+ROW()<=COUNT(sheet1!$A$1:$W$32),TEXT(SMALL(Sheet1!$A$1:$W$32,SUMPRODUCT(N($A$1:A$100<>""))+ROW()),"[<"&(COLUMN()-1)*1000&"]#;;"),"")你一点函数基础都没有啊!!??
根据你的补充,如下两个办法:
假设数据源在sheet1表的A1:F100,则在sheet2表操作:
1、公式+定位法
在A1输入
=IF(COUNTIF(Sheet1!$A$1:$F$100,1&TEXT(COLUMN(),"00")&TEXT(ROW()-1."00")),1&TEXT(COLUMN(),"00")&TEXT(ROW()-1."00")),"")
然后右拉F1,再下拉到F99,选中,复制,就地选择性粘贴——数值,然后,选中A1:F99,按F5——定位条件——空值——确定,然后鼠标指向任意一个被选中的单元格——右键——删除——单元格上移——OK!
2、纯公式法
在sheet2表的【B1】输入
=TEXT(SMALL(Sheet1!$A$1:$F$100,SUMPRODUCT(N($A$1:A$100<>""))+ROW()),"[<"&10^4+COLUMN()/1%&"]#;;")右拉到G1,再下拉到G100即可。
其次,如果计算区域是A1:W32,将上述公式中的sheet1!$a$1:$f$100修改为sheet1!$a$1:$w$32即可,其他地方不用修改。
最后,为了容错,可以增加一个判断函数,将公式变成:
=IF(SUMPRODUCT(N($A$1:A$100<>""))+ROW()<=COUNT(sheet1!$A$1:$W$32),TEXT(SMALL(Sheet1!$A$1:$W$32,SUMPRODUCT(N($A$1:A$100<>""))+ROW()),"[<"&10^4+COLUMN()/1%&"]#;;"),"")
即可,公式应下下啦填充,然后再右拉填充。
详见附件。
全部回答
- 1楼网友:鱼芗
- 2021-04-27 22:24
不知道你的数据有多少行,多少列,也不知道行号列号,怎么做?追问32行,22列
- 2楼网友:野慌
- 2021-04-27 21:31
貌似不用VBA,直接用函数就可完成。试试下面的公式:
在首个单元格中输入
=IF(ROW(A1)>100,"",9999+COLUMN(A1)*100+ROW(A1))
右拖下拉填充。
在首个单元格中输入
=IF(ROW(A1)>100,"",9999+COLUMN(A1)*100+ROW(A1))
右拖下拉填充。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯