You are on page 1of 28

Construccin de un modelo para priorizar elementos

y tomar decisiones
Versin 0.0

Camilo Bernal
12 de agosto de 2015

ndice
1. INTRODUCCIN

2. PRESENTACIN DEL MODELO


2.1. Elementos del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Construccin del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
2

3. POSIBLES USOS DEL MODELO


3.1. Elegir el mejor producto entre varias opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Seleccionar al candidato ms apropiado para un cargo entre varios aspirantes despus de realizar un
convocatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Elegir al ganador de una licitacin pblica entre varias empresas concursantes que cumplen todos los
requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Elegir una carrera universitaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3

4. EJEMPLOS DE APLICACIN
4.1. Comprar un celular adecuado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Elegir una carrera universitaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
9

3
4
4

5. QU ES LIBREOFFICE?

11

6. QU ES GNU/LINUX?

12

7. DESCRIPCIN DE LA HERRAMIENTA PROPUESTA PARA APLICAR EL MODELO


7.1. Elaboracin de la plantilla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Elaboracin de las macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
13
13

8. CONCLUSIONES

15

A. Macros del modelo

17

1.

INTRODUCCIN

Frecuentemente nos encontramos ante la necesidad de elegir entre varias opciones y/o priorizar una serie de elementos
de acuerdo a algn criterio. Ya sea para elegir una casa que vamos a comprar, un auto, seleccionar a un empleado
para un cargo, un nuevo celular,... siempre nos encontramos ante la dificultad que supone hacer una buena eleccin
entre varios elementos disponibles.
En este documento se presenta una propuesta que consiste en un modelo que nos permitir guiarnos en la toma de
decisiones y priorizacin de elementos de acuerdo a una serie de criterios que pueden mezclar elementos subjetivos
y objetivos a fin de tomar una decisin final.
El modelo consiste en dar un valor numrico a cada criterio usado para tomar la decisin y los factores a considerar
sern cada una de las alternativas que se tienen para elegir.
La herramienta propuesta aqu puede ser muy til para las personas que necesitan elegir entre varias opciones y/o
priorizar una serie de elementos de acuerdo a algunos criterios considerados importantes.

2.

PRESENTACIN DEL MODELO

2.1.

Elementos del modelo

C:

Conjunto de criterios usados para la toma de decisiones

F:

Conjunto de factores a ser considerados segn los criterios (C)

P O:

Conjunto de ponderaciones para los criterios usados (C)

V:

Conjunto de valoraciones (subjetivas u objetivas) dadas a cada factor (F ) segn el criterio (C)

P U:

Conjunto de puntajes obtenidos por cada factor (F ) de acuerdo a los criterios (C) y su respectiva
ponderacin (P )

I:

ndice que identifica los criterios

J:

ndice que identifica los factores

2.2.

Construccin del modelo

El puntaje (P U ) para los diversos factores se obtiene usando la siguiente expresin:

P Uj =

Vji P Oi

i I, j J

(1)

Donde:
P Uj :
0

Puntaje obtenido por el factor j

Vji :

Valoracin normalizada del factor j segn el criterio i

P Oi :

Ponderacin dada al criterio i

Para normalizar la valoracin de los factores, se divide la valoracin de cada factor segn un criterio entre la suma
de las valoraciones de todos los factores segn ese mismo criterio. Esto se puede expresar as:
Vji
0
Vji = P
I Vji

i I, j J

(2)

Donde:
Vji
Vji

Valoracin normalizada del factor j segn el criterio i


Valoracin del factor j segn el criterio i

Y con esto se concluye la formalizacin matemtica del modelo. Aunque pueda parecer complejo para las personas
ajenas ajenas a las matemticas y la ingeniera, la simplicidad resulta asombrosa cuando se traduce en ejemplos
concretos.
Para que el modelo tenga una autntica posibilidad de aplicacin, se ha decidido Construirlo en una hoja de clculo
con ayuda de macros. Se us la hoja de clculo llamada LibreOffice Calc V4.1.3.2 (Ver seccin 5 para ms informacin).

3.

POSIBLES USOS DEL MODELO

El modelo puede usarse tanto para elegir la mejor opcin entre varias alternativas como para priorizar una serie de
elementos.

3.1.

Elegir el mejor producto entre varias opciones

Nuestro presupuesto es limitado y si vamos a comprar algn producto (coche, motocicleta, ropa, celular, viaje,...)
frecuentemente encontraremos varias opciones que nos ofrece el mercado. El producto que queremos adquirir tiene
unas caractersticas determinadas (precio, calidad, confiabilidad de la marca, tipo de pago,...) y nosotros tenemos
una determinada percepcin acerca de l (gusto, necesidad, utilidad, smbolo de status,...). Se espera que despus de
analizar las diversas posibilidades, finalmente tomamos la decisin de elegir el que consideramos el mejor producto
de todos.
El problema ms comn es que casi nunca estamos seguros de haber hecho la mejor eleccin, pues la publicidad,
los vendedores, la tensin psicolgica, entre otros, nos llevan a tomar decisiones impulsivas y finalmente adquirimos
algo que quizs no es lo que realmente estbamos buscando.
El modelo propuesto puede ayudar a tomar la decisin ms acertada al considerar tanto los factores objetivos
(caractersticas del producto) como los subjetivos (nuestras propias percepciones) y de esta manera realizar una
jerarquizacin de las opciones disponibles para elegir la mejor opcin.

3.2.

Seleccionar al candidato ms apropiado para un cargo entre varios aspirantes


despus de realizar un convocatoria

Las empresas de cualquier tamao y sector necesitan personal para poder funcionar. Debido al desempleo, precarizacin laboral, sobrepoblacin,... por un lado, y a la masificacin de las Tecnologas de la informacin y las
comunicaciones, por otro, es comn que ante una convocatoria para un empleo, se reciban cientos de currculums
de aspirantes al cargo. Los aspirantes tiene una serie de caractersticas (edad, formacin acadmica, experiencia,
logros,...) y las empresas buscan unos perfiles con unas caractersticas especficas (liderazgo, trabajo en equipo,
trabajo bajo presin, proyeccin,...). Despus de realizar un sondeo, se eligen a los candidatos que presentarn una
entrevista. Se espera que uno de los entrevistados ser finalmente elegido para el cargo.
Las empresas enfrentan dos problemas al intentar elegir al mejor candidato: 1) Qu candidatos han de ser elegidos
para la entrevista? y 2) Cul de los candidatos entrevistados es realmente la mejor opcin para cubrir el cargo?.
En ocasiones las opciones son muy numerosas y el proceso de seleccin puede resultar abrumador, y siempre queda
la sensacin de haber dejado pasar algo.
Se puede usar el modelo propuesto en las dos fases de eleccin de candidatos. Para elegir a los candidatos que
presentarn entrevista se podran usar las caractersticas de cada uno de los aspirantes. Una vez elegidos los aspirantes
a ser entrevistados, se usarn los resultados de la entrevista para estimar el perfil de cada candidato segn las
necesidades de la empresa. Teniendo ya las caractersticas de los aspirantes y los resultados de las entrevistas,
pueden usarse todos los criterios en conjunto para encontrar al mejor candidato.

3.3.

Elegir al ganador de una licitacin pblica entre varias empresas concursantes que
cumplen todos los requerimientos

Con el fin de "disminuir" la corrupcin en los procesos de contratacin, las empresas pblicas deben usar licitaciones
para "mostrar" la transparencia en el proceso de decisin para adquirir productos y servicios.
El problema en muchos casos de licitacin es que la normatividad, la burocratizacin y la corrupcin solapada, hacen
que la eleccin del mejor candidato para ganar la licitacin sea un proceso engorroso e inherentemente ineficiente.
El modelo propuesto, adaptado a la normatividad correspondiente, puede convertirse en una herramienta valiosa
para hacer una eleccin ms objetiva y rpida, ya que al basarse en una lgica matemtica (no poltica ni legal)
contribuye a igualar las reglas de juego para todos.

3.4.

Elegir una carrera universitaria

El aumento de instituciones de educacin superior, el mayor nmero de crditos educativos, y la transformacin del
aparato productivo de los pases, han hecho que cada vez ms personas jvenes opten por hacer una carrera universitaria, con la "esperanza" de obtener mejores oportunidades de desarrollo personal y profesional. A la hora de elegir
una buena alternativa existen numerosas opciones de programas que tienen ciertas caractersticas (perfil profesional,
pnsum, duracin, costo, reputacin de la universidad,...) y unas inclinaciones particulares del joven aspirante (personalidad, gusto por determinadas reas de conocimiento, presupuesto, desempeo en la educacin previa,...). Adems
el mercado laboral tambin tiene caractersticas especficas para los egresados (salario de enganche, salario promedio,
nivel de demanda, posibilidades de ascenso,...). Aunque esta debera ser una de las elecciones ms importantes en la
vida de alguien, frecuentemente se toman decisiones apresuradas y con poca o ninguna informacin.
El problema al elegir una carrera universitaria es que no se considera toda la informacin (subjetiva y objetiva)
necesaria para elegir la mejor opcin. Debido a que esta es una decisin que probablemente nos marcar para toda la
vida, lo ideal sera elegir aquella carrera que adems de darnos satisfaccin personal, nos ofrezca posibilidades reales
de xito en el mundo laboral y que adems tenga en cuenta nuestro desempeo previo en la formacin acadmica
(educacin primaria y secundaria).
El modelo propuesto puede ser de gran ayuda a la hora de elegir una carrera universitaria, ya que nos permitira
cuestionarnos acerca de elementos tales como:
Qu me gusta?
Qu me ofrece una determinada universidad?
Cules son mis expectativas profesionales?
Qu opciones reales me ofrecera el mercado laboral?
Puedo permitirme una determinada carrera en cierta universidad?

4.

EJEMPLOS DE APLICACIN

El primer ejemplo mostrar la descripcin del modelo paso a paso. Los dems ejemplos usarn la herramienta
propuesta directamente para aplicar el modelo.

4.1.

Comprar un celular adecuado

Al comprar un celular existen multitud de opciones (factores). El producto tiene unas caractersticas especficas
(criterios) y yo como comprador tengo unas percepciones concretas sobre cada producto (criterios).
Este ejemplo es puramente ficticio y slo tiene propsitos explicativos.
Hemos seleccionado 3 Celulares, y decidimos que compraremos uno. Los celulares con sus respectivas caractersticas
se muestran en la tabla 1.
Cuadro 1: Caractersticas de celulares

Celular
Celular 1
Celular 2
Celular 3

Precio (US$)
800
400
300

Resolucin de cmara (MP)


Marca
Sistema operativo
2,1
Apple
iOS
1,8
Samsung
Android
2,4
Hwawei
Android


Fuente: Elaboracin propia

Adems de las caractersticas del producto, yo tengo una opinin particular acerca de las caractersticas del producto.
En la tabla 2 se muestra mi opinin.
Cuadro 2: Opinin personal sobre las opciones

Celular
Celular 1
Celular 2
Celular 3

Precio (US$)
Muy caro
Precio medio
Buen precio

Resolucin de cmara (MP)


Marca
Sistema operativo
Buena
Excelente
Excelente
Regular
Buena
Bueno
Excelente
Regular
Bueno


Fuente: Elaboracin propia

Tambin pienso que tanto las caractersticas del producto como mi opinin personal tienen cierta importancia. En
la tabla 3 se muestra la importancia que doy a cada criterio.
Cuadro 3: Importancia concedida a cada criterio

Criterio
Precio
Resolucin
Marca
Sistema operativo

Fuente: Elaboracin propia

Importancia
Muy importante
Nada importante
Importante
Poco importante

Ahora que ya tenemos la informacin objetiva (caractersticas del producto) y la informacin subjetiva (mi opinin),
es momento de usar el modelo para tomar una decisin.
Como el modelo se basa en nmeros, es necesario reemplazar la informacin que no sea cuantitativa por valores
numricos de acuerdo a mi propia opinin. De las caractersticas del producto (Tabla 1) existen dos (precio y resolucin de cmara) que se expresan por medio de nmeros, as que se tomarn estas dos. Las otras dos caractersticas
(marca y sistema operativo) no son nmeros, as que debo asignar un nmero a la opinin que tengo acerca de estas
caractersticas.
Los puntos asignados a la marca segn mi opinin (Tabla 2) pueden ser de la siguiente manera:
Excelente = 3 puntos
Buena = 2 puntos
Regular = 1 punto
Los puntos asignados al sistema operativo segn mi opinin (Tabla 2) pueden ser de la siguiente manera:
Excelente = 3 puntos
Bueno = 2 puntos
Con las transformaciones hechas anteriormente, ya podemos tener una tabla con las caractersticas del producto
donde toda la informacin est en nmeros (Tabla 4)
Cuadro 4: Caractersticas de celulares en forma cuantitativa

Celular
Celular 1
Celular 2
Celular 3

Precio (US$)
800
400
300

Resolucin de cmara (MP) Marca Sistema operativo


2.1
3
3
1.8
2
2
2.4
1
2


Fuente: Elaboracin propia
Ahora slo falta convertir en nmeros la importancia concedida a cada criterio. Se pueden asignar puntos a la
importancia de la siguiente manera:
Nada importante = 0 puntos
Poco importante = 1 punto
Importante = 2 puntos
Muy importante = 3 puntos
Con esta clasificacin la importancia concedida a cada criterio queda como se muestra en la tabla 5.
Cuadro 5: Importancia concedida a cada criterio en forma cuantitativa

Criterio
Precio
Resolucin
Marca
Sistema operativo

Fuente: Elaboracin propia

Importancia
3
0
2
1

Ya tenemos toda la informacin del producto en forma de nmeros, as que ahora procedemos a aplicar el modelo.

4.1.1.
C:

Elementos del modelo


Conjunto de criterios usados para la toma de decisiones

C = {P recio, Resoluci
on, M arca, Sistema operativo}
F:

Conjunto de factores a ser considerados segn los criterios (C)

F = {Celular 1, Celular 2, Celular 3}


P O:

Conjunto de ponderaciones para los criterios usados (C)

(Es la importancia que le damos a cada criterio)


P O = {N ada importante, P oco importante, Importante, M uy importante}
(Es necesario expresarlo en forma de nmeros)
P O = {0, 1, 2, 3}
V:

Conjunto de valoraciones (subjetivas u objetivas) dadas a cada factor (F ) segn el criterio (C)

(Es la informacin de la tabla 5)


V = {{800, 400, 300} , {2,1, 1,8, 2,4} , {3, 2, 1} , {3, 2, 2}}
P U:

Conjunto de puntajes obtenidos por cada factor (F ) de acuerdo a los criterios (C) y su respectiva
ponderacin (P )

(Se calcula ms adelante)


I:

ndice que identifica los criterios

I = {P recio (U S$), Resoluci


on de c
amara (M P ), M arca, Sistema operativo}
J:

ndice que identifica los factores

J = {Celular 1, Celular 2, Celular 3}

4.1.2.

Construccin del modelo

Ahora que ya tenemos claridad sobre cmo identificar los elementos del modelo, procedemos a usar la herramienta
propuesta en LibreOffice (Ver Anexo A y Seccin 5) para realizar los clculos. En la figura 1 se muestra la forma en
que han de ingresarse los datos para nuestro ejemplo.

Figura 1: Ingreso de datos en la herramienta de LibreOffice





Fuente: Elaboracin propia

Al ejecutar la macro llamada Calcular_Puntaje, la herramienta de LibreOffice se ocupa de realizar todos los
clculos, ordenarlos de mayor a menor puntaje, asignarles un porcentaje del puntaje a cada factor e incluso un
porcentaje acumulado. Los resultados pueden verse en la figura 2.
Figura 2: Resultados obtenidos con la herramienta de LibreOffice



Fuente: Elaboracin propia

De acuerdo a los resultados obtenidos en la figura 2, la mejor opcin de compra es el Celular 2, seguido por
Celular 3. La peor opcin de compra es Celular 1.
Ntese que la ponderacin del precio tiene signo negativo. Esto es as porque se necesita determinar sin un mayor
valor es deseable o indeseable. Debido a que nadie considerara un mayor precio como algo deseable en un producto,
debe colocarse el signo negativo, as, cuanto mayor sea el precio, ms puntaje restar al producto (Recuerde que el
modelo est basado en sumatorias)1 .
1

Determinar el signo para la ponderacin del criterio es fcil: Si el criterio es deseable es positivo, si el criterio es indeseable, la
ponderacin ser negativa

Aunque la aplicacin del modelo parece larga y compleja, usando la herramienta propuesta se pueden ingresar los
datos de este ejemplo en un minuto y realizar los clculos en 0.7 segundos.

4.2.

Elegir una carrera universitaria

Este ejemplo es puramente ficticio, algunas de las carreras podran no existir en la universidad considerada.
Al elegir una carrera universitaria es necesario tomar en cuenta las caractersticas de la universidad (Prestigio,
Costos, Distancia), las caractersticas de la carrera (Duracin, Proyeccin laboral) y las percepciones propias (Gusto,
Dificultad, Desempeo en la educacin previa).
Supongamos que un joven desea elegir una carrera universitaria y tiene 6 opciones:
opcin 1: Medicina en la Universidad de la Habana
opcin 2: Derecho en la universidad Autnoma de Mxico
opcin 3: Ingeniera mecnica en la Universidad Nacional de Colombia
opcin 4: Ciencia de materiales en la Universidad de Sao Paulo
opcin 5: Derecho en la Universidad de Buenos Aires
opcin 6: Ingeniera mecnica en la Universidad de Buenos Aires
Usando la herramienta propuesta (figura 3) puede otorgar una informacin de entrada que se ver como se muestra
a continuacin.
Figura 3: Informacin de entrada - Ejemplo 2



Fuente: Elaboracin propia

Al calcular los puntajes respectivos se obtiene lo siguiente (figura 4).

Figura 4: Resultados - Ejemplo 2





Fuente: Elaboracin propia

De acuerdo a los resultados, la mejor opcin sera estudiar Ingeniera Mecnica en la Universidad Nacional de
Colombia, y la peor opcin sera estudiar Medicina en la Universidad de La Habana.

10

5.

QU ES LIBREOFFICE?

LibreOffice es la mejor Suite Ofimtica que el dinero no puede comprar.


Comparada con Microsoft Office, puede realizar el 95 % de las tareas que hace esta, ms un 100000000 % de funciones
que slo se pueden realizar con LibreOffice. La razn de esto es que LibreOffice es de cdigo abierto, de manera que
puedes cambiar la herramienta como quieras y hasta donde quieras. El nico lmite es la imaginacin. Si adems usas
LibreOffice junto con GNU/Linux, puedes convertir a LibreOffice en el Dios de todas las herramientas de oficina.
Concretamente, LibreOffice se describe como una suite de productividad moderna, fcil de usar y de cdigo abierto,
para procesar texto, hojas de clculo, presentaciones y ms. La utilidad de hojas de clculo usada aqu se llama
LibreOffice Calc en la versin 4.1.3.2.

11

6.

QU ES GNU/LINUX?

GNU/Linux es el mejor sistema operativo que el dinero no puede comprar.


Comparado con Microsoft Windows, es ms rpido, no tiene virus, es multitarea y multiusuario, no cobra por la
licencia, no cobra por actualizaciones, no roba tu informacin personal para enviarla a servidores remotos,... y ms.
Comparado con Mac OS, es multitarea y multiusuario, no te deja en la ruina econmica, no te dice qu tipo de
persona eres por usarlo (t decides quin eres, por ejemplo una persona autntica),... y ms, aunque se reconoce la
superioridad de Mac OS sobre Microsoft Windows, ambos sistemas te cobran cifras astronmicas por darte mucho
menos de lo que GNU/Linux te dara a precios ridculamente bajos (Ojo: no confundir valor con precio).
Concretamente, Linux es un sistema operativo: un conjunto de programas que le permiten interactuar con su ordenador y ejecutar otros programas.
Un sistema operativo consiste en varios programas fundamentales que necesita el ordenador para poder comunicar y
recibir instrucciones de los usuarios; tales como leer y escribir datos en el disco duro, cintas, e impresoras; controlar
el uso de la memoria; y ejecutar otros programas. La parte ms importante de un sistema operativo es el ncleo. En
un sistema GNU/Linux, Linux es el ncleo. El resto del sistema consiste en otros programas, muchos de los cuales
fueron escritos por o para el proyecto GNU.

12

7.

DESCRIPCIN DE LA HERRAMIENTA PROPUESTA PARA


APLICAR EL MODELO

La herramienta consiste en una serie de macros junto con una plantilla para la herramienta LibreOffice Calc2 .
Se recomienda muy especialmente descargar e instalar LibreOffice en su ordenador3 . Si no puede/quiere hacerlo,
puede usar Microsoft Office Excel, pero debe tener los conocimientos necesarios para reajustar las macros, pues la
compatibilidad entre las dos herramientas NO es del 100 %.

7.1.

Elaboracin de la plantilla.

En la figura 5 se muestra la plantilla usada.


Figura 5: Plantilla de la herramienta



Fuente: Elaboracin propia

Si desea cambiar la plantilla puede hacerlo, pero asegrese de usar las mismas celdas para escribir las etiquetas, pues
de otro modo tendra que cambiar las macros para evitar inconsistencias.

7.2.

Elaboracin de las macros

Se recomienda crear un mdulo con un nombre que identifique el cdigo en la biblioteca estndar. Se sugiere usar
Ingenieria_valor (Recuerde leer el manual para entender lo que estoy diciendo). La ruta de las macros puede ser la
siguiente: Mis macros>Standard>Ingenieria_valor. Para ver las macros propuestas en la herramienta, consulte
los anexos.
2
3

Por favor, lea el manual de LibreOffice despus de instalarlo


En google encuentra la informacin necesaria

13

Si desea agregar ms cdigo a las macros, se sugiere usar subrutinas y funciones en vez de programacin estructurada,
pues la depuracin es menos penosa.
Las macros ms importantes para operar con el modelo son las siguientes:
Empezar: Con esta macro se eliminan los valores ingresados y se genera un esquema para iniciar un nuevo caso.
Limpiar_Todo: Con esta macro se eliminan todos los valores ingresados.
Calcular_Puntaje: Cuando se han ingresado todos los parmetros, esta macro permite calcular el puntaje
para cada factor.
Agregar_criterios: Permite agregar ms criterios al anlisis.
Quitar_criterios: Permite quitar criterios al anlisis.
Agregar_factores: Permite agregar elementos para analizar.
Quitar_factores: Quita elementos que se estn analizando.
Con estas siete macros se puede manejar todo el modelo. Las dems macros son auxiliares. Para facilitar las cosas
se pueden agregar botones a la plantilla, agregar un men a la barra de herramientas o asociar las macros a
combinaciones de teclado. Se recomienda la segunda opcin.

14

8.

CONCLUSIONES
Usando el modelo propuesto, es posible elegir el mejor elemento entre una lista de opciones de acuerdo a una
mezcla de criterios objetivos y subjetivos, para llegar a una decisin satisfactoria.
Usando el modelo propuesto, se puede jerarquizar una serie de elementos segn criterios subjetivos y objetivos
para decidir a qu prestarle atencin y optimizar as nuestro esfuerzo.

15

Referencias
[1] Wikipedia: La enciclopedia libre. GNU/Linux. http://es.wikipedia.org/wiki/GNU/Linux?oldid=78087514. Fecha
de acceso: 11 nov 2014.
[2] Wikipedia: La enciclopedia libre. Software libre. http://es.wikipedia.org/wiki/Software_libre?oldid=78063707.
Fecha de acceso: mi 12 nov 2014.

16

A.

Macros del modelo

A continuacin se presentan todas las macros escritas para aplicar el modelo. El lenguaje es Basic, con algunas
peculiaridades mnimas. En esencia es el mismo lenguaje que usa Excel para sus macros.

REM ***** BASIC *****

Sub Main
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Seleccionar ( columna , fila )
rem seleccionar una celda por posicin
ThisComponent . CurrentController . Select ( CP ( columna , fila ))
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Function NCriterios
NCriterios = CP (1 ,5). Value
End Function
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Function NFactores
NFactores = CP (1 ,4). Value
End Function
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Function CP ( columna as integer , fila as integer ) as object
Obtiene una celda por posicin
Dim Hoja as object
Hoja = ThisComponent . Sheets (0)
CP = Hoja . getCellByPosition ( columna , fila )

17

End Function
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Function CN ( rango as string )
Obtiene una celda por nombre
Dim Hoja as object
Hoja = ThisComponent . Sheets (0)
CN = Hoja . getCellRangeByName ( rango )
End Function
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Borrar ( columna as integer , fila as integer )
Borra una celda referenciada por posicin
CP ( columna , fila ). String = ""
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub EliminarR ( ci , fi , cf , ff )
Elimina un rango , teniendo las referencias de inicio y fin por posicin
Dim CellRangeAddress As New com . sun . star . table . CellRangeAddress
Hoja = ThisComponent . Sheets (0)
CellRangeAddress . Sheet = 0
CellRangeAddress . StartColumn = ci
CellRangeAddress . StartRow = fi
CellRangeAddress . EndColumn = cf
CellRangeAddress . EndRow = ff
Hoja . removeRange ( CellRangeAddress , com . sun . star . sheet . CellDeleteMode . UP )
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub BorrarR ( ci , fi , cf , ff )
Borrar un rango dado por posicion
For columna = ci To cf
For fila = fi To ff
Borrar ( columna , fila )

18

Next
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub ACO ( columna as integer )
Anchura de columna ptima
ThisComponent . Sheets (0). Columns ( columna ). OptimalWidth = True
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub ACP ( columna as integer )
Anchura de columna predeterminada
ThisComponent . Sheets (0). Columns ( columna ). Width = 4000
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Generar_factores
Genera las etiquetas para los factores
Factor = 1
For fila =11 to 10+ NFactores
CP (0 , Fila ). String = " Factor #" + Factor + ":"
CP (0 , Fila ). CellBackColor = 10066431
Factor = Factor + 1
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Generar_criterios
Genera las etiquetas para los criterios considerados
Criterio = 1
For columna =1 to NCriterios
CP ( Columna , 10). String = " Criterio #" + Criterio
CP ( Columna , 9). CellBackColor = 16750848

19

CP ( Columna , 10). CellBackColor = 10066431


Criterio = Criterio + 1
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Rellenar
Pone valores predeterminados a la valoracin de cada factor
For fila =11 To 10+ NFactores
For columna =1 To NCriterios
CP ( Columna , Fila ). Value = 1
Next
Next
For columna =1 To NCriterios
CP ( columna ,9). Value = 1
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Calcular_Puntaje
rem Permite calcular los puntajes
Poner etiquetas de totales
CP (0 , 11 + NFactores ). String = " TOTAL - FACTOR "
Calcular total de factores
For columna = 1 To NCriterios
TotalC = 0.00
For fila = 11 To 10 + NFactores
TotalC = TotalC + CP ( columna , fila ). Value
Next
CP ( columna , 11 + NFactores ). Value = TotalC
Next
Calcular puntajes
For fila = 11 To 10 + NFactores
PP = 0.00
For columna = 1 To NCriterios
Ponderacion = CP ( columna , 9). Value
Denominador = CP ( columna , 11 + NFactores ). Value
If Denominador > 0 Then
PP = PP + CP ( columna , fila ). Value / Denominador * Ponderacion
End If

20

Next
If PP > 0 Then
CP ( NCriterios + 1 , fila ). Value = PP
Else
CP ( NCriterios + 1 , fila ). Value = 0
End If
Next
Calcular porcentajes
PTot = 0.0
For fila = 11 To 10 + NFactores
PTot = PTot + CP ( NCriterios + 1 , fila ). Value
Next
For fila = 11 To 10 + NFactores
If PTot > 0 Then
CP ( NCriterios +2 , fila ). Value = CP ( NCriterios +1 , fila ). Value / PTot * 100.0
Else
CP ( NCriterios + 2 , fila ). Value = CP ( NCriterios + 1 , fila ). Value * 100.0
End If
Next
Calcular porcentajes acumulados
PAcum = 0.0
For fila = 11 To 10 + NFactores
PACum = PAcum + CP ( NCriterios + 2 , fila ). Value
CP ( NCriterios + 3 , fila ). Value = PAcum
Next
rem poner etiquetas
fila = 10
CP ( NCriterios +1 , fila ). String = " Puntaje "
CP ( NCriterios +2 , fila ). String = " %"
CP ( NCriterios +3 , fila ). String = " % Acumulado "
Cambiar el color de fondo
CP ( NCriterios +1 , fila -1). CellBackColor = 16750848
CP ( NCriterios +2 , fila -1). CellBackColor = 16750848
CP ( NCriterios +3 , fila -1). CellBackColor = 16750848
CP ( NCriterios +1 , fila ). CellBackColor = 10066431
CP ( NCriterios +2 , fila ). CellBackColor = 10066431
CP ( NCriterios +3 , fila ). CellBackColor = 10066431
CP (0 , fila + NFactores + 1). CellBackColor = 10066431
rem Ordenar los datos por puntaje de mayor a menor
Ordenar
rem Calcular % Acumulado
Porcentaje = CP ( NCriterios +2 , 11). Value
CP ( NCriterios +3 , 11). Value = Porcentaje
For fila = 11 To 9 + NFactores
Vlr_anterior = CP ( NCriterios +3 , fila ). Value
Porcentaje = CP ( NCriterios +2 , fila +1). Value

21

CP ( NCriterios +3 , fila +1). Value = Vlr_anterior + Porcentaje


Next
rem Optimizar anchura de columnas
For columna = 1 To NCriterios + 3
ACO ( columna )
Next
Poner_encabezados
Resaltar_puntaje
Seleccionar (1 ,4)
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Agregar_criterios
Sirve para agregar ms criterios de anlisis
rem Borar etiquetas de Puntaje y Porcentajes
For columna = NCriterios + 1 To NCriterios + 3
Borrar ( columna , 10)
Next
rem Borrar Puntaje y Porcentajes
For fila = 11 To 10 + NFactores
For columna = NCriterios + 1 To NCriterios + 3
Borrar ( columna , fila )
Next
Next
NCAgregar = int ( InputBox (" Ingrese # criterios a agregar " , " Agregar criterios " , 1))
rem limitar el nmero de criterios a agregar
If NCAgregar > 5 Then
NCAgregar = 5
End If
rem Poner etiquetas y ponderacin de nuevos criterios
Nuevo_criterio = NCriterios + 1
For columna = NCriterios + 1 To NCriterios + NCAgregar
CP ( columna ,10). String = " Criterio #" + Nuevo_criterio
CP ( columna ,10). CellBackColor = 10066431
CP ( columna ,9). Value = int (1)
CP ( columna ,9). CellBackColor = 16750848
Nuevo_criterio = Nuevo_criterio + 1
Next
rem Rellenar Nuevo criterio
For columna = NCriterios + 1 To NCriterios + NCAgregar
For fila = 11 To 10 + NFactores
CP ( columna , fila ). Value = 1
Next

22

rem Actualizar Nmero de criterios


CP (1 ,5). Value = NCriterios + NCAgregar
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Quitar_criterios
Permite quitar criterios de anlisis
NCQuitar = int ( InputBox (" Cuntos Criterios Desea quitar ?" , " Quitar criterios " , 1))
If NCQuitar >= NCriterios Then
NCQuitar = NCriterios -1
End If
rem Borrar etiquetas de puntaje y porcentajes
fila = 10
Borrar ( NCriterios +1 , fila )
Borrar ( NCriterios +2 , fila )
Borrar ( NCriterios +3 , fila )
rem Quitar encabezado de criterios eliminados
For Columna = NCriterios To NCriterios - NCQuitar +2 Step -1
CP ( Columna , fila ). String = ""
Next
rem Cambiar nmero de criterios
CP (1 ,5). Value = NCriterios - NCQuitar
rem Quitar relleno de columnas
For Columna = NCriterios +4 To NCriterios - NCQuitar +2 Step -1
For Fila = 9 To 11+ NFactores
Borrar ( Columna , Fila )
Next
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Agregar_factores
Da la posibilidad de agregar ms elementos para analizar
NFAgregar = int ( InputBox (" Cuntos Factores Desea agregar ?" , " Agregar factores " , 1))
rem limitar el nmero de factores a agregar
If NFAgregar > 5 Then
NFAgregar = 5
End If
rem agregar etiqueta

23

NFactor = NFactores + 1
For fila = 11 + NFactores To 10 + NFactores + NFAgregar
CP (0 , fila ). String = " Factor #" + NFactor + ":"
CP (0 , fila ). CellBackColor = 10066431
NFactor = NFactor + 1
Next
rem agregar relleno
For fila = 11 + NFactores To 10 + NFactores + NFAgregar
For columna = 1 To NCriterios
CP ( columna , fila ). Value = 1
Next
Next
rem modificar el nmero de factores
CP (1 ,4). Value = NFactores + NFAgregar
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Quitar_factores
Quita elementos
NFQuitar = int ( InputBox (" Cuntos Factores Desea quitar ?" , " Quitar factores " , 1))
rem Limitar el nmero de factores a quitar
If NFQuitar >= NFactores Then
NFQuitar = NFactores - 1
End If
rem Borrar la fila correspondiente
For fila = 11 + NFactores To 10 + NFactores - NFQuitar + 1 Step -1
For columna = 0 To NCriterios + 3
Borrar ( columna , fila )
Next
Next
rem modificar el nmero de factores
CP (1 ,4). Value = NFactores - NFQuitar
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Limpiar_Todo
Limpia toda la plantilla
EliminarR (1 ,9 ,101 ,109)
EliminarR (0 ,11 ,0 ,111)
Devolver un ancho predeterminado a las columnas

24

For Columna = 1 To 21
ACP ( Columna )
Next
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Sub Empezar
Genera el esquema para empezar a introducir valores
Limpiar_Todo
Generar_factores
Generar_criterios
Rellenar
rem Poner encabezados
Poner_encabezados
End Sub
rem * -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* sub Ordenar
Usa el Dispatcher de OpenOffice para ordenar los datos por puntaje
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rem define variables
dim document as object
dim dispatcher as object
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rem get access to the document
document = ThisComponent . CurrentController . Frame
dispatcher = createUnoService (" com . sun . star . frame . DispatchHelper ")
rem Agregar ms cosas
NFactores = CP (1 ,4). Value
NCriterios = CP (1 ,5). Value
Factor_ordenamiento = NCriterios + 2
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dim args1 (0) as new com . sun . star . beans . PropertyValue
args1 (0). Name = " ToPoint "
args1 (0). Value = " $A$11 "
dispatcher . executeDispatch ( document , ". uno : GoToCell " , "" , 0 , args1 ())
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dim args2 (0) as new com . sun . star . beans . PropertyValue
args2 (0). Name = " By "
args2 (0). Value = 1

25

dispatcher . executeDispatch ( document , ". uno : GoRightToEndOfDataSel " , "" , 0 , args2 ())
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dim args3 (0) as new com . sun . star . beans . PropertyValue
args3 (0). Name = " By "
args3 (0). Value = 1
dispatcher . executeDispatch ( document , ". uno : GoDownToEndOfDataSel " , "" , 0 , args3 ())
rem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dim args4 (7) as new com . sun . star . beans . PropertyValue
args4 (0). Name = " ByRows "
args4 (0). Value = true
args4 (1). Name = " HasHeader "
args4 (1). Value = true
args4 (2). Name = " CaseSensitive "
args4 (2). Value = false
args4 (3). Name = " NaturalSort "
args4 (3). Value = false
args4 (4). Name = " IncludeAttribs "
args4 (4). Value = true
args4 (5). Name = " UserDefIndex "
args4 (5). Value = 0
args4 (6). Name = " Col1 "
args4 (6). Value = Factor_ordenamiento
args4 (7). Name = " Ascending1 "
args4 (7). Value = false
dispatcher . executeDispatch ( document , ". uno : DataSort " , "" , 0 , args4 ())
end sub

26

You might also like