在新组开始时插入标题行的宏

时间:2017-10-16 20:18:44

标签: excel excel-vba vba

我正在尝试构建一个新代码,每次数据组更改时,该代码都会复制并插入标题列(从数据的第1行)到列表中。每个分组的大小不同,大小从一个月到下一个月不等。为了进一步复杂化,分组的名称可以改变。例如,我需要代码来打破这样的列表:

Header
Corporate
Corporate
Corporate
Insert header
Financial
Financial
Insert header
Public 
etc

数据需要保留在同一张纸上,因此无需将数据移动到任何地方

到目前为止,我已经想到了类似的内容,但不知道使用正确的语法以使其正常运行:

Do forever
‘stop at the end
   If group_cellvalue(vArraycounter) = “” then leave
   Endif
vArraycounter = vArraycounter + 1
   ‘test the current group against that in the previous row if different, insert 
   'header
   If group_cellvalue((vArraycounter) <> group_cellvalue((vArraycounter - 1 ) 
    then
        InsertRow
        InsertHeadingText
        'Increment counter to get back on track
        vArraycounter = vArraycounter + ?
    Endif
End For 

非常感谢任何提示或建议:)

1 个答案:

答案 0 :(得分:0)

假设:始终会有一个初始列标题;初始列标题下面的值没有间隙。

然后下面的代码是一个起始点。将其粘贴到模块中并调整Test子,使其指向初始列标题的位置。

Option Explicit

Public Sub Test()
    Headerize Sheet1.Range("A1")
End Sub

Public Sub Headerize(ByVal prngFirstHeader As Excel.Range)
    Dim rngScan As Excel.Range

    Set rngScan = prngFirstHeader.Cells(3, 1)

    Do Until IsEmpty(rngScan.Value)
        If rngScan.Value <> rngScan.Cells(0, 1).Value Then
            prngFirstHeader.Copy
            rngScan.Insert Shift:=XlInsertShiftDirection.xlShiftDown
        End If

        Set rngScan = rngScan.Cells(2, 1)
    Loop

    Set rngScan = Nothing
End Sub