Pegando matrices en un rango

16/11/2005 - 16:05 por Emilio | Informe spam
Hola!
estoy pegando una matriz con datos en un rango de una hoja, la matriz
(variant) contiene una columna con fechas y la otra con numeros reales. El
problema me surge cuando voy a graficar esos datos y no me muestra los datos
porque las fechas las ha pegado como cadenas de texto y no como fechas.
Cuando los datos los pego mediante un bucle y en el proceso convierto la
fecha con cDate, el gráfico queda perfecto, el problema es que son muchos
datos y a pesar de desactivar el refresco de pantalla y el recalculo, el
proceso se demora mucho.

El código que uso es el siguiente
' devolvemos los datos a la hoja
contadorT1 = UBound(Matriz, 2) + 7
Worksheets("PI Teja 1").Range("C7") = Matriz

'contadorT1 = UBound(Matriz, 2)
'For i = 0 To contadorT1
' ActiveSheet.Cells(i + 7, 3) = CDate(Matriz(0, i))
' ActiveSheet.Cells(i + 7, 4) = Matriz(1, i)
'Next

¿Habrá algún metodo para reolver este problema?

Gracias anticipadas

Saludos a tod@s
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Preguntas similare

Leer las respuestas

#1 Emilio
16/11/2005 - 19:23 | Informe spam
Gracias Luis
si, también podría recorrerlas con un bucle, pero para ese viaje ya las
pegaría con el bucle y en ese caso no gano nado, mi pregunta es por si hay
algún método que me evite eso.

Gracias de nuevo

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"luis" escribió en el mensaje
news:%
Dices, en tu primer mensaje, que el problema es debido a que las fechas
están en formato texto. Si ese es el problema puedes convertir fechas en
formato a texto a formato fecha con esa función.


"Emilio" <miliuco56 ARROBA hotmail.com> escribió en el mensaje
news:
Gracias Luis
¿pero cuando, despues de pegar la matriz en la hoja?,

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"luis" escribió en el mensaje
news:
puedes convertir la fecha en texto mediante la funcion FECHANUMERO


"Emilio" <miliuco56 ARROBA hotmail.com> escribió en el mensaje
news:uP2$
> Hola!
> estoy pegando una matriz con datos en un rango de una hoja, la matriz
> (variant) contiene una columna con fechas y la otra con numeros
> reales.
> El
> problema me surge cuando voy a graficar esos datos y no me muestra los
> datos
> porque las fechas las ha pegado como cadenas de texto y no como
> fechas.
> Cuando los datos los pego mediante un bucle y en el proceso convierto
> la
> fecha con cDate, el gráfico queda perfecto, el problema es que son


muchos
> datos y a pesar de desactivar el refresco de pantalla y el recalculo,
> el
> proceso se demora mucho.
>
> El código que uso es el siguiente
> ' devolvemos los datos a la hoja
> contadorT1 = UBound(Matriz, 2) + 7
> Worksheets("PI Teja 1").Range("C7") = Matriz
>
> 'contadorT1 = UBound(Matriz, 2)
> 'For i = 0 To contadorT1
> ' ActiveSheet.Cells(i + 7, 3) = CDate(Matriz(0, i))
> ' ActiveSheet.Cells(i + 7, 4) = Matriz(1, i)
> 'Next
>
> ¿Habrá algún metodo para reolver este problema?
>
> Gracias anticipadas
>
> Saludos a
> Emilio
> miliuco56 ALGARROBA hotmail.com
> http://www.mvp-access.com/foro
> http://www.mvp-access.com/emilio
>
>
>










Respuesta Responder a este mensaje
#2 Héctor Miguel
17/11/2005 - 05:18 | Informe spam
hola, Emilio !

... pegando una matriz... en un rango de una hoja, la matriz (variant) contiene una columna... fechas y la otra... numeros
... problema... cuando voy a graficar... porque las fechas las ha pegado como cadenas de texto y no como fechas
... los pego mediante un bucle y en el proceso convierto la fecha con cDate, el grafico queda perfecto
... son muchos datos y a pesar de desactivar el refresco de pantalla y el recalculo, el proceso se demora mucho
El codigo que uso es el siguiente
' devolvemos los datos a la hoja
Worksheets("PI Teja 1").Range("C7") = Matriz [...]
... algun metodo para resolver este problema?



1) si 'el pase' de la matriz al rango 'pasa' sin problemas... -> Worksheets("PI Teja 1").Range("C7") = Matriz
2) y si la matriz es de tipo variant [que acepta -por omision- datos de todo tipo] :))
3) al momento en que vas 'llenando' la columna de fechas en la matriz... estas 'pasando' textos ? [o fechas 'reales'] -?-

-> si tuvieras 'conflictos' por sistemas de fecha y/o configuraciones regionales distintas...
[suponiendo que estas 'trabajando' con datos-fecha que 'realmente' puedan ser considerados como fechas]...
prueba 'pasandolos' a la matriz bajo una instruccion del tipo...
Matriz(colFecha, n_Fila) = CLng(CDate(dato_Fecha))

-> o [si es posible]... 'convertir' [ya en el rango] la columna texto_fecha a dato_fecha -> multiplicando el rango *1
[a menos que el dato_texto_fecha fuera totalmente una fecha 'textual'] -?-

comentas algun detalle adicional ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 Emilio
17/11/2005 - 08:39 | Informe spam
Gracias Hector Miguel

he probado conivirtiendolo a doble (incluye hora) y cosa extrañisima, no se
vuelca mas que el primer dato. Con tal de no recorrer todo el rango de
fechas, creo que optaré por generar en vez de una matriz de datos, dos, la
primera dimensionada como fecha y la segunda como single, (estos datos los
extraigo de una aplicación externa)

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Héctor Miguel" escribió en el mensaje
news:
hola, Emilio !

> ... pegando una matriz... en un rango de una hoja, la matriz (variant)


contiene una columna... fechas y la otra... numeros
> ... problema... cuando voy a graficar... porque las fechas las ha pegado


como cadenas de texto y no como fechas
> ... los pego mediante un bucle y en el proceso convierto la fecha con


cDate, el grafico queda perfecto
> ... son muchos datos y a pesar de desactivar el refresco de pantalla y


el recalculo, el proceso se demora mucho
> El codigo que uso es el siguiente
> ' devolvemos los datos a la hoja
> Worksheets("PI Teja 1").Range("C7") = Matriz [...]
> ... algun metodo para resolver este problema?

1) si 'el pase' de la matriz al rango 'pasa' sin problemas... ->


Worksheets("PI Teja 1").Range("C7") = Matriz
2) y si la matriz es de tipo variant [que acepta -por omision- datos de


todo tipo] :))
3) al momento en que vas 'llenando' la columna de fechas en la matriz...


estas 'pasando' textos ? [o fechas 'reales'] -?-

-> si tuvieras 'conflictos' por sistemas de fecha y/o configuraciones


regionales distintas...
[suponiendo que estas 'trabajando' con datos-fecha que 'realmente'


puedan ser considerados como fechas]...
prueba 'pasandolos' a la matriz bajo una instruccion del tipo...
Matriz(colFecha, n_Fila) = CLng(CDate(dato_Fecha))

-> o [si es posible]... 'convertir' [ya en el rango] la columna


texto_fecha a dato_fecha -> multiplicando el rango *1
[a menos que el dato_texto_fecha fuera totalmente una fecha


'textual'] -?-

comentas algun detalle adicional ?
saludos,
hector.


Respuesta Responder a este mensaje
#4 Héctor Miguel
17/11/2005 - 09:30 | Informe spam
hola, Emilio !

he probado conivirtiendolo a doble (incluye hora) y cosa extra#isima, no se vuelca mas que el primer dato.
con tal de no recorrer todo el rango de fechas, creo que optare por generar en vez de una matriz de datos, dos
la primera dimensionada como fecha y la segunda como single, (estos datos los extraigo de una aplicacion externa)



estas incuyendo la funcion CDate para convertir [primero] el dato_Fecha ANTES [o denttro] de CDbl ??
-> CDbl(CDate(dato_Fecha))

con la ventana de inmediato [por 'rapidez' de prueba], usando la instruccion: -> activecell.offset(1) = cdbl(cdate(activecell))
lo que obtengo es lo siguiente...
1) si en la celda activa intruduzco {ctrl}+; espacio {ctl}+: [que deja: 11/17/05 2:17 a.m.]
en la celda de 'abajo' me devuelve: -> 38673.0954
2) si en la celda activa intruduzco {ctrl}+; [que deja: 11/17/05]
en la celda de 'abajo' me devuelve: -> 38673
3) si en la celda activa intruduzco {ctrl}+: [que deja: 2:20 a.m.]
en la celda de 'abajo' me devuelve: -> 0.097222222

comentas [si hubiera] detalles adicionales ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Emilio
17/11/2005 - 19:57 | Informe spam
Héctor Miguel
Perdona que no te haya respondido todavía, hoy, mis prioridades cambiaron
radicalmente, espero poder meterme con ello mañana.

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Héctor Miguel" escribió en el mensaje
news:
hola, Emilio !

he probado conivirtiendolo a doble (incluye hora) y cosa extra#isima, no
se vuelca mas que el primer dato.
con tal de no recorrer todo el rango de fechas, creo que optare por
generar en vez de una matriz de datos, dos
la primera dimensionada como fecha y la segunda como single, (estos datos
los extraigo de una aplicacion externa)



estas incuyendo la funcion CDate para convertir [primero] el dato_Fecha
ANTES [o denttro] de CDbl ??
-> CDbl(CDate(dato_Fecha))

con la ventana de inmediato [por 'rapidez' de prueba], usando la
instruccion: -> activecell.offset(1) = cdbl(cdate(activecell))
lo que obtengo es lo siguiente...
1) si en la celda activa intruduzco {ctrl}+; espacio {ctl}+: [que deja:
11/17/05 2:17 a.m.]
en la celda de 'abajo' me devuelve: -> 38673.0954
2) si en la celda activa intruduzco {ctrl}+; [que
deja: 11/17/05]
en la celda de 'abajo' me devuelve: -> 38673
3) si en la celda activa intruduzco {ctrl}+: [que
deja: 2:20 a.m.]
en la celda de 'abajo' me devuelve: -> 0.097222222

comentas [si hubiera] detalles adicionales ?
saludos,
hector.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida