Saltar al contenido

Sobre error que no encuentro en la formula


Recommended Posts

publicado

hola ingrese esta formula en vba y por alguna razon si utilizas la misma formula en  una celda, si tienes el resultado en toda la columna, osea si se aplica sin problema; pero cuando lo hago en codigo se aplica en algunas celdas de la columna y en otras arroja un 0, como si no existiera resultado... no se que sucede que hice mal... alguien me puede explicar.

 

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      uf = Range("A" & Rows.Count).End(xlUp).Row
    
    With Range("B2:B" & uf)
        .Value = _
         "=XLOOKUP(1,(espejo[Orden Number]=A2)*(espejo[role aprobador]=""capataz""),espejo[nombre approbador])"
        .Value = .Value
    End With
End Sub

 

publicado

Hola

Sugiero volver a explicar con tranquilidad y dando detalles que ayuden a ayudarte, asimismo adjunta tu archivo para no tener que estar inventado datos, lo que conlleva tiempo. Si tienes datos privados solo reemplázalos son que ello no quite el sentido del archivo y/o el problema.

publicado

Solo un apunte, con independencia de tu consulta, no tiene sentido ejecutar este código cada vez que seleccionas una celda.

publicado

Pues el código es para que  la celda A2 sea la varoan que cambia y luego ejecutar hacia abajo tocada la columna. Porque no tiene sentido ?

publicado
hace 3 horas, questionAbout dijo:

Pues el código es para que  la celda A2 sea la varoan que cambia y luego ejecutar hacia abajo tocada la columna. Porque no tiene sentido ?

Tu código está puesto dentro del evento Worksheet_SelectionChange, por lo que cada vez que selecciones una celda o un rango, sea el que sea, ese código se ejecutará y es algo que lo único que va a hacer es que se ralentice el funcionamiento de Excel.

Lo mejor que puedes hacer, es subir tu archivo explicando que es lo que pretendes hacer, para que podamos intentar darte una solución.

publicado

Este es un ejemplo mucho más liviano que el documento original.. son fórmulas sencillas pero necesito applicar varias fórmulas por hoja en vba.. use el código que mencioné en un principio, pero se pone muy lento y varias veces excel me ha avisado que mi archivo se daño por completo.. mi pregunta estás fórmulas que ustedes ven en la página reporte.. como pueden aplicarlas en vba para que el documento sea rápido y se aplique la fórmula a la misma columna todas las celdas con texto, yo usaba sectionchange porque me permitía actualizar el resultado cuando cambiaba algo en la página del archivo original.. pero si es muy lento... Como puedo lograr esto ?

Ejemplo.26.10.xlsm

publicado

Supongo que ya sabes, que en una tabla solo es necesario especificar las formulas en la primera fila y que se replican en toda la tabla, por tanto, con el siguiente código sería suficiente para poner fórmulas a dicha tabla de la hoja REPORTE:

Range("B2").FormulaLocal = "=BUSCARX([@ORDEN];Table1[ORDEN];Table1[FECHA];)"
Range("C2").FormulaLocal = "=BUSCARX([@ORDEN];Table1[ORDEN];Table1[CONSECUTIVO];)"
Range("D2").FormulaLocal = "=BUSCARX([@ORDEN]&""ROLE001"";Table1[ORDEN]&Table1[OCUPACION];Table1[NOMBRE];)"
Range("E2").FormulaLocal = "=MAX.SI.CONJUNTO(Table1[FECHA];Table1[NOMBRE];[@NOMBRE])"

Ahora solo tienes que explicar cual es el objetivo de tu macro, que no adjuntas, y cuando pretendes ejecutarla y en que circunstancias.

O sea, cual es el objetivo que persigues.

publicado

El reporte muestra un movimiento contable diario y cada semana se aumenta el tamaño de la base de datos o el documento que se exporta para ejecutar este reporte.. el reporte que he intentado realizar, es sin VBA en un principio, quiero contar el número de errores por semana, poder revisar por persona o fecha o posición cuando se cometió un error, cuántos o que tan tarde se hizo o se cumplió con un procedimiento, por ejemplo si se pagó alguna factura tarde ... Etc... Mi plan es  un reporte general, cuál fue el primer problemas ? ingresando las fórmulas y deslizando para aplicar en toda la columna,  eso volvió pesado y muy lento mi excel.. son casi 200.000 renglones de contenido, el documento original pesa 21,255 KB, va a aumentar más cada semana. Ahora mi pregunta es.. puedo trabajar con documento así de grande ? Ese es el problema?... Segundo error o problema que tengo, ingresé las fórmulas en vba... Con este formato o este ejemplo, (solo varía la fórmula por columna pero el método es el mismo)

      uf = Range("A" & Rows.Count).End(xlUp).Row
    
    With Range("B2:B" & uf)
        .Value = _
         "=XLOOKUP(1,(espejo[Orden Number]=A2)*(espejo[role aprobador]=""capataz""),espejo[nombre approbador])"
        .Value = .Value
    End With

 

Luego de usar este método de VBA para ingresar las fórmulas por cada columna, paso mi segundo problema, el resultado a veces es 0 cero, como si ocasionará un error y en cierto punto excel dice, no puedo buscar más resultados sin dañar el documento y se detiene.. entonces si me da el resultado 0, pero ese resultado es incorrecto.. entonces que puedo hacer ?... Pensé seguro hay otra forma de aplicar las fórmulas por cada columna sin poner lento el documento con vba, o dañar el documento, (aveces se daña), o generar un resultado errado..

 

En resumen no subo el código porque es básicamente el mismo código repetido por columnas peor solo cambia la fórmula por columnas, son fórmulas como Index, Match, xlookup o maxifs..

 

Quieren que igual suba ese código?... No puedo subir el documento original, es muy pesado.. que puedo hacer para explicar mejor mi dilema ?

 

 

 

publicado
hace 22 horas, questionAbout dijo:

mi pregunta estás fórmulas que ustedes ven en la página reporte.. como pueden aplicarlas en vba para que el documento sea rápido y se aplique la fórmula a la misma columna todas las celdas con texto, yo usaba sectionchange porque me permitía actualizar el resultado cuando cambiaba algo en la página del archivo original.. pero si es muy lento... Como puedo lograr esto ?

Ya que cuentas con Excel 365

Te dejo un aporte, realizado todo con formulación, de tal manera que no utilices VBA

Con estas fórmulas aprovecho, la función matricial dinámica de Excel, es decir no hay necesidad de actualizar nada, con solo una formula, se efectuará el desbordamiento 

En la fila 2 de la hoja "Reporte365", esta cada fórmula

Revisa y nos comentas

 

Saludos a todos

Resumir formulas 365_GP.xlsx

publicado

Pero en tu fórmula de excel 365 siempre se genera un resultado según la celda A2. Y el objetivo es que sea diferente A1, A2...etc.. como lo género en este caso para que las fórmulas de las columnas de la B a la E no se enlacen solo con la celda A2 sino que muestre resultado según cada celda en la columna A

publicado

Señor Antonio, sobre esta opción igual tengo el mismo problema de que excel se vuelve muy lento.. intento trasladar la fórmula hacia abajo y igual toma tiempo... Hay alguna forma de remediarlo y aplicar la fórmulalocal a toda la columna ?

publicado
hace 20 horas, questionAbout dijo:

Pero en tu fórmula de excel 365 siempre se genera un resultado según la celda A2. Y el objetivo es que sea diferente A1, A2...etc..

Creo que te has confundido y apresurado

La formulación que elaboro está basada, a las nuevas funcionalidades de 365, de tal modo que, mediante este método, no necesito arrastrar como antes las fórmulas, si no que aprovecho "el desbordamiento" de las funciones 

Te sugiero comparar mis resultados con el tuyo, y podrás ver que son los que se necesitan 

publicado

Ya lo intente y el resultado igual es aún más lento que con vba... Excel logra congelar mi computador solo por aplicar la fórmula de desbordamiento que me recomendó..incluso excel no muestra el porcentaje o el símbolo de carga en la parte inferior derecha de la pantalla, se congela y dice ... Excel no responde

publicado
Hace 1 hora, questionAbout dijo:

Excel logra congelar mi computador solo por aplicar la fórmula de desbordamiento que me recomendó..incluso excel no muestra el porcentaje o el símbolo de carga en la parte inferior derecha de la pantalla, se congela y dice ... Excel no responde

Siendo así, de cuantos registros estás hablando en ese proceso real, ¿en tus pruebas?

publicado

Son 26 columnas con formulas en una misma página. Y el documento con la información que pretendo mostrar en el reporte pesa cerca de 20mil kb

publicado
hace 2 horas, questionAbout dijo:

Son 26 columnas con formulas en una misma página. Y el documento con la información que pretendo mostrar en el reporte pesa cerca de 20mil kb

¿Cuántos registros/filas [no formulas], tiene la hoja?

publicado
hace 1 hora, questionAbout dijo:

19.577 filas 

Es curioso que un libro con esa cantidad de registros pese 20 mgb, a menos que tu libro real, tenga mucha más información, más hojas etc... 

Si es así, y tu libro real, contiene muchas formulas [incluyendo, volátiles], formato condicional y otras cosas más... es posible que todo eso te esté causando el mal rendimiento

Pero todo eso ya tú lo sabes mejor que nosotros

publicado

Ahhhhh bueno... El reporte va a tener el número de orden y eso son 19.577 órdenes. Pero el documento de dónde saco la información del reporte, está en otra página en el mismo excel y ese tiene cerca de 200.000 filas

Archivado

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

×
×
  • 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.