Página 1 de 1

[RESUELTO] Operar una matriz

Publicado: Jue May 13, 2010 4:08 pm
por Dante
Que tal
El problema que tengo es, como hago para operar un rango de datos que esta en una matriz.
Me explico, tengo una hoja con datos, y a una columna especifica debo sacarle el percentil, como el tamaño varia hice una macro que los ordena en una matriz y luego pensaba hacer la operaciones, sacar el percentil.

Código: Seleccionar todo

Function percentiles(Columna As Integer, Rango As Integer) As Double
Dim oHojaActiva As Object
Dim dato As Object
Dim dato1 As Double
Dim dato2 As String
Dim co As Integer
Dim y As Integer
Dim mDat() As Variant
co = 0
y = 1

        oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
        dato = oHojaActiva.getCellByPosition( Columna, y )
		dato1 = dato.Value
		dato2 = dato.getString()
		
		While dato2 <> ""
			Redim Preserve mDat(co)		
				mDat(co) = dato1
				y = y + 1
				co = co + 1	
				dato = oHojaActiva.getCellByPosition( Columna, y )
				dato1 = dato.Value
				dato2 = dato.getString()
		Wend
		
		
		dato = oHojaActiva.getCellByPosition( Columna, y + 5 )
		dato.setValue(Percentil(mDat(),Rango)
		
End function
Como veran, solo debo llamar a la funcion percentiles, en que columna deseo que haga la operacion y el rango del percentil.
pero me sale error, en la parte final de la operacion :

Código: Seleccionar todo

 dato.setValue(Percentil(mDat(),Rango) 
De otra forma debo declararlo ?? A lo mejor hay una forma mas facil ? Espero me puedan ayudar.

Re: Operar una matriz

Publicado: Jue May 13, 2010 5:57 pm
por mauricio
Hola...

Desconozco casi todo lo que sea de estadística, pero vamos por partes haber si nos aclaramos y los dos aprendemos algo del día de hoy. Tu código tiene varios errores, dices;
tengo una hoja con datos, y a una columna especifica debo sacarle el percentil, como el tamaño varia
¿Puedes mostrar algunos datos de estos?, cuando dices que el tamaño varia, ¿te refieres a la cantidad de datos?, Calc incorpora la función PERCENTIL, ¿es esta la que quieres usar?, si es así creo que podrías usar puras formulas sin necesidad de macros...

Saludos

Re: Operar una matriz

Publicado: Jue May 13, 2010 8:28 pm
por Dante
Ok
He adjuntado el archivo.
Te explico desde el principio, estos datos se obtienen de un instrumento electronico (sonometro), la explicación de su funcionamiento no viene al caso, el punto es, que estos datos se bajan a la computadora y me lo entraga en formato de excel, pero me lo da en "crudo" por asi decirlo, estoy haciendo una macro para que lo ordene y limpie. Dentro de ese ordenamiento y limpieza esta el hacer operaciones a los datos, la sumatoria, equivalente y percentiles. (Definición: Es cada uno de los 99 segmentos que tomamos al dividir una muestra o un conjunto de elementos ordenados por cien partes de igual frecuencia.-Wikipedia-).(en otras palabras, tienes un conjunto de datos, es ordenarlos en forma ascendente , dividirlo en 100 y de acuerdo a que percentil deseas, escojes un segmento.)

A lo que me referia al decir que el tamaño varia es porque de acuerdo a la programacion y tiempo que se use el instrumento (sonometro), graba los datos casa segundo por asi decirlo, asi que puedo tener un archivo de 300 filas asi como tambien otra de 1500. Al tener este inconveniente no puedo poner formulas con celdas especificas (=suma(C2:C344)) porque para un archivo me serviria, pero para otro que tenga mas filas no. Las columnas no varian felizmente. Es por eso tambien que me inclino mas en hacer una macro para que me sirva con cualquier archivo.

No espere escribir tanto, espero no haberte mareado, jajaja, estoy ahora probando otras cosas y otros caminos, si resultan ya te estare informando.

Re: Operar una matriz

Publicado: Vie May 14, 2010 6:42 am
por mauricio
Hola...

Insisto que no es necesaria una macro. No importa que no sepas cuantas filas de datos tendrás, puede averiguarlo con algunas sencillas formulas, te muestro un ejemplo en tu mismo archivo, te muestro el detalle del calculo, pero en la celda C2 de la hoja Resumen, te muestro todo en una sola formula anidada...

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos

Re: Operar una matriz

Publicado: Jue May 20, 2010 3:19 pm
por Dante
Hola Mauricio

Antes que nada, mis disculpas, pero he estado ocupado con asuntos del trabajo, he estado revisando lo que me mandaste y me parece muy interesante, hay mas de una forma para llegar al resultado. Bueno seguire revisando y cualquier duda te lo hare saber, Gracias.

Dante.

Re: [RESUELTO] Operar una matriz

Publicado: Jue May 20, 2010 3:36 pm
por mauricio
Hola...
hay mas de una forma para llegar al resultado
... eso, es lo que más me gusta de la programación (y de la vida...)

Saludos