Autopreencher até a próxima linha não ficar em branco

0

Eu tenho um relatório de planilha pré-formatado com células formatadas como abaixo:

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

O relatório pode conter milhares de linhas. Eu preciso desmembrar células na coluna A e B, o que resulta em 3 blocos de células, com string contida na primeira linha do bloco. A2 neste caso.

Eu preciso preencher automaticamente as células nas Colunas A e B para alcançar a seguinte situação:

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

Os valores devem ter 2 linhas preenchidas automaticamente ou até a célula que contenha um valor diferente do valor preenchido automaticamente. Então, esse valor deve ser preenchido automaticamente até as próximas 2 linhas, comutado para o valor contido na terceira célula etc.

Deve continuar a fazê-lo até a última linha 1 contendo valores (a última linha contém a data e a hora).

Eu gostaria de fazer isso por um loop VBA. As colunas A, B e C são sempre strings e os valores da coluna D em diante são números.

    
por SpaceRock 24.06.2014 / 22:15

1 resposta

0

Espero que isso seja o que você precisa. Eu adicionei comentários acima de cada linha significativa para que você possa acompanhar o que está acontecendo e fazer ajustes conforme necessário.

Isso pressupõe que seus dados na coluna C são representativos das linhas nas quais você precisa trabalhar. Você disse que deve continuar até a última linha - 1, já que a última linha contém data + hora ... bem, desde que não seja a coluna C que contém a data + hora, então tudo ficará bem:

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

Espero que isso ajude, deixe-me saber como está indo.

    
por 25.06.2014 / 00:00