每天忙的要死还不知道在干嘛还45°躺平中系列(第二篇)

每天忙的要死还不知道在干嘛还45°躺平中系列(第二篇)

excel下实现word一样的章节效果(接上)

那就直接放出来代码吧,然后顺便写一下咋用吧,我看好多都直接贴代码,不说咋用,你说这工作做的能好吗,是不是,你的用户能开心么是不是
现在都讲究逻辑清晰,让领导听懂是不是

今天就看看咋能通过写B列和C列,自动生成带标题和缩进的A列吧

看图,咱就是讲要说的明白是吧
在这里插入图片描述
再看代码,咱就是说得贴的好看是吧,另外这是量产版啊,没啥bug的那种版本奥
如果报bug了那就把最后一行下面一行到excel最后一行都选中删除一下子昂,可以在最后一行的下一行按下 坑吹儿+she福特+方向键下直接选到excel最后一行昂
奥,对了,这个代码贴在哪知道哇,就是excel运行宏的那块,合格的45°是会使用宏的奥,不然就是0°了

Sub create_title_number()
Dim rescol As String
Dim firstdata As Integer
Dim levelcol As String
'程序配置
'结果放在哪一列,就是那个A列,也可以随便写,别和下面B、C重复就行
rescol = "A"
'数据第一行是哪一行,有的时候你那傻X工作可能要弄一个特别傻X的表头,然后就会整一个特别复杂的表头,要合并各种
firstdata = 3
'层级定义在哪列,这个层级就是你写标题的时候,那个标题属于第几个层级,只需要写一个数字,不用写1.1.1.1还有缩进哦
levelcol = "B"
'名称在哪列,哦,就这个意思
namecol = "C"
'自动标号,下面就是自动化跑的东西了,第一下是把数据分级都去掉,免得运行很多次会导致报错
Range("A1").Select
Selection.ClearOutline
Range("A10").Select
n = ActiveSheet.UsedRange.Rows.count
'下面的就是标号了,给A列标号的逻辑啊,可以打包了,直接用
Dim deep As Integer
Dim maxdeep As Integer
maxdeep = Application.WorksheetFunction.Max(Range(levelcol & ":" & levelcol))
Dim arr()
ReDim arr(1 To maxdeep)
For i = 1 To maxdeep Step 1
    arr(i) = 0
Next
For i = firstdata To n Step 1
    current_deep = Range(levelcol & CStr(i))
    For j = current_deep + 1 To maxdeep Step 1
        arr(j) = 0
    Next
    arr(current_deep) = arr(current_deep) + 1
    Title = ""
    For j = 1 To current_deep Step 1
        If j = current_deep Then
            Title = Title & arr(j)
        Else
            Title = Title & arr(j) & "."
        End If
    Next
    Range(rescol & CStr(i)) = Application.WorksheetFunction.Rept(" ", (Range(levelcol & CStr(i)) - 1) * 3) & Title & "  " & Range(namecol & CStr(i))
Next

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值