VBA 在列标题中查找空白单元格

VBA Find Blank cells in Column Headings

希望对你有所帮助。我在下面有一段代码,它有点工作。我只需要它做更多。

它目前沿着第一行从A1 到H1 看。如果找到空白单元格,则将单元格值复制到空白单元格的左侧,然后将该值粘贴到空白单元格中,然后继续移动。

由于范围每天都在变化,A1 到 H1 是不够的。我现在需要代码沿着第一行查找,直到它找到最后一个包含数据的单元格,然后查找空白并开始复制和粘贴过程。

我还需要代码,然后将 2 添加到粘贴的单元格,以便我可以执行透视并区分复制的单元格和粘贴的单元格。

我在下面提供了一张图片以便更好地理解。最终结果应该是单元格 B2 包含文本 24 - 公司:Hier 2 并且 E2 包含文本 07 - 产品:家庭等级 2

我的代码在下面,一如既往,我们非常感谢您的帮助。

图1

我的代码

Public Sub BorderForNonEmpty()
    Dim myRange As Range
    Set myRange = Sheet1.Range("A1:H1")
    For Each MyCell In myRange
        If MyCell.Text = "" Then
            MyCell.Offset(0, -1).Select
        ActiveCell.Copy
        ActiveCell.Offset(0, 1).PasteSpecial (xlPasteAll)
        End If
    Next
End Sub

试试下面的代码 - 注释说明了每行重要代码的作用:

Option Explicit

Sub FillInHeaders()

    Dim ws As Worksheet
    Dim lngRowWithHeaders As Long
    Dim rngHeader As Range
    Dim rngCell As Range

    ' get a reference to your worksheet
    Set ws = ThisWorkbook.Worksheets("SHeet1")

    ' set the row that the headers are on
    lngRowWithHeaders = 2

    ' get the range from A1 to ??1 where ?? is last column
    Set rngHeader = ws.Cells(lngRowWithHeaders, 1) _
        .Resize(1, ws.Cells(lngRowWithHeaders, ws.Columns.Count) _
        .End(xlToLeft).Column)

    ' iterate the range and look for blanks
    For Each rngCell In rngHeader
        ' if blank then ...
        If IsEmpty(rngCell.Value) Then
            ' get cell value from left and a 2
            rngCell.Value = rngCell.Offset(0, -1).Value & "2"
        End If
    Next rngCell

End Sub