如何让excel表里的空格自动排序号?

如何让excel表里的空格自动排序号?,第1张

excel表里有空格自动排出序号的具体方法:

1、打开excel2010表格文档,如图所示。

2、首先2113在单元格中输入52614102=ROW(A1),并按回车键,如图所示。

3、发现其他表格被选中,如图所示。

4、按Ctrl+D,就可以看到1-20的序号,如图所示。

Sub 空格纵向编号()

Dim rng As Range, rng1 As Range, rng2 As Range, Num As Double, nc As Double, nr As Double, i As Double, j As Double

Set rng1 = Range("a1").End(xlToRight)

Set rng2 = Range(Range("a1"), rng1)

nc = rng2.Columns.Count

nr = ActiveSheet.UsedRange.Rows.Count

For i = 1 To nc

    If Cells(1, i) = 1 Then

        For j = 2 To nr

            If Cells(j, i) = "" And Application.WorksheetFunction.IsNumber(Cells(j - 1, i)) = True Then

                Cells(j, i) = Cells(j - 1, i) + 1

            Else

                If Cells(j, i) = "" And Application.WorksheetFunction.IsNumber(Cells(j - 1, i)) = False Then

                    Cells(j, i) = 1

                End If

            End If

        Next

    End If

Next

End Sub

欢迎追问,满意请采纳哦。

使用方法:按Alt+F11打开VBE界面,插入,模块,复制粘贴以上代码,关闭当前VBE界面,按Alt+F8,执行代码就OK啦。你把表格保存为xls或者xlsm格式,以后都只要Alt+F8一下就好了。

如果BCD列要同时判断,填写其中一个就要生成序号怎么办?在上次的基础上,IF函数后面嵌套一个OR函数,分别以BCD单元格进行判断<>""(是否是空格),如果其中一个并列条件成立,则结果直接返回ROW()-1,如果并列条件都不成立,直接返回空格。

PS:很想录视频讲解,但是但是真的工作太忙了。大家谅解一下,不懂函数参数,如何填写,可以看我以前的教学视频,都讲过噢。

同理,如果三列必须全部填写完才能生成序号,我们将OR换成AND,AND函数就是并列条件全部成立,返回序号,有一个不成立,返回空格。

咱们向下复制公式,大家看,这样做就满足了小伙伴的要求。

但是以行号作为判断条件,有一定的缺陷,就是我们在首行或者表头添加行的时候,序号挤压会发生变化。你需要调整ROW()-1的参数,重新复制函数。(以行号作为判断条件,对于固定表格配合嵌套函数,生成工号是绝佳的方法噢)

我们来进阶一下,对于连续区域的条件判断,如果列数较多,OR和AND函数显然书写繁复。这里我们就用加入计数判断句,COUNTA(B2:D2)>=1,以B2到D2的区域进行计数(空白不计数),如果>=1,则返回序号。

我们再来看看序号不留号占位的方法。

IF条件判断我们依然用COUNTA(B2:D2)>=1进行判断,如果条件成立,则返回COUNTIF(A$1:A1,">0")+1,以A1单元为首,向下计数,计数条件为>0,空白不计数。这样套路组合,形成了多列判断不留号。

使用COUNTIF有个好处,插入空白行,序号不乱序。

如果留号占位,那更简单,返回为真的条件书写为COUNTA(A$1:A1),COUNTA用于统计区域内非空值的单元格个数,咱们序号3的位置虽然是空白,但存在逻辑计算,也要参与统计。跟COUNTIF的条件判断有所差别(大家一定要理解),这样就保证了序号留号占位。

以上做法,当我们书写填写BCD任何数值,序号都会自动生成。但有个缺点,就是我们筛选的时候,依然会将隐藏单元格区域计算在内。要解决这一方法很简单。

表格最后增加一个辅助列。

A2处书写公式,=IF(COUNTA(B2:D2)>=1,SUBTOTAL(3,F$1:F2)-1,"")。SUBTOTAL函数很强大,他可以选择统计隐藏/忽略隐藏单元格的计算。第一个参数3,表示包含隐藏值的的计数(相当于COUNTA),以E列进行计数。

当我们开启筛选,由于我们E列只有三个数,直接会给我们返回序号1,2,3。取消筛选,又变成原来的样子。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11702896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存