自动填充直到下一行不为空

自动填充直到下一行不为空

我有一份预先格式化的电子表格报告,其单元格格式如下:

A           B         C        D
                               Week1 Week2
CUSTOMER A  PRODUCT A MEASURE A
                      MEASURE B
                      MEASURE C
CUSTOMER B  PRODUCT B MEASURE A
                      MEASURE B
                      MEASURE C

报告可以包含数千行。我需要取消合并 A 列和 B 列中的单元格,这样会生成 3 个单元格块,其中字符串包含在单元格块的第一行中。在本例中为 A2。

我需要自动填充 A 列和 B 列的单元格以实现以下情况:

CUSTOMER A PRODUCT A MEASURE A
CUSTOMER A PRODUCT A MEASURE B
CUSTOMER A PRODUCT A MEASURE C
CUSTOMER B PRODUCT B MEASURE A
CUSTOMER B PRODUCT B MEASURE B
CUSTOMER B PRODUCT B MEASURE C

值应自动填充 2 行或直到包含不等于自动填充值的值的单元格。然后该值应自动填充直到下 2 行,切换到第三个单元格中包含的值,依此类推。

它应该继续这样做,直到最后一行包含值(最后一行包含日期和时间)。

我想通过 VBA 循环来实现这一点。A、B 和 C 列始终是字符串,而从 D 列开始的值是数字。

答案1

希望这就是您所需要的。我在每一行重要内容上方添加了注释,以便您可以跟踪正在发生的事情,并根据需要进行调整。

这确实假设 C 列中的数据代表您需要处理的行。您说它应该继续到最后一行 - 1,因为最后一行包含日期+时间...好吧,只要不是 C 列包含日期+时间,那么就可以了:

Dim myData As Range

'Set a range by figuring out the length of your data based on column C data:
Set myData = Range("C2", Range("C2").End(xlDown))

'create two blank variables that we'll use
'to store data later:
colAdata = ""
colBdata = ""

'Loop through each row in the 'myData' range:
For Each cell In myData

    'First, unmerge cells that are merged in columns A&B:
    If cell(1, -1).MergeCells = True Then cell(1, -1).UnMerge
    If cell(1, 0).MergeCells = True Then cell(1, 0).UnMerge

    'Check if column A has data, and if so, grab its value and
    'column B's value for use in the next iteration:
    If cell(1, -1).Value <> "" Then
        colAdata = cell(1, -1).Value
        colBdata = cell(1, 0).Value
    Else 'it's blank so enter the data from the row above:
        cell(1, -1).Value = colAdata
        cell(1, 0).Value = colBdata
    End If

Next

希望这会有所帮助,让我知道进展如何。

相关内容