Ayuda con presupuesto excel

Hola!
Estoy intentando hacer una plantilla para presupuestos en excel. Dispongo de una base de datos que incluye códigos, descripción y precio unitario y me gustaría usar esos datos de manera que al introducir un código me diera la descripción y el precio. He conseguido resultados a medias con la función BUSCARAV pero solo me funciona en hojas del libro que contiene la base de datos. Como puedo conseguir que al introducir el código me de la descripción, ¿precio en un libro diferente al de la base de datos?
2

2 respuestas

Respuesta
1
Te adjunto unas instrucciones. Deberás cambiar el rango de control (B10:B15 en el ejemplo), el nombre del libro donde está la base (Libro1 en mi ejemplo) y la col donde buscará el código en este libro ( col C1 a C200 en el ejemplo).
Con Alt+F11 llamás al Editor. Doble clic en el margen izquierdo en la hoja donde se hará el ingreso del código y pegá los siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If Not Application.Intersect(Target, Range("B10:B15")) Is Nothing Then
codigo = Target.Value
direccion = Target.Address(False, False)
Run ("BUSCAPRECIO")
Target.Offset(0, 1).Value = descrip
Target.Offset(0, 2).Value = precio
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Ahora insertá un módulo y pegá esto otro:
Public codigo As String
Public precio As String
Public descrip As String
Sub BUSCAPRECIO()
descrip = ""
precio = ""
On Error GoTo Noesta
Application.Workbooks.Open "C:\Mis documentos\Libro1.xls"
Workbooks("Libro1.xls").Activate
Sheets("Hoja1").Activate
Range("C1:C200").Select
With Selection
Set esta = .Find(codigo, LookIn:=xlValues)
If Not esta Is Nothing Then
descrip = esta.Offset(0, 1).Value
precio = esta.Offset(0, 2).Value
End If
End With
ActiveWorkbook.Close
Noesta:
MsgBox ("No se encuentra el libro")
End Sub
Pruébalo y enviame tus comentarios y/o la finalización de la consulta.
Perfecto! Solo hay un pequeño problema, al insertar el código automáticamente me dice "no se encuentra el libro" y el botón aceptar, ¿cuándo clico aceptar automáticamente me genera descripción y valor (tal como quiero) pero a que se debe ese mensaje de error? ¿El libro si que lo encuentra por que de lo contrario no me daría descripción ni precio verdad? otra cosa rizando el rizo... ¿es posible crear una orden para que las descripciones (que en el origen están en mayúsculas) se transquibieran con la primera letra en mayúsculas y el resto minúsculas? Se que pido mucho, disculpame, de todas maneras agradezco tu hasta aquí maravillosa colaboración
Para pasar a minúsc, en la rutina:
Private Sub Worksheet_Change(ByVal Target As Range)
Donde dice:
Target.Offset(0, 1).Value = descrip
Dejar como:
Target.Offset(0, 1).Value = Lcase(descrip)
Reemplazá la rutina Buscaprecio por esta otra ajustada. Si el archivo NO se encuentra en la dirección que le asignes dará error. El error que te daba era porque el archivo NO tenía que estar abierto para ejecutar la búsqueda, pero ahora no importa, funciona bien igual.
Sub BUSCAPRECIO()
descrip = ""
precio = ""
Application.DisplayAlerts = False
Application.Workbooks.Open "C:\Mis documentos\Libro1.xls"
Workbooks("Libro1.xls").Activate
Sheets("Hoja1").Activate
Range("C1:C200").Select
With Selection
Set esta = .Find(codigo, LookIn:=xlValues)
If Not esta Is Nothing Then
descrip = esta.Offset(0, 1).Value
precio = esta.Offset(0, 2).Value
End If
End With
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Espero que ahora sí, pero si es no, me volvés a consultar.
Respuesta
1
Te voy a explicar la fórmula... espero me pueda dar a enteneder.
Ubicate donde quiere el resultado.. de clic en fx busca la función buscarV en valor buscado de clic en la flechita en rojo y de clic en la celda donde va a escribir el código vuelva a dar clic en la fechita en rojo. Luego de clic en matriz. De clic en la flecha en rojo vaya al libro de la base de datos y selecciona todo, de clic nuevamente en la fecha en rojo,, ubicate en indicador de columna, en esta parte debe escribir un numero de columna ese numero corresponde a la columna de datos que quiere llevar, supongamos que va a llevar la descripción y esa es la segunda collumna seleccionada entonces escribes 2,, o si descripción esta en la cuarta columna seleccionada escribe 4... Nota. La primera columna seleccionada es 1.. ejemplo selecciono desde la de hasta f... la de es 1...
Luego en ordenado por siempre debe ser 0.
Gracias por tu interés pero el el problema es que no me funciona cuando la base de datos esta en un libro y el "presupuesto" o hoja donde quiero sacar los datos están e otro libro. Al tener que referirme en la fórmula a la columna de que quiero sacar los datos no se como hacerlo ya que pide que te refieras a la columna indicando si es la 1 la 2 la 3 etc...
La función se llama buscarV y también te funciona... trata de hacerl nuevamente... si no te funciona dame tu correo y te envío un ejercicio con ese caso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas