怎么用VBA对EXCEL内的数据排序
最好第一列是从10100到10199,第二列是10200到10300,以此类推,谢谢。
我没说过这些数一定是连续不断开的。。。。。。。。 展开
既然已经知道数据是从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%&"]#;;"),"")
即可,公式应下下啦填充,然后再右拉填充。
详见附件。
在首个单元格中输入
=IF(ROW(A1)>100,"",9999+COLUMN(A1)*100+ROW(A1))
右拖下拉填充。
32行,22列