
Tenho uma coluna com a seguinte fórmula em cada célula que calcula a diferença em quilômetros entre as duas células à esquerda de cada célula:
=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")
Meu problema é que toda vez que insiro uma nova linha entre os dados existentes, todas as células dessa linha ficam vazias e preciso colocar manualmente esse código na célula vazia.
É possível definir cada célula de uma coluna (excluindo o cabeçalho) para uma fórmula específicamesmo quando insiro uma nova linha?
Tentei definir a coluna como uma tabela e obtive sucesso no preenchimento automático das células sempre que inseri uma nova linha, porém, tenho outras colunas que também quero preencher automaticamente e o Excel não me permite inserir uma nova linha se Eu transformo mais de uma coluna em uma tabela.
Responder1
Aqui está uma pequena demonstração que você pode adaptar ao seu esquema real. Na demonstração:
- a coluna de interesse é colunaB
- se mais de uma linha for inserida, nada acontecerá
- se uma linha abaixo da área de dados for inserida, nada acontece
- se uma linha for excluída, nada acontece
- se uma linha no meio dos dados for inserida, a célula na colunaBserá preenchido com a fórmula acima ou com a fórmula abaixo
- se não houver fórmula acima ou abaixo da nova célula, nada acontece
Insira o seguinte sub na área de código da planilha:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, r1 As Range, r2 As Range
Set r = Target
If r.Rows.Count > 1 Then Exit Sub
If r.Columns.Count <> Cells.Columns.Count Then Exit Sub
If r.Row = 1 Then Exit Sub
Set r1 = Intersect(r, Columns(2))
If r1.Value <> "" Then Exit Sub
If r1.Offset(-1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(-1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
If r1.Offset(1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
End Sub
Responder2
Eu ia postar esse vídeo, mas evidentemente tenho que digitar pelo menos 30 caracteres.
Que tal "Aqui está uma maneira fácil de fazer isso". Droga, são apenas 29.
Para quem estiver interessado, o ícone "Inserir imagem" não aceita .mov, mas há umsite bem legalque converterá arquivos de vídeo em GIFs animados.