Excel 2007: Inserir linha automaticamente se a linha anterior for preenchida

Excel 2007: Inserir linha automaticamente se a linha anterior for preenchida

Quero fazer uma planilha que possa ser usada como recibo impresso para os clientes, esse é o layout básico:

  • Dados de contato do cliente (nome, endereço, etc) são campos fixos que podem estar vazios
  • Linha de cabeçalho: "Item|Qtd.|preço|total"
  • Tabela dinâmica contendo qualquer número de linhas, uma para cada artigo que o cliente compra
  • Linha de rodapé contendo o número total de artigos e o valor total

O que estou enfrentando é como fazer a tabela dinâmica funcionar. Atualmente insiro manualmente uma linha para cada novo artigo, mas isso é complicado em situações em que está muito ocupado. Gostaria que o Excel mostrasse uma linha em branco por padrão e, em seguida, inserisse uma próxima linha cada vez que a linha anterior contivesse algum dado, movendo automaticamente a linha de rodapé uma linha para baixo e atualizando a fórmula usada para calcular a quantidade total. e quantidade.

Isso é possível em tudo?

Responder1

Apenas como um aviso para você e qualquer outra pessoa que tente fazer isso:

Neste momento você deve pensar em:

  • com que frequência usarei isso por cliente?
  • quantos clientes existem?
  • como vou inserir esses itens?
  • quantos itens diferentes existem?

Estas são as questões mais importantes. Eu fiz bastanteexatamente, o que você está tentando fazer, para uma empresa muito pequena, com cerca de 3 receitas por mês.

Como sempre, rápido, barato e excelente. No entanto, ninguém fez as perguntas acima. Principalmente por ser barato e excelente. E agora é tão óbvio quanto tempo se perde, sempre que um recibo é buscado, corrigido, mas principalmente quando os itens são somados. Sem mencionar quantas formas diferentes do mesmo item existem. No entanto, corrigir isso com o Excel é possível, mas IMHO, uma verdadeira dor. Convencido o cliente também, um EPR agora está configurado.

Esta é uma tarefa de banco de dados. É como um dos melhores exemplos de tarefa de banco de dados!

Além disso, isso pode até valer a pena um sistema ERP para pequenas empresas. Aqui na Alemanha, eu recomendo JTL-Wawi.

Mas, se isso for um salto muito grande, você realmente deveria pensar em usar o Access.

Algumas vantagens:

  • você pode gerenciar seus clientes
  • você pode gerenciar seus itens
  • você pode mover seu comportamento dinâmico para acessar
  • você pode gerenciar seus recibos facilmente
  • você ainda pode usar o Excel como seu sistema de saída

Como isso funcionaria?

Você teria algumas tabelas, para clientes e itens, e para recibos. A tabela de recebimento conectaria um cliente aos seus itens e outros atributos relevantes do recebimento.

Em seguida, você poderia criar um relatório projetado para um recibo básico e imprimi-lo no acesso. Ou use o Excel para selecionar um recibo, obter os dados e imprimi-lo. Como os dados seriam predeterminados, você saberia quantas linhas/colunas estão chegando e qual é seu contexto.

No entanto - esta roda já foi inventada tantas vezes, então você deve dar uma olhada nas já existentes ;)

Editar

Uma solução baseada na sua solicitação de comportamento poderia usar esta tentativa aqui:

link

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = clngColumnRightToLastGrade Then
    Application.EnableEvents = False
    'offset selection, one row down, two cols to left
    Target.EntireRow.Insert (xlShiftDown) 'insert new row
    Target.Offset(1, -2).Select
    Application.EnableEvents = True
  End If
End Sub

É claro que você poderia usar o Changeevento e talvez fosse necessário limitar esse comportamento ao intervalo máximo da sua lista dinâmica ou à planilha dela.

Ou apenas torne uma macro acessível por tecla de atalho para executar esta linha aqui:

Target.EntireRow.Insert (xlShiftDown) 'insert new row

Você precisará determinar a célula atualmente selecionada para ter o Targetintervalo.

informação relacionada