Excel: defina a fórmula padrão para cada célula da coluna

Excel: defina a fórmula padrão para cada célula da coluna

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)), "")

célula vazia sem fórmula quando insiro uma nova linha

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:

  1. a coluna de interesse é colunaB
  2. se mais de uma linha for inserida, nada acontecerá
  3. se uma linha abaixo da área de dados for inserida, nada acontece
  4. se uma linha for excluída, nada acontece
  5. 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
  6. 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.

insira a descrição da imagem aqui

informação relacionada