Se puede en excel? combinar tablas

15/09/2007 - 17:38 por GRIEGO59 | Informe spam
Hola!
Tengo una tabla de compras con los campos:
Serial del producto, Fecha de compra, Número de factura de compra,
Descripción del producto, Costo del producto, Precio de venta del producto

y otra tabla de ventas con los campos:
Serial del producto, Fecha de venta, Número de factura de venta

Se puede con excel crear una nueva tabla que combine los campos de ambas
tablas? quedaría así:
Serial del producto, Fecha de compra, Fecha de venta, Número de factura de
compra, Número de factura de venta, Descripción del producto, Costo del
producto, Precio de venta del producto

El campo "Serial del Producto" cada producto aunque sea una identico al otro
tiene un serial único.

Ójala se pueda hacer esto con excel.
Gracias
GRIEGO59

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
18/09/2007 - 04:13 | Informe spam
hola, (...) ?

... Gracias. Pero no entendi los codigos.
Me puedes decir si esos codigos que me diste tienen equivalentes con los comandos de Excel, es decir:
Yo puedo grabar esas macros ejecutando las acciones? Cuales comandos de Excel hacen eso?
Yo lo mas parecido que he podido hacer eso es con la funcion BUSCAR.



es solamente el uso del comando buscar del menu edicion
-> Set Registro = .Cells.Find(Serie, .Cells(1), xlValues, xlWhole)

solo que a la macro ya le pasas lo que se esta buscando para rescatarlo :))
-> Registro.Offset(, 6).Resize(, 2) = .Range("a" & Fila).Offset(, 1).Resize(, 2).Value

Para la factura de venta, recuerda que con una factura se pueden vender varios seriales.
El codigo que me diste, toma el primer serial de la factura pero el rango es (B4:B18).



[por la forma en que lo expusiste]... no sabia si se trataba de varios codidos... o de una sola *endemoniada* celda combinada :D
para adaptar la macro, solo necesitas decirle al codigo *cuantas* celdas en el rango [B4:B18] son las que tienen datos -???-
[p.e.] que hay o habra siempre en la siguiente celda del rango ?... -> B19 -???-

saludos,
hector.
Respuesta Responder a este mensaje
#7 GRIEGO59
18/09/2007 - 22:42 | Informe spam
Hola Hector Miguel

Si, yo inicié la grabación de una macro y abri el comando BUSCAR en el menú
EDICIÓN y apareció en la maacro el código "Cells.Find", pero ¿cómo puede
indicarle al comando BUSCAR que copie en la hoja COMPRAS los valores de la
hoja VENTAS de las columnas B y C en función de la columna A ? Se puede hacer
esto con el comando BUSCAR o es necesario saber códigos?

Te pregunto porque para mi es más fácil grabar una macro usando los comandos
de excel, que intentar aprender y comprender los códigos y su sintaxis.

Para lo del rango [B4:B18] se pueden vender entre uno y quince productos en
una sola factura, dependiendo del estado de ánimo del comprador. Por eso hay
15 celdas. En la celda B19 está la frase TOTAL VENTAS y esa si es una celda
combinada : )

Bueno amigo, gracias, espero que yo puda aprender a hacer lo mismo que tu
sin códigos : )

Saludos
Griego59 (Darío)
Respuesta Responder a este mensaje
#8 Héctor Miguel
19/09/2007 - 05:25 | Informe spam
hola, Darío !

Si, yo inicie la grabacion de una macro y abri el comando BUSCAR en el menu EDICION
y aparecio en la macro el codigo "Cells.Find", pero como puede indicarle al comando BUSCAR
que copie en la hoja COMPRAS los valores de la hoja VENTAS de las columnas B y C en funcion de la columna A ?
Se puede hacer esto con el comando BUSCAR o es necesario saber codigos?



se necesita del apoyo de los codigos :-(

Te pregunto porque... es mas facil grabar una macro usando los comandos de excel
que intentar aprender y comprender los codigos y su sintaxis.



te recomiendo que le pierdas el miedo a la programacion de las macros, son todo un... *mundo aparte* ;)

Para lo del rango [B4:B18] se pueden vender entre uno y quince productos en una sola factura
dependiendo del estado de animo del comprador. Por eso hay 15 celdas.
En la celda B19 esta la frase TOTAL VENTAS y esa si es una celda combinada : )



prueba con las siguientes adaptaciones al codigo de la propuesta anterior [pase directo desde la factura de ventas]...

Sub RegistraFactura()
Dim Fila As Byte: Application.ScreenUpdating = False
With Worksheets("facturadeventas")
For Fila = 4 To Application.CountA(.Range("b4:b18")) + 3
Worksheets("compras").Range("a:a") _
.Cells.Find(.Range("b" & Fila), Range("a1"), xlValues, xlWhole).Offset(, 6) _
.Resize(, 2) = Array(.Range("b2").Value, .Range("a2").Value)
Next
End With
End Sub

comparalo con el *original* [anterior] y notaras solo *ligeros* cambios :)

saludos,
hector.
Respuesta Responder a este mensaje
#9 GRIEGO59
19/09/2007 - 18:50 | Informe spam
Gracias, funcionó perfecto…
Que lástima que es con dódigos : (

Yo veo en tus códigos que identificas al rango completo de la columan A de
tres formas diferentes:

1.- For Fila = 1 To .Range("a65536")
2.- With Worksheets("compras").Range("a:a")
3.- = .Range("a" & Fila)

Por qué haces esto, por puro gusto o es que dependiendo del comando cambia
la forma de indicar el rango?

Saludos,

Griego59
Respuesta Responder a este mensaje
#10 Héctor Miguel
19/09/2007 - 19:30 | Informe spam
hola, Darío !

Que lastima que es con codigos : (
Yo veo en tus codigos que identificas al rango completo de la columan A de tres formas diferentes:
1.- For Fila = 1 To .Range("a65536")
2.- With Worksheets("compras").Range("a:a")
3.- = .Range("a" & Fila)
Por que haces esto, por puro gusto o es que dependiendo del comando cambia la forma de indicar el rango?



lo segundo: segun lo que quieres conseguir... es lo que *debes* de hacer

1) la instruccion completa es: -> For Fila = 1 To .Range("a65536").End(xlUp).Row
lo que se pretende es *avanzar* fila-a-fila desde la primera hasta la ultima *no vacia* [para lo cual]...
partiendo de la ultima *conocida/esperada/supuesta/...* como de seguro vacia: -> "a65536"
*subes* hasta la que no esta vacia: -> .End(xlUp) y obtienes su numero de fila: -> .Row
es lo mismo que situarte en la celda {A65536] y pulsar {Ctrl}+{Flecha_Arriba} <= el .End(xlUp)

3) una vez obtenido el numero de la ultima fila *con datos*, ya puedes avanzar dentro del bucle: For Fila = 1 To <ultima>
y el codigo ya sabe *por donde anda* con: -> .Range("a" & Fila)

2) aqui le estamos *diciendo* al codigo que dentro de la hoja "compras", tome de base la columna "A" para el comando *buscar*
With Worksheets("compras").Range("a:a")
Set Registro = .Cells.Find(Serie, .Cells(1), xlValues, xlWhole)

[lo dicho]... puedes perderle el miedo a la programacion de las macros, son todo un... *mundo aparte* ;)
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida