Como copio o valor na coluna diferente da linha anterior se a célula não estiver vazia?

0

Eu tenho a seguinte situação:

A                   B
19260218 234 77     ok
                    3
                    ok
19310328 174 46     2

Quando o valor na coluna B é numérico, tenho um formato condicional em que a linha inteira é colorida em vermelho. Se for possível, eu precisaria do seguinte em vba:

Se o valor na coluna B for numérico E a célula na coluna A (na mesma linha) estiver vazia, copie o valor encontrado anteriormente da coluna A para a linha de destino. Neste caso (sem contar o cabeçalho): B2 = numérico AND A2 = vazio, então copie A1 para A2

B4 também é numérico, mas como A4 não está vazio, nada precisa ser copiado.

Isso é possível para uma planilha inteira que muda no número de linhas? Se sim, como?

Obrigado pela sua ajuda. Se eu precisar explicar mais, não hesite em perguntar.

    
por Morrog 29.01.2015 / 12:34

2 respostas

1

Coloque este código do VBA na planilha:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks As Worksheet
Set wks = ActiveSheet
cellempty = False
i = 1
'Check the max. number of rows
While cellempty = False
    a = Cells(i, 2)
    If a = "" Then
        finalrow = i - 1
        cellempty = True
    End If
    i = i + 1
Wend
'Going row by row
For i = 1 To finalrow
    If IsNumeric(Cells(i, 2)) Then 'check if cell in column B is numeric
        If Cells(i, 1) = "" Then 'check if cell in column A is empty
            'goes upward on column A to find a non-empty value
            For j = i To 1 Step -1
                If Cells(j, 1) <> "" Then
                    Cells(i, 1) = Cells(j, 1) 'copy value to cell
                    j = 1
                End If
            Next j
        End If
    End If
Next i
End Sub

é uma coisa muito básica que você pode aperfeiçoar para se adaptar às suas necessidades. Ele assume que os dados estão nas colunas A e B e serão executados sempre que houver uma alteração na planilha.

    
por 29.01.2015 / 14:02
0

Você pode inserir isso na célula C2:

=IF(ISNUMBER(B2),IF(A2="",A1,A2),IF(A2="","",A2))

e copie a fórmula para C3, C4, C5 ...

Agora, a coluna C terá as informações da maneira que você quiser

Para entrada da célula C1:

=IF(A1="","",A1)
    
por 29.01.2015 / 13:08