Saltar al contenido

Datos variables en base de datos extraer con macro


Recommended Posts

Buen día,

Solicito su colaboración con lo siguiente:

Tengo que traer una información de una base de datos con clientes para ajustar un informe con las ejecutivas manejan cada cliente.

Yo tengo la información que que cliente mueve cada ejecutiva.

?ui=2&ik=d83504a65b&view=fimg&th=14c521461eb1ac20&attid=0.2&disp=emb&realattid=ii_14c5209ab3982e55&attbid=ANGjdJ9FDi17-uc4Zs0MFiqG93-YyCgOfnkra0htAoekC9p05uqdfkPYaHdwGY1eSXjWBlwecOG1rxjfEo9aZCY5XxosLqlYB5raYTkyJ4CFU5RzuHkr-PoIcGO0GgU&sz=w544-h348&ats=1427373984461&rm=14c521461eb1ac20&zw&atsh=1

Estaba extrayendo ya de la información pegada, con una macro los clientes de la ejecutiva "A" por medio de un filtro avanzado con los datos que tengo previamente de que clientes maneja esta ejecutiva "A" en el rango de selección del filtro avanzado. Hasta ahí no hay problema.

?ui=2&ik=d83504a65b&view=fimg&th=14c521461eb1ac20&attid=0.3&disp=emb&realattid=ii_14c5207a164453b5&attbid=ANGjdJ9BLHAls4nuM5FvuGKLMp2lHJUkAhuMYOVah2xcujwSrUH1fxDI6WIYJXC4m_4ruoF2Gr2v7Wwhh9UoWvBfoKzmkecNVWCgzc2P-OI2ufLXQN0PKhibUcl_-nU&sz=w1124-h338&ats=1427373984461&rm=14c521461eb1ac20&zw&atsh=1

Los datos que debe traer para este ejemplo son: Cliente de la ejecutiva "A", Semana del año "2015-8", Fecha de paz y salvo "0000-00-00" Tipo "Liq".

El problema me surge, porque por ejemplo de los 10 clientes que maneja la ejecutiva "A" sólo se movieron 7 para este informe. Como es obvio la macro cuando realiza esta orden, trae la información inexacta. La instrucción que hice por excel es la siguiente:

?ui=2&ik=d83504a65b&view=fimg&th=14c521461eb1ac20&attid=0.1&disp=emb&realattid=ii_14c520c0eed7725e&attbid=ANGjdJ9kTE2qlhgL7wnOzJBoarAEB1o1bFz-6d0horb32CYNsD92EkGRXMtJ8ekuPC9pNGHPj6K-6rSeLg0AAQrUXf8inkcoVWuw8cATTJBzahOln8c6Ft-7l45IDmY&sz=w1124-h262&ats=1427373984462&rm=14c521461eb1ac20&zw&atsh=1

Estoy intentando una formulación en la celda "V1" :

?ui=2&ik=d83504a65b&view=fimg&th=14c521461eb1ac20&attid=0.4&disp=emb&realattid=ii_14c5210ac8cc3322&attbid=ANGjdJ9Jw5ABH0Jrlm4-7sHCeRyB70kuetQg3S8X1INR8SqHstZ9Erkh2CNBoxOw4G110q0432INnG5lSdg_S3IXNAg_LqJvrFD96B9M5qD7_8mrh_0rfBI2LDCCR7I&sz=w690-h600&ats=1427373984462&rm=14c521461eb1ac20&zw&atsh=1

Pero no conozco un código que me permita traer el valor del rango "V1" en la macro adjunta.

No se si este es el mejor modo de realizar las cosas, o si tienen una nueva idea que me permita resolver este problema.

Agradezco muchísimo su colaboración, no soy muy diestro con el Visual Basic y lo que intento programar, lo hago es por el excel y luego miro el Visual.

ISSE1.zip

Enlace a comentario
Compartir con otras webs

saludos [uSER=186303]@Alejo Rodríguez[/uSER], intente ver el archivo para ayudar pero NO entendi que necesitas realmente, las imagenes no las veo dan error; si explicas exactamente lo que quieres a ver si logro entenderte.

Buen día y gracias por atender este caso.

La idea en si, es que de una base de 10 clientes que maneja una ejecutiva, se debe obtener un informe del movimiento de los mismos con otras variables adicionales.

Por esto, lo hice por filtro avanzado, tomando las otras variables necesarias para el informe, además del cliente, como: Semana del año "2015-8", Fecha de paz y salvo "0000-00-00" Tipo "Liq", como muestro en la imagen.

Pero que pasa, si uno de estos 10 clientes, por ejemplo el No 7 no tuvo movimiento, la programación que hice con el filtro avanzado no funciona.

Por lo anterior, intenté que en una celda me calculara el rango de las variables con los clientes que si tuvieron movimiento (celda V1), pero no tengo el conocimiento de como vincular la información resultante en esta celda, a la información que necesita el filtro avanzado, con el fin de lograr que los clientes que debe buscar, sean los que realmente se movieron y la información sea exacta.

Así mismo, debo tener en cuenta, que la información de los clientes debe ser flexible y fácilmente maniobrable porque se presenta rotación tanto de ejecutivas vs clientes, como clientes vs ejecutivas, es decir, pueden rotarse clientes entre ellas, pueden ingresar nuevos clientes, pueden irse clientes, etc.

El archivo trae 5 hojas y en la hoja con el nombre de "Informa PYS" esta la base de datos donde debo filtrar la información y en la celda V1 está la formulación que intenté obtener del rango de las variables del filtro avanzado.

No se si este es el mejor método o hay algún otro que obviamente desconozco, porque como comenté, no conozco mucho lenguaje de visual basic. Lo que hago, lo hago desde el excel y luego lo visualizo por programador.

Muchas gracias por tu colaboración,

Cordial Saludo

Alejandro Rodríguez

Enlace a comentario
Compartir con otras webs

saludos [uSER=186303]@Alejo Rodríguez[/uSER], disculpa pero de verdad sigo sin enteder, no se si sean las imagenes que no logro ver (si quieres mostrarme una imagen por favos subela a otro servidor, donde estan no logro verlas) o no se que es; recuerda que quien conoce y sabe usar su archivo eres tú, así que debes explicar específicamente lo que quieres, por ejemplo:

yo quiero que en la hoja "X" al llenar la celdas "a", "b" y "c" se ejecute una macro que me traiga los datos de la hoja "W" y los coloque en tal sitio.

trata de explicarmelo así para ver si entiendo, intente ver las macros para ver si lograba dar con el requerimiento pero nada.

suerte

Enlace a comentario
Compartir con otras webs

Buenas noches [uSER=133908]@bigpetroman[/uSER], y gracias por seguir con este caso.

Lo se, es un poco difícil de explicar la necesidad general pero voy a explicar la necesidad específica.

Puntualmente necesito que esta parte de la macro que señalo en rojo ("W1:Y7"):

Range("A1").Select

Range("A1:T5000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _

Range("W1:Y7"), Unique:=False

Range(Selection, Selection.End(xlDown)).Select

Columns("C:C").Select

La tome de la celda "V1" de la hoja "Informa PYS". Es decir, que pueda ser variable.

Muchas gracias por tu colaboración y paciencia

Cordial Saludo

Alejandro Rodríguez

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.