如图所示,在A2单元格输入以下公式=IF(ISBLANK(B3),"",COUNTA($B$2:B3)),然后下拉公式。该公式原理是首先判断B列数据是否为空,如果为空,序号则为空。序号采用counta()函数产生,计数依据是B2单元格到目前行的数据条数。如果你的数据是一行全部为空可以用这个公式。如果一行数据部分列有数据,部分列没数据,则不能实现。
刚才找到一个很好的函数,max(),数据部分为空的可以用这种方式来实现
在A2单元格输入公式=if(counta(B2:E4)<>0,1,""),counta(B2:E4)<>0是判断该行数据是不是全为空,如果为空则无序号,不为空则为1,A2单元格公式不能下拉。
在A3单元格输入下面这个公式:=IF(COUNTA(B3:E3)<>0,MAX($A$2:A2)+1,""),然后下拉。
这样可以解决数据 不全为空的序号排序问题。
如果判断为空的条件是一行的数据必须全部未非空才判断为该行有效,A2单元格公式:=if(counta(B2:E4)=4,1,"")
A3单元格公式:=IF(COUNTA(B3:E3)=4,MAX($A$2:A2)+1,"")。数据区域B3:E4要根据你的实际表格区域修改,"4"因为是4列数据因此是4,根据你的表格数据列数修改即可。
自动排序是可以实现的,这需要用到 worksheet_change 事件。
在“自动排序”工作表模块中输入以下代码: Private Sub Worksheet_Change(ByVal Target As Range) Dim h As Range 'If Target。 Count > 1 Then End '若同时改变多个单元格时,不想让其排序,请把本行首的“ ' ”去掉 If Target。
Column 2 Then '若改变的单元格的列标小于8,行标小于2,则运行下面语句 Set h = Range(Cells(Target。 Row, 1), Cells(Target。
Row, 7)) '让对象变量h为改变的单元格所在行的1—7列的内容 If Application。CountA(h) = 7 Then Call sorts '如果 h 的所有单元格都有内容,则运行sorts程序 End If End Sub 并在VBA工程中插入一模块,输入以下代码: Sub sorts() With ActiveSheet 。
Range("a2:g" & 。[g65536]。
End(xlUp)。Row)。
SortSpecial 1, _ 。Range("G2"), 2, , 。
Range("A2"), 2, 。Range("F2"), 2, 1 End With End Sub 具体参考附件 。
1、鼠标右键点击“文件”两字,出现下图列表,点选项。
2、点“选项”后打开对话框,如下图,点“编辑”。
3、点“编辑”后出现如下图选项,把“自动编号”下面两个选项的对勾去掉即可。
4、还有最后一点很重要,点最下面的“确定”,保存设置。
注:再说明一点,设置好后,如果前面有自动编号的,一定要把自动编号删掉,从新手动输入,否则还会自动编号的。