每天忙的要死还不知道在干嘛还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