Excel 2007: insertar fila automáticamente si se llena la fila anterior

1

Quiero hacer una hoja de trabajo que pueda usarse como un recibo impreso para los clientes, este es el diseño básico:

  • Detalles de contacto del cliente (nombre, dirección, etc.) estos son campos fijos que pueden estar vacíos
  • Fila de encabezado: "Artículo | Cantidad | precio | total"
  • Tabla dinámica que contiene cualquier número de líneas, una para cada artículo que compre el cliente
  • Fila de pie de página que contiene el número total de artículos y la cantidad total

Con lo que estoy luchando es cómo hacer que la tabla dinámica funcione. Actualmente inserto manualmente una fila para cada nuevo artículo, pero esto es engorroso en situaciones donde está muy ocupado. Me gustaría que Excel muestre una línea en blanco por defecto, y luego inserte una línea cada vez que la línea anterior contenga datos, moviendo automáticamente la fila del pie de página una línea y actualizando la fórmula utilizada para calcular la cantidad total. y la cantidad.

¿Es esto posible en absoluto?

Alex
fuente
1
¿Has intentado hacer una lista de la tabla de artículos? Una lista agrega una nueva fila a la parte inferior de la tabla cuando comienza a escribirla. (Sabes que hay toneladas de plantillas de factura , que haga todo lo que acaba de describir, en Internet de forma gratuita.
CharlieRB
Usar una lista (ahora llamada tablas) es definitivamente la mejor opción. CharlieRB debería hacer de esto una respuesta para que puedas marcarla como aceptada.
AdamV

Respuestas:

1

Solo como una advertencia para usted y cualquier otro que intente hacer esto:

En este momento deberías pensar en:

  • ¿Con qué frecuencia usaré esto por cliente?
  • cuantos clientes hay
  • ¿Cómo voy a ingresar estos artículos?
  • ¿Cuántos artículos diferentes hay?

Estas son las preguntas más importantes. Lo he hecho bastante exactamente , lo que intenta hacer, para una compañía muy pequeña, con alrededor de 3 recibos por mes.

Como siempre, por favor, rápido y amp; barato & amp; excelOnly Sin embargo, nadie hizo esas preguntas arriba. Principalmente debido a barato y amp; excelOnly Y ahora, es tan obvio cuánto tiempo se pierde, cada vez que se busca, se corrige un recibo, pero principalmente cuando se agregan los artículos. Sin mencionar cuántas formas diferentes de un mismo artículo existen. Sin embargo, es posible corregir esto con Excel, pero en mi humilde opinión, un verdadero dolor. Convencido también del cutomer, un EPR ahora está configurado.

Esta es una tarea de base de datos. ¡Es como uno de los mejores ejemplos de una tarea de base de datos!

Además, esto podría incluso valer la pena en un sistema ERP para pequeñas empresas. Aquí en Alemania, te recomendaría JTL-Wawi.

Pero, si esto es un salto demasiado grande, realmente debería pensar en usar Access.

Algunas ventajas:

  • puedes gestionar tus clientes
  • puedes gestionar tus artículos
  • Puedes mover tu comportamiento dinámico para acceder.
  • Puedes gestionar tus recibos fácilmente
  • Aún puedes usar Excel como tu sistema de salida.

¿Cómo funcionaría esto?

Tendrías algunas tablas, para clientes y artículos, y para recibos. La tabla de recibos conectaría a un cliente con sus artículos y otros atributos relevantes para los recibos.

Luego, puede crear un informe diseñado para un recibo básico e imprimirlo desde el acceso. O use Excel para seleccionar un recibo, obtener los datos e imprimirlos. Debido a que los datos estarían predeterminados, sabría cuántas filas / columnas están llegando y cuál es su contexto.

Sin embargo, esta rueda ya se inventó tantas veces, por lo que debería mirar las ya existentes;)

Editar

Una solución basada en su solicitud de comportamiento podría usar este intento aquí:

https://stackoverflow.com/questions/12604274/excel-vba-is-there-a-textchanging-textchanged-or-a-similar-event-or-how-to/12604570#12604570

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

Usted podría, por supuesto, utilizar el Change evento en su lugar y es posible que tenga que limitar este comportamiento al rango máximo de su lista dinámica o a la hoja de trabajo de la misma.

O simplemente haga un acceso directo por par macro accesible para ejecutar esta línea aquí:

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

Deberá determinar la celda seleccionada actualmente para tener la Target distancia.

Jook
fuente
En realidad, trabajo para una compañía que desarrolla un sistema POS para estaciones de combustible, así que sé que Excel es muy limitado en comparación con la solución POS completa. Déjame explicarte lo que hago y lo que necesito: soy un fotógrafo profesional. Ahora que se acerca la Navidad, hago muchos eventos en los que tomaré fotografías que se imprimirán como tarjetas de navidad. Pero debido al gran volumen, es difícil hacer esto en el lugar. Así que básicamente quiero imprimir solo una pequeña nota al cliente, confirmando lo que han pedido y cuándo estará listo para recogerlo.
Alex
@Alex: espero que mi edición te ayude por ahora a comenzar las cosas;)
Jook