Hacer un macro que con los datos de algunas celdas me llene distintas tablas,

Buen día Expertos!!

Quiero hacer un macro que me llene distintas tablas en una misma hoja, con los datos de las celdas de otra hoja, Ejemplo: en la Hoja 1 ingreso datos en las celdas b3=$400, c3=Gasolina, d3=10/10/2013, e3=TClasica. El dato ingresado en la celda "e3" quiero que sea el condicionante para el acomodo en las diferentes tablas de la Hoja 2.

1 Respuesta

Respuesta
1

¿Y dónde se encuentran las otras tablas?

¿El texto de la celda e3 cómo se relaciona con la ubicación de las tablas?

¿Solo habrá datos en fila 3 o irás agregando en filas hacia abajo y debe considerarse e4, e5, etc?

Como verás, lo tuyo es muy vago como para desarrollar una macro... se requiere un mínimo de datos. Espero tus aclaraciones.

Hola Elsa,

Respecto a la ubicación de las otras tablas, se encuentran en la Hoja 2, Tabla 1"TClasica"(A1:D50), Tabla 2"TOro"(G1:J50), Tabla 3"TStyle"(M1:P50).

El texto de e3 solo puede ser "TClasica, TOro, TStyle", quiero relacionarlo por medio del nombre de las tablas. Ejemplo, si capturo en Hoja 1 Celda b3=$400, c3=Gasolina, d3=10/10/2013, e3=TClasica, quiero que estos mismos datos se pasen a la tabla "TClasica", donde a1 sea = al valor de (b3 de hoja 1), b1 = (c3 de hoja 1), c1 = (d3 de hoja 1), y d1 = (e3 de hoja 1),

Y afirmando que solo habrá datos en la fila 3 de la Hoja 1, por que los quiero ir remplazando ya que se hayan registrado en las tablas de la Hoja 2.

Saludos

Vidal Lugo

Bien, entonces entrá al Editor de macros, seleccionó con doble clic el objeto Hoja1 (del panel a tu izquierda) y allí copiá esto:

Private Sub Worksheet_Change(ByVal Target As Range)'x Elsamatilde'solo se controla el contenido de celda E3If Target.Address(False, False) <> "E3" Then Exit Sub'si la celda está vacía no se pasaIf Target.Value = "" Then Exit Sub'según el contenido de E3 será la col inicialSelect Case UCase(Target.Value) 'para que pueda reconocer el texto no importa cómo lo escribanCase Is = "TCLASICA"col = 1 'col ACase Is = "TORO"col = 7Case Is = "TSTYLE"col = 13'aquí se pueden agregar otras tablas en el futuroEnd Select'si la variable col está vacía significa que se ingresó un dato distinto a estos 3 textosIf col = "" Then Exit Sub'busco la primer fila libre desde fila 51 hacia arriba (*)fil = Sheets("Hoja2").Cells(51, col).End(xlUp).Row + 1'ahora paso los datos desde la col ESheets("Hoja2").Cells(fil, col) = Target.Offset(0, -3) 'col E-3 = col BSheets("Hoja2").Cells(fil, col + 1) = Target.Offset(0, -2) 'col E-3 = col CSheets("Hoja2").Cells(fil, col + 2) = Target.Offset(0, -1) 'col E-1 = col DSheets("Hoja2").Cells(fil, col + 3) = Target.Value 'col E'limpio las celdas para un nuevo ingreso'para que mientras no se ejecute esta macroApplication.EnableEvents = FalseRange("B3:E3") = ""Application.EnableEvents = TrueRange("B3").SelectEnd Sub

Dejo aclaraciones para que sepas qué hace cada línea y así poder ajustarla.

Le agregué opción de que limpie el rango de entrada para permitirte un nuevo ingreso, pero es opcional. Si necesitas esos datos para otra tarea quitá las líneas a partir de 'limpio...

PD) También visitá la sección Macros - Ejemplos y Manuales de mi sitio. Hay bastante material actualizado en todas las secciones.

Sdos y no olvides finalizar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas