Base de datos

Hola! Tengo una base de datos y necesito extraer mediante un código los datos de las columnas que se encuentran en la misma fila, intenté hacerlo con el bdextraer pero sólo consigo que la primera fila me de los datos de las columnas, cuando ingreso un segundo código en la fila de abajo no logro conseguir que me de las columnas correspondientes, ¿alguien puede ayudarme a solucionarlo o guiarme para hacerlo con una macro?
Gracias!

1 respuesta

Respuesta
1
Entindo que quieres situarte un un dato de una fila y que copie todo lo que se encuentre en esa fila y lo pegue en otra hoja o en otra fila, ir recorriendo las filas buscando el dato que quieras para que repita la misma operación, ponme un ejemplo de donde quieres copiar lo que encuentre y te preparo una macro. Por ejemplo si encuentra Amarillo en la celda A1 que copie la fila 1 y la pegue en laHoja2 en la fila 5.
Espero tu aclaración
>Un saludo
>Julio
Tengo una base de datos con un listado de precios y deseo crear una macro donde voy ingresando los códigos de la columna A y me complete las columna C con la descripción del artículo y la DE con el precio unitario (también extraído de la base de datos), de este modo cuando ingrese manualmente las cantidades de cada artículo en la columna B me da el costo total en la columna E y sumo todos los gastos totales en la última fila de la columna E.
Espero haber sido un poco más explícito, de lo contrario puedo detallarte más de que se trata.
Gracias!
Vale tienes una base de datos con los precios ¿en el mismo libro, en otra hoja o en otro libro que estará cerrado?.
La base se compone, Código, descripción y precio unitario. Columnas A, Cy DE, en la B pondrás la cantidad y en la E te dará el total. Después en el final de los totales en la columna E la Autosuma.
He entendido esto solo necesito lo del libro si esta en el mismo libro la base o en otro libro.
Me pongo con ella es muy sencillo solo necesito lo del libro porque tendré que abrirle en la macro y después cerrarle,
>Un saludo
>Julio
Bueno al final he dado por sentado que la Base estaría en el mismo libro en otra hoja, te he echo la macro partiendo de lo siguiente:
1º- Hoja "1"( tu cambias el nombre a la hoja de tu libro o en la macro, donde quieras) en la Columna A tendrás el código de los productos (tanto en la Hoja1, como en la Hoja2)
2º Que en la columna B de la hoja 1 tendrás el articulo
3º Que en la columna B de la hoja 2 pondrás la cantidad de artículos
4º Que en la columna C de la hoja 1 tendrás el precio unitario
5º Que en la columna C de la hoja 2 pegamos el nombre del articulo
6º Que en la columna DE de la hoja 2 pegamos el precio unitario
7º Que en la columna E de la hoja 2 haga el producto de precio unitario por cantidad
8º Que al final de la columna E te sume los totales
>>Si esto es así aquí tienes la macro:
Sub Copiar_Pegar()
Dim Codigo As String ' 3 variables para recoger los datos
Dim Total_1 As String
Dim Total_2 As String
Sheets("1").Visible = True
Sheets("1").Select
Range("A1").Select ' nos posicionamos en la columna A1
Selection.End(xlDown).Select
If ActiveCell.Row > 65000 Then
End If
Range("A1").Select ' nos posicionamos en la columna A1
Do While Trim(ActiveCell.Value) <> "" 'Mientras no encuentre espacio vacio que haga
Codigo = ActiveCell.Value ' Doy valores a las tres variables
Total_1 = ActiveCell.Offset(0, 1).Value
Total_2 = ActiveCell.Offset(0, 2).Value
Sheets("2").Select 'Abrimos Hoja "2"
Cells.Select 'Selecciono el documento entero
If Not Selection.Find(Codigo) Is Nothing Then
On Error Resume Next
Selection.Find(What:=Codigo, After:=ActiveCell.Offset, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
End If
'Si no hemos puesto cantidad de articulos que comience de nuevo
If ActiveCell.Offset(0, 1) <> "" Then
ActiveCell.Offset(0, 2).Value = Total_1
ActiveCell.Offset(0, 3).Value = Total_2
End If
Sheets("1").Select
ActiveCell.Offset(1, 0).Select
Loop
Sheets("2").Select
ActiveCell.Offset(0, 2).Select
Sheets("1").Select
ActiveCell.Offset(1, 0).Select
Sheets("1").Select
Range("A1").Activate
End Sub
>>Ahora para que funcione todo debes de situarte en la celda E1(si no tienes nombre de columna) o en E2 si tienes la fila 1 ocupada con el nombre de las columnas De la hoja 2 para poner esta fórmula =D1*B1 pulsas Intro
Ahora veras un cuadradito en la parte derecha de abajo de la celda donde pusiste la fórmula, pinchas en él y sin soltarlo arrastras hacia abajo tantas filas como códigos tengas.
Ahora seleccionas la celda en blanco de la Columna E donde quieres que te aparezca la suma total, ¿y pinchas en el símbolo? De la barra de herramientas, pones las cantidades que quieras de artículos y ejecutas la macro.
>Espero que te sirva
>Un saludo
>Julio
Es exactamente lo que necesito, pero si no es mucha molestia me gustaría tener la base de datos en un libro aparte y ejecutar la macro desde otro libro.
Muchas gracias!
Quieres tener los datos en otro libro y desde ese se ejecutará la macro, entiendo, pues bien las lineas de código cambian por estas:
Sub Copiar_Pegar()
Dim Codigo As String ' 3 variables para recoger los datos
Dim Total_1 As String
Dim Total_2 As String
ChDir "Aquí pones tu ruta del libro para abrir, por ejemplo C:\Mis Documentos\Macros"
Workbooks.Open Filename:="Aquí pones tu ruta mas el nombre del libro por ejemplo C:\Mis Documentos\Macros\Base de datos.xls"
Sheets("1").Visible = True
Sheets("1").Select
Range("A1").Select ' nos posicionamos en la columna A1
Selection.End(xlDown).Select
If ActiveCell.Row > 65000 Then
End If
Range("A1").Select ' nos posicionamos en la columna A1
Do While Trim(ActiveCell.Value) <> "" 'Mientras no encuentre espacio vacio que haga
Codigo = ActiveCell.Value ' Doy valores a las tres variables
Total_1 = ActiveCell.Offset(0, 1).Value
Total_2 = ActiveCell.Offset(0, 2).Value
Windows("Aquí pones el nombre donde quieres pegar los datos por ejemplo Resumen").Activate
Sheets("1").Select 'Abrimos Hoja "1"
Cells.Select 'Selecciono el documento entero
If Not Selection.Find(Codigo) Is Nothing Then
On Error Resume Next
Selection.Find(What:=Codigo, After:=ActiveCell.Offset, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
End If
'Si no hemos puesto cantidad de articulos que comience de nuevo
If ActiveCell.Offset(0, 1) <> "" Then
ActiveCell.Offset(0, 2).Value = Total_1
ActiveCell.Offset(0, 3).Value = Total_2
End If
Windows("Aquí pones el nombre del otro libro, que en el ejemplo es Base de Datos").Activate
Sheets("1").Select
ActiveCell.Offset(1, 0).Select
Loop
Windows("Aquí el otro libro Resumen").Activate
Sheets("2").Select
ActiveCell.Offset(0, 2).Select
Windows("Pones el otro Base de Datos").Activate
Sheets("1").Select
ActiveCell.Offset(1, 0).Select
Sheets("1").Select
Range("A1").Activate
End Sub
Con tanto lio de libros no se si me habré confundido pero el código lo tienes lo adaptas a tu necesidad. Si te sirve puntúa y finalizas la pregunta que tengo el buzón llenito.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas