Jump to content

JuanPerez

Members
  • Content Count

    11
  • Joined

  • Last visited

About JuanPerez

  • Rank
    Member
  • Birthday 05/11/1981
  1. Bueno gracias a ambos, No es que no os quiera subir el archivo para que me ayudéis es que los datos previos están vinculados a una herramienta que se ejecuta a raíz de una librería de cálculo vinculada a otro programa, y por tanto no podríais ejecutarla para obtener los datos de partida. Aunque quiera, no puedo saber el número de valores que va a tener mi matriz, porque lo que hace es valorar los datos de las matrices previas, y en función de los resultados generar una nueva fila, bueno en realidad lo que hace es desplazar todos los datos guardados desde la fila donde va a guardar en adelante y guardar el dato en esa posición, por lo que la matriz no para de crecer con cada comprobación favorable que hace. Probaré en otro ordenador con más memoria o capacidad, pero es muy posible que tenga el mismo error, pues mi objetivo es poder analizar muchas combinaciones y esto puede superar los cientos de miles de datos.
  2. Gracias Abraham, Es cierto que la información que doy está un poco sesgada, pero mi problema es que desconozco x e y (es decir desconozco hasta que finalice todas las comprobaciones) cuanto elementos se van a guardar en la matriz, porque se guardan los elementos de otros vectores que cumplen ciertas condiciones, y es imposible saber a priori cuantos elementos se guardarán. De hecho esa macro aplicada a algunos casos son 20 filas a otros casos más grandes me he quedado en 10000 porque ya no he podido ejecutar más. Pero por tu respuesta, entiendo que no hay manera de definir la matriz sin tamaño y que vaya creciendo libre.
  3. Buenos días Haplox, Lo siento pero es que el archivo es enorme y la macro también. Ésta depende de varios cálculos al inicio y varios al final, y aislada esa parte pierde un poco el sentido, pero el trozo crítico al que hago referencia sería algo así: ReDim conexiones(1 To 10000, 1 To 10000) i = 1 j=1 'Obtengo a partir de otros cálculos y matrices el valor de nf y lo guardo en la posición correspondiente de la matriz problemática Do while (una serie de condicionantes) If nf=(otra serie de condiciones) conexiones(i, j) = nf i = i + 1 End if Loop Mi problema está en que si no dimensiono la matriz (ReDim conexiones) no me guarda el valor en las diferentes posiciones de i, j, porque me da error de tipos. Y si la dimensiono, o me quedo corto y necesito más filas porque sigue creciendo en i y me aparece subíndice fuera del intervalo, o si la quiero dimensionar más grande cuando crea la matriz ya da error de memoria, siendo el límite para mi ordenador de 10000 filas (más o menos). Gracias
  4. Buenos días, Estoy ejecutando una macro, y en un momento dado necesito guardar los valores en una matriz de dos vectores, es decir mi_array (x,y). El problema reside en que a priori desconozco el tamaño de la matriz, pero puede ser muy grande (varios miles (o cientos de miles) en la posición x). Si le defino el tamaño al principio del proceso, por ejemplo mi_array (1 to 1000, 1 to 1000), funciona el proceso de después pero llega un momento en que se queda fuera de rango porque necesito más posiciones. Si la dimensiono más grande por ejemplo mi_array (1 to 10000, 1 to 10000) entonces desde el principio me índica Memoria insuficiente (el límite para el error está aproximadamente en mi_array (1 to 10000, 1 to 10000) Por tanto, creo que la solución pasa por no definir a priori su tamaño, pero no sé como hacerlo para dos dimensiones. Dim mi_array as variant me da el problema de que no me da dos dimensiones, y al intentar guardar el primer valor en la posición mi_array(1,1) me da error. ¿Existe alguna solución a mi problema?
  5. Es que se trata de una macro bastante más larga que este punto sólo que además está vinculada a otras macros. Pero adjunto un Excel con un ejemplo del punto crítico, y lo explico un poco mejor. He escrito un resumen del procedimiento que estoy buscando en el Excel adjunto, la macro que hay está hiper resumida por lo que no funcionará, pero he dejado las líneas de la parte que no sé solucionar. Básicamente mi pregunta es como desplazar todos los datos ya guardados en una matriz una posición para abajo. Muchas gracias por tu ayuda resumen.xlsm
  6. Hola, Busco alguna instrucción o bucle (no se me ocurre como montarlo) que haga lo mismo que insertar una fila (si se cumple una condición sobre el valor de una celda o posición en un array) y que copia lo de esa fila, pero sin pasar por excel. Es decir, tengo una macro que funciona en excel, pero quiero evitar excribir nada, y manejarme sólo con arrays, y una vez completado ya escirbirlo de golpe. El probema está en que hay una sentencia que en función de una condición duplica esa línea, y sigue escribiendo, y eso no sé como hacerlo sin escribirlo en excel. El trozo en cuestión sería algo así: If Cells(18 + fila, 1 + orden + 1) <> Nin Then Cells(17 + fila, 1 + j).Select ActiveCell.EntireRow.Copy Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(xCount, 0)).EntireRow.Insert Shift:=xlDown Application.CutCopyMode = False End If Mi objetivo, es encontrar algo equivalente sin escribirlo no sé cómo copiar todos los valores de la fila anterior a la nueva fila creada, y más importante, que al mismo tiempo todos los valores desde esa fila hasta el final se desplacen una posición. Muchas gracias por vuestra ayuda.
  7. JuanPerezNuevo Usuario Buenas a todos, Tengo un problema que he encontrado ya en foros antiguos pero al que no he encontrado que se le diera solución. Se trata de un archivo para compartir con muchos usuarios, y lo que deseo es que cuando lo abran no tengan ni los encabezados, ni la barra de fórmulas (no quiero pantalla completa). Tengo una macro que deshabilita : - la que deshabilita la barra de estado (Application.DisplayStatusBar = False) - la que deshabilita los encabezamientos de líneas y columnas (ActiveWindow.DisplayHeadings = False) - la que deshabilita la barra de fórmulas (Application.DisplayFormulaBar = False) El problema es que al ejecutar estas líneas se deshabilita la opción de copiar y pegar (y es algo que requiero de forma indispensable). En las respuestas en foros antiguos comentaban que sería un problema que se solucionaría en nuevas versiones, yo he probado con todas las versiones de office (desde 2003 hasta 2013) y en todas me ocurre lo mismo. Desconozco si es por alguna de las configuraciones (opciones de Excel) pero como tal no funciona ninguna versión. En el caso que a alguien le funcione, agradecería que me dijera si tiene alguna opción habilitada o deshabilitada. ¿Existe alguna forma de arreglar esto? Lo que realmente requiero es que no se vean las líneas, ni los encabezados (si puedo ocultar las fichas mejor), pero que se permita copiar y pegar. Si yo guardo el archivo con esta visualización (sin líneas, sin barras de fórmulas, etc) el problema está en que cuando otro usuario lo abre puede que las vea o puede habilitarlas. Gracias por vuestra ayuda.
  8. Hola a ambos Probaré lo del formato que comentáis, aunque creo que ya los he probado, y el problema está en que si hay decimales no hay problema pero si no hay me coloca la coma aunque sin ningún número detrás. Lo de no gastar formato condicional es porque quiero aplicarlo a más de 4300 celdas repartidas por más de once hojas, que están todas medio programadas y que ya contienen muchas formato condicional. Si no existiera otra opción lo tendría que hacer con condicionales pero no quería liarlo todo más. Lo de la macro, que me comentáis lo miraré, pero tiene que aplicarse siempre que escriban un número, y tampoco la puedo activar por eventos porque como os digo esta casi todo vinculado entre hojas. Probaré lo que me comentáis pero como veis estoy bastante limitada, por eso quería recurrir a lo que me parecía más sencillo que es el formato de las celdas. Muchas gracias por vuestra ayuda
  9. Hola, Necesito encontrar la manera con un formato personalizado de celda (no me sirve con formato condicional), que me ponga decimales sólo si los hay pero que también ponga el separador de miles. Es decir, si tengo 14.526,36 que escriba esto mismo pero que si no tengo decimales 14.526 que no escriba ningún decimal. He probado con #.###,## pero el problema es que deja la coma decimal aunque no haya ningún número a continuación, escribiendo 14.526, ¿Existe alguna forma de hacer esto? He intentado también combinando [???]#.###; #.###,## pero no sé cómo poner la condición entre paréntesis que signifique que se trata de un número entero. Muchas gracias por vuestra ayuda!
  10. Sí que funcionó, aunque no entiendo muy bien por qué ahora sí funciona. En cualquier caso muchas gracias por tu ayuda.
  11. Buenos días, Tengo el siguiente error: He calculado una serie de vectores de datos a partir de una serie de fórmulas muy sencillas, el problema es que cuando quiero trasladar los datos del vector a Excel (para construir una gráfica), por medio de Range, me escribe el primero de los valores del vector en todas las celdas del Rango. Funciona si lo escribo por medio de un bucle For recorriendo todos los valores del vector y escribiéndolos de uno en uno, pero eso ralentiza demasiado la Excel y no es viable. Espero puedan ayudarme. Les subo mi archivo resumido con mi problema (la macro a la que hago referencia está en el modulo grafica). Un saludo Pegar array.zip
×
×
  • Create New...

Important Information

Privacy Policy