[RESUELTO] Operar una matriz

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Dante
Mensajes: 18
Registrado: Vie May 07, 2010 11:56 pm

[RESUELTO] Operar una matriz

Mensaje 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.
Última edición por Dante el Jue May 20, 2010 3:19 pm, editado 1 vez en total.
OpenOffice.org 3.2
Windows XP service pack 2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Operar una matriz

Mensaje 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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Dante
Mensajes: 18
Registrado: Vie May 07, 2010 11:56 pm

Re: Operar una matriz

Mensaje 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.
Adjuntos
Datos.ods
(45.74 KiB) Descargado 267 veces
OpenOffice.org 3.2
Windows XP service pack 2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Operar una matriz

Mensaje 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
Adjuntos
Datos.ods
(48.21 KiB) Descargado 297 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Dante
Mensajes: 18
Registrado: Vie May 07, 2010 11:56 pm

Re: Operar una matriz

Mensaje 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.
OpenOffice.org 3.2
Windows XP service pack 2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Operar una matriz

Mensaje 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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder