Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Funciones que devuelven matrices en LibreOffice.

Continuando con nuestro artículos acerca de funciones personalizadas para LibreOffice y OpenOffice.org, ahora vemos como devolver una matriz.

Las funciones personalizadas, también pueden devolver matrices, como en el siguiente ejemplo.

Option Explicit

Function DatosTexto( Cadena As String )
Dim sLetra As String
Dim co1 As Integer, co2 As Integer, co3 As Integer
Dim mDatos(2)
   
    For co1 = 1 To Len(Cadena)
        sLetra = LCase(Mid(Cadena,co1,1))
        If InStr(1,"aeiouáéíóú",sLetra) Then
            co2 = co2 + 1   
        ElseIf InStr(1," ?¿¡!.,:;",sLetra) Then
            co3 = co3 + 1
        End If
    Next
   
    mDatos(0) = co2
    mDatos(1) = Len(Cadena)-co2-co3
    mDatos(2) = co3
   
    DatosTexto = mDatos

End Function 


Pero al usarla en la hoja de calculo, tenemos que introducirlas como una función matricial, esto se logra presionando la combinación de teclas CTRL+SHIFT+ENTER. Observa las llaves que encierran a la función en la barra de formulas.
Las funciones personalizadas que devuelven matrices son utiles para, entre otros casos, cuando a partir de unos pocos valores iniciales podemos obtener mucha información, por ejemplo, a partir del radio de un círculo, podemos obtener su diámetro, perímetro y área, con la siguiente función

Option Explicit

Function DatosCirculo( Radio As Single )
Dim mDatos(2)
Const PI As Double = 3.14159

    mDatos(0) = Radio * 2
    mDatos(1) = Radio * 2 * PI
    mDatos(2) = PI * (Radio^2)
   
    DatosCirculo = mDatos
   
End Function

Y el resultado:

Como ves, no puede ser más sencillo.

¡Feliz programación!


Atención: Salvo que se indique lo contrario, la licencia del texto de este documento es Creative Commons Reconocimiento 2.5, mediante la cual usted tiene permitido copiar, modificar, comunicar y distribuir el contenido de este texto, de manera total o parcial, y publicarlo o difundirlo en cualquier otro sitio de Internet o medio de comunicaciòn, siempre y cuando incluya o cite (1)el nombre de este sitio de Internet, (2)enlace permanente de este documento, (3)nombre del autor y (4)la misma licencia de distribución.

Opciones: Imprimir | Recomendar | Enlace permanente

Twitter Facebook Google Bookmarks Bitacoras.com Wikio Menéame Technorati Bloglines Digg Yahoo Buzz

Seguimientos (Trackback)

URL de seguimiento para esta entrada:
http://www.alcancelibre.org/trackback.php/20110804085214200
Agregar comentario

Los siguientes comentarios son de la persona que los haya enviado. Este sitio se deslinda de cualquier responsabilidad respecto de las opiniones expresadas por los participantes en nuestros foros y secciones de comentarios, y el hecho de publicar las mismas no significa que se esté de acuerdo con éstas.