Saltar al contenido

¿porque no se puede utilizar el maximo de fila y columnas de una hoja en agenda?


Recommended Posts

buenas noches, tengo una inquietud que me la adquiri al ir de tema en tema y encontrarme un archivo llamado agenda el cual es lo mas parecido al concepto basico de automatizacion, pero al estar probando el contenido me di cuenta que tiene un error un tanto fatal que no supe como resolver y es que la parte de busque no lee la cantidad de filas y columnas y la verdad no entiendo porque se pasma cuando contiene demasiados datos, he aqui mis preguntas ¿no se supone que debe leer el maximo de filas y columnas?, ¿como puedo hacer para que ello funcione si suponieramos que estan llenas las filas y columnas especificadas?, ¿como seria entonces el codigo para que funcionara como si se tomara la hoja completa? espero me puedan ayudar a quitarle el limite a este archivo. Gracias

Copia de Agenda V 2.1.zip

Enlace a comentario
Compartir con otras webs

Hola Hermesc,

A mi no me ha dado problemas, aún así he cambiado un poco la macro del botón buscar para que sea un poco más rápida. Lo he probado con algo mas de 2000 registros y va bastante bien. Si te sigue dando problemas no dudes en comentarlo.

La macro queda así :


Private Sub BtnBuscar_Click()
Dim r As Integer
Dim ultima_fila As Integer
Dim ar_array
Application.ScreenUpdating = False
L.Clear
texto = UCase("*" & xTexto & "*")
ultima_fila = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
ReDim ar_array(0 To ultima_fila, 0 To 8) As String
r = 11
r_list = 0
For r = 11 To ultima_fila
ftexto = Range("b" & r) & Range("c" & r) & Range("d" & r) & _
Range("e" & r) & Range("f" & r) & Range("g" & r) & _
Range("h" & r) & Range("i" & r) & Range("j" & r)
If UCase(ftexto) Like texto Then
ar_array(r_list, 0) = Range("b" & r)
ar_array(r_list, 1) = Range("c" & r)
ar_array(r_list, 2) = Range("d" & r)
ar_array(r_list, 3) = Range("e" & r)
ar_array(r_list, 4) = Range("f" & r)
ar_array(r_list, 5) = Range("g" & r)
ar_array(r_list, 6) = Range("h" & r)
ar_array(r_list, 7) = Range("i" & r)
ar_array(r_list, 8) = r
r_list = r_list + 1
End If
Next
L.List = ar_array
Application.ScreenUpdating = True
End Sub
[/PHP]

