【问题标题】:Excel VBA - Find and Fill in Values [duplicate]Excel VBA - 查找和填写值[重复]
【发布时间】:2014-02-03 17:17:21
【问题描述】:

抱歉,我提出了一个愚蠢的问题,但我是新手,没有太多的编程背景。我自己尝试了几个小时,但我只是不太了解。我检查了thisthis,但我无法弄清楚如何对其进行足够的修改。

示例数据:

第一部分是我如何获取文件,第二部分是我希望它的外观。

前 3 列在列中的某处具有值。我需要找到这些值,复制它们,然后将它们粘贴到下一个值,然后一直重复到范围的底部。有时每列有很多值,有时只有1。数据的最后一行可以由第4列确定。基本上我只需要填写所有空白单元格。注意:第 2 行并不总是包含第一个值。

这是我目前所拥有的(更新):

Sub FindFillIn()

    Dim columnValues  As Range, i As Long
    Dim cellstart As Integer
    Dim cellend As Integer
    cellstart = 2
    cellend = ActiveSheet.Range("E" & ActiveSheet.Rows.Count).End(xlUp).Row

    i = 1

    For i = cellstart To cellend
        If Cells(i, 1).Value = "" Then
            Cells(i, 1).Value = Cells(i - 1, 1).Value
        End If
    Next i

End Sub

更新:

它似乎在第一列上正确运行,但它只运行一列。如何让它在第 1、2 和 3 列上运行?

【问题讨论】:

标签: excel excel-2010 vba


【解决方案1】:
Sub FillInBlanks()

    Dim rng As Range

    On Error Resume Next
    With ActiveSheet
        Set rng = .Range(.Range("A2"), _
         .Cells(Rows.Count, 4).End(xlUp)).SpecialCells(xlCellTypeBlanks)
    End With
    On Error GoTo 0

    If Not rng Is Nothing Then
        With rng
            .FormulaR1C1 = "=R[-1]C"
            .Value = .Value
        End With
    End If


End Sub

【讨论】:

  • 当我运行这段代码时,它只是将“header 2”放在每个空单元格中。我尝试更改代码,但我无法弄清楚它每次重复 B1 的内容。
  • 第一行数据是否完整,如您的示例所示?我假设您的实际数据从第 2 行开始。
  • 哎呀,那是我的错。顶行(或第 2 行)并不总是包含第一条数据。在第 1-3 列中通常有几行空白行先从顶部出现。
【解决方案2】:

这很容易,无需使用 VB。 选择第 1 列的数据,直到要填充数据的最后一个单元格。 按 CTRL+G 并单击特殊。 选择空白,然后按 OK。 现在,在编辑栏上,键入“=”并选择(按 Ctrl+单击)数据开始的第一个单元格,然后按 Control + Enter。

您可以将此过程记录到宏中,然后查看代码。

【讨论】:

  • 这个信息非常有用。谢谢。我实际上打算将它用于我正在研究的其他事情,尽管我仍然需要让 VB 为这个问题工作。
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 2019-03-28
  • 2017-12-10
  • 1970-01-01
  • 2019-10-02
  • 2015-07-17
  • 2014-06-08
相关资源
最近更新 更多