Tambien hay que anular la llamada a este botón que se hace desde el botón del segundo menú y añadir que si [color=#0000ff]Trim(Texto="")[/color] (esto es de Macro Antonio) no haga nada.

Siempre que uses solo ese número de columnas...

Un Saludo.

Enlace a comentario
Compartir con otras webs

Hola:

Realmente la forma de buscar es algo lenta si hay muchas filas.

Con esto ganarás mucho tiempo al arrancar el formulario, sustituye el procedimiento Initialize por este:



Private Sub UserForm_Initialize()

L.List() = Range("B11:I" & Range("B" & Rows.Count).End(xlUp).Row).Value

End Sub


[/CODE]

Incluye estas líneas al principio del procedimiento [i][b]Buscar_Click[/b][/i]:

[CODE]

If Trim(xTexto) = "" Then

Userform_Initialize
Exit Sub

End If


[/CODE]

Enlace a comentario
Compartir con otras webs

Quiero agradecerles a los dos sus aportaciones, lamentablemente estoy en un dilema al tratar de adaptar este archivo a mis necesidades ya que este archivo me seria muy util en mi trabajo porque es lo que necesito (un archivo que capture,busque, modifique o elimine), pero en fin comenzaré por el principio (valga la redundancia).

primero con nachobm: no se porque no me funciona, haber si hice bien el procedimiento, copie tu codigo lo sustitui por el que me das para el btnbuscar pero cuando tengo pocos datos en las filas si me funciona inclusive llegué a darle hasta los 2000 registros (filas) y funcionó pero al llegar mas alla de lo cual trate de usar casi la carga maxima son 1,048,500 filas pero me marca error, no entendí que hice mal. ¿como puedo utilizar el maximo de filas y en su defecto el maximo de columnas?

segundo con macro antonio: utilice el el codigo que me diste en el procedimiento Initialize pero me marca error diciendome que no es posible modificar la propiedad de row. ¿que pudiera ser esto?, preguntaré lo mismo, ¿como puedo utilizar el maximo de renglones y columnas para este archivo?.

Perdon por mi insistencia no soy muy experto, mas bien un tanto empirico para poder interpretar el codigo y a veces la presion de querer hacer las cosas gana. Gracias. Saludos

Enlace a comentario
Compartir con otras webs

En principio cambiando los tipos integer por long deberia solucionarse donde ponga Dim variable as integer po dim variable as long...

Pero le va a costar hacer ese tipo de busqueda en 1000000 de registros. He hecho una busqueda de un registro con una sola aparición "M789000" y a tardado pero lo a conseguido, habia 1048000 registros , ahora estoy probando con "T1" y si no se queda sin memoria deberia funcionar...

- - - - - Mensaje combinado - - - - -

Pues se queda sin memoria para rellenar el listbox... habrá que hecharle un vistazo...mañana

Enlace a comentario
Compartir con otras webs

Tarda porque tiene que tardar, son muchos datos. Tal vez con access iria mejor o un sistema de BD real. De todos modos mejoraria bastante haciendo un estudio previo de los datos. ¿Son siempre ese tipo de datos, una letra y un número?¿Son siempre consecutivos?..., trabajar previamente con los datos puede mejorar mucho la velocidad. No se si en excel se puede trabajar con Threads, dividiendo la busqueda tambien mejoraria. De todos modos, y hasta donde yo llego, que no es mucho, con un millon de registros hay que hacer las cosas muy bien.

Enlace a comentario
Compartir con otras webs

hola nachobm, pues si son muchos datos. Con respecto a access veo que antes no sabia excel mucho menos access jaja al parecer tendré que estudiarlo mejor. El estudio sobre los datos que yo incoorporaría si efectivamente se tratan de cadenas de caracteres y algunos de numeros, no necesariamente son consecutivos, yo lo puse asi solo por llenar las tablas pensando que el formulario de busqueda lo podia alcanzar a leer pero ya vi que no. Me parece que dividir la busqueda pareceria una buena opcion el problema es adaptarlo para entonces. 1 millon de datos creo que seria poco lo que tendria que trabajar yo. Tengo un largo camino que recorrer por lo que veo por que desconosco muchas cosas entre ellas lo que es Threads, de todas maneras gracias por tus consejos y aportaciones.

Enlace a comentario
Compartir con otras webs

¿Los datos son siempre así, un caracter y un número?, y ¿para un fila dada todos los datos numéricos son iguales, ej: 345 E345 T4 M345 N345? o varia todo. Si es así alguna cosa se puede hacer.

Enlace a comentario
Compartir con otras webs

No, los datos que "rellenan" son solo eso un "relleno", esta de esa manera con la intencion de que tengan que ver con los rubros, pero si te refieres a que tipo de datos deben insertarse deacuerdo a los rubros pues es algo asi:

REG:<---es de tipo numerico y consecutivo

NOMBRE: <--es de tipo string

EMPRESA: <-- tambien es de tipo string

TITULO,TEL1, TEL2, CELULAR: <.--<--son de tipo string

EMAIL:<--es de tipo string

no se si te refieras a eso.saludos

Enlace a comentario
Compartir con otras webs

Te mando un ejemplo del camino se seguiria para trabajar con tantos datos.

En el archivo veras que en la hoja2 hay un boton que pone "crear indices", este boton te crea unos indices referentes a los datos string, de los que son todo letras o todo números, que luego facilitan la busqueda.

Te explico:

De los string que son todo letras coge los dos primeros caracteres y en la hoja3, columna("los dos primeros caracteres") va poniendo las filas en las que ha habido una aparición de esos dos caracteres.

EJemplo :

Para un dato NOMBRE : Nacho en la fila 13 guardaria en la columna "NA" celda(la que toque) =13. Con los string que son todo números hace lo mismo pero con los dos últimos caracteres.

También en la hoja13 y en la misma fila que en la hoja1, fila de la que estamos creando los indices, pero en la hoja3 hace una concatenación de todas las columnas de la fila que estamos tratando, para hacer la búsqueda como era originalmente.

Es un ejemplo de como lo haría yo, hay que trabajarlo mas...solo trabaja con datos que sean todo letras o todo números y que sean string. Ej: "Nacho", "678967893"

Espero que te sirva de algo.

En cuanto a la limitación de datos en el Listbox o la falta de memoria es otro tema, que con programación se puede solucionar, pero con tiempo.

Copia de Agenda .zip

Enlace a comentario
Compartir con otras webs

hola nachobm aqui de nuevo estuve checando apenas el ejemplo que me pasaste (gracias), pero me temo que es una forma compleja y delicada el usar los indices ya que le da en la torre al "sistema" de busqueda haciendo que no funcione el rellenar el listbox, '¿sera que tendremos que cambiar completamente el "sistema" de busqueda?, la verdad no tengo idea como mejorarlo por eso lo planteo con los mas expertos como tu

Enlace a comentario
Compartir con otras webs

Hermesc no soy ningún experto, de hecho si necesitas ayuda de algún experto o algún profesional yo no soy el indicado. Para mi esto es un hobbie que en ocasiones ha formado parte de mi trabajo pero no tengo los conocimientos como para ser un experto, seguro que en este foro los hay.

Hablando de otra cosa he adaptado el formulario de busqueda a una hoja que se llama "buscar". Pruebalo y me dices. Las limitaciones de los listbox no tengo claras las que son y ahí no podré ayudarte, tampoco estoy acostumbrado a trabajar con tantos datos.

El botón de la hoja2, "crea indices" habría que adaptar la macro a la entrada de datos para que fuera creando los indices a medida que entran los datos y no de golpe. También he corregido alguna cosilla que no estaba del todo bien.

Yo te puedo dar mi opinión sobre las cosas que quieras hacer pero no es la opinión ni de un experto ni de un profesional.

Un Saludo.

Agenda .zip

Enlace a comentario
Compartir con otras webs

una vez mas te agradesco,con respecto a lo de experiencia nachobm no fue mi intención decir mentiras :pride: a lo que hacia alucion era a que eres mas experto que yo, pero bueno, eso es otro tema tienes razon, con respecto al formulario aunque funciona correctamente no es lo que estoy buscando pero si podria ser una opcion tratando de adaptarlo. Lo checaré y te digo en un ratin.Gracias

Enlace a comentario
Compartir con otras webs

hola que tal nachobm ya cheque un poco el archivo, sucede que hay una confusion con respecto a la busqueda, al indexar los datos los pones para que no tome datos un poco mas apegados a la realidad, solo por curiosidad cambié los datos que era N1, N2, etc (entre otros) por datos mas reales como los que piden los rubros de las columnas, y no funciona la programacion que pusiste, creeme que te agradesco mucho me has dado algunas ideas de utilizar la programacion en la hoja 2, aunque no se cuanto recursos de memoria consuma hacerlo asi, solo entre para poder comentarte y que se vea que por lo menos estoy al pendiente y luego no me regañen jeje,,,estaba pensando en dividir la busqueda por nombre, telefono o clave enlazados con checkbox para ver si asi se reduce un poco la busqueda a datos mas especificos pero nolose. Saludos y Gracias

Copia de Agenda_.zip

Enlace a comentario
Compartir con otras webs

Pues tienes toda la razón, se me olvidó un UCASE



For r = 11 To ultima_fila
If [COLOR=#ff0000]UCase([/COLOR]Cells(r, 10)) Like texto Then
Hoja2.Cells(r_list, 1) = r
r_list = r_list + 1
End If
Next

[/CODE]

Pruebaló cuando puedas, por mi parte no puedo hacer más sin otro tipo de programación o aplicación.

Si te he ayudado en algo me alegro.

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 93 ¿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

    • No va a ser necesario distinguir el tipo de proceso entre 1 y 2. Revisa el adjunto a ver si es eso lo que quieres. Function MediaAttention(mImp As Range, _ q25 As Range, q50 As Range, _ Optional q75 As Range, _ Optional q100 As Range) As Double '-- Opción 1 If q75 Is Nothing And q100 Is Nothing Then MediaAttention = q25 / q50 Exit Function End If '-- Opción 2 MediaAttention = ((0.25 * (q25 - q50)) / mImp) + _ ((0.5 * (q50 - q75)) / mImp) + _ ((0.75 * (q75 - q100)) / mImp) + _ (q100 / mImp) End Function   Media Attention Formula 1.2.xlsb
    • Gracias tomarse el tiempo de leer por responder Maestro @Antoni Adjunto el archivo con la idea a la que deseo llegar, sigo atento. Mil gracias por el tiempo y la ayuda brindada   Media Attention Formula 1.2.xlsb
    • He analizado la UDF y entiendo perfectamente lo que hace, lo que no entiendo es lo que pretendes hacer. Mejor sube un ejemplo resuelto de  como debería funcionar la UDF con los nuevos parámetros solicitados. 
    • Gracias, ya lo conseguí solucionar
    • Hola a todos Primero que nada deseo agradecer el tiempo en leer este post, Muchas Gracias. Me acerco a ustedes para pedir su ayuda para lo siguiente: Tengo una UDF, la cual tiene dos escenarios: 1.- Si Tiempo Promedio y Duración del Video son diferentes de 0, hacer el calculo 2.- Si lo anterior es igual a 0, se realiza el otro calculo por cuartiles. El detalle es que son muchas celdas a seleccionar, lo cual creo puede ser engorroso, entonces, pensando en simplificar la función, me pregunte si fuera posible: a.- Colocar 1 al principio de la función y después solo seleccionar 2 celdas correspondientes (Rango continuo o discontinuo) b.- Colocar 2 al principio de la función y después seleccionar las 5 celdas correspondientes (Rango continuo o discontinuo) Espero me puedan ayudar y/o orientar al respecto, quedo atento para cualquier duda, de antemano les agradezco cualquier ayuda brindada. Mil Gracias!! Media Attention Formula 1.1.xlsb  
  • 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.