Excel
Excel
Excel
Ejemplar GRATIS puesto en el grupo del autor Alejandro Quiceno Garca Excel Audi en Facebook: http://www.facebook.com/groups/excelaudi en la carpeta Dropbox de Alejandro Quiceno Garcia, http://dl.dropbox.com/u/84242760/ExAp.pdf y divulgado a travs de articulo del portal Actualicese.Com Solo te pido a cambio que me colabores haciendo clic en ME GUSTA de la pgina Web Excel Audi en Facebook, en el siguiente enlace: http://www.facebook.com/pages/Excel-Audi/171798466208956 Los archivos ejemplo los encuentras en la pestaa Archivos del grupo Excel Audi, clic aqu: https://www.facebook.com/groups/excelaudi Suscribete al blog Excel Audi: http://alejandroquiceno.blogspot.com Nuevos Temas y artculos se encuentran en el blog. Si lo deseas puedes agregarme a Google+: https://plus.google.com/101184250043663234023/ Twiter: http://twitter.com/excelaudi
El libro es gratis para todos pero no lo subas a ningn otro sitio en Internet. Si alguien lo quiere invitalo que se una al grupo Excel Audi. http://www.facebook.com/groups/excelaudi Por favor no subas este material a otro sitio web distinto al grupo Excel Audi en Facebook o carpeta Dropbox de Alejandro Quiceno. Si deseas compartir el libro copia y pega este enlace en tu email o sitio web: http://dl.dropbox.com/u/84242760/ExAp.pdf Dado que tengo los derechos de autor puedo tomar accin legal y solicitar apoyo a los Web Master de los sitios en los que se encuentre el archivo como tal subido sin autorizacin expresa.
http://www.excelaudi.com
Lo mejor que puedes hacer por los dems no es ensearles tus riquezas, sino hacerles ver la suya propia.
Goethe
Grn dramaturgo Alemn
Introduccin Breve Historia de la Hoja de Clculo El Lanpar, la primera hoja de clculo Llega el Visicalc Aparece la hoja electrnica Lotus 1-2-3 Que es Excel? Historia del Excel Las primeras macros El lenguaje de las Macros XLM Excel 5 Excel 97 Excel 2000 Excel 2002 Excel 2003 Excel 2007 Introduccin a las macros Que es una macro Para que nos pueden servir las macros Como podemos usarlas Como podemos grabar las macros El grabador de macros La importancia de organizar la informacin en base de datos Tcnicas y funciones de Excel ms utilizadas en la depuracin de archivos planos Buscar y Reemplazar Ir a especial - Celdas en Blanco Que hacer cuando la tcnica de rellenar celdas no funciona Filtros Ordenar los datos Funciones de uso frecuente Funcin Si Funcin Izquierda Funcin Derecha Funcin Extrae Funcin Concatenar Funcin Espacios Funcin Texto Funcin Valor Funcin Hallar Funcin Sustituir Funcin Mayscula Funcin Minscula Funcin Nompropio Funcin Largo Funcin BuscarV
Pag 9 14 14 15 16 17
18 19 19 20 20 21 21 21 23 23 24 25 25 34 36 48 56 67 73 84 86 87 88 89 90 91 92 95 95 96 96 97 98 98
Realizar la bsqueda con BuscarV en varias tablas al mismo tiempo Como hacer un doble BuscarV Triples, cuadruples BuscarV Complicando ms las cosas Buscando Items incorrectos o desconocidos entre dos tablas Funcin ndice Funcin Coincidir Funcin Sumar.Si Funcin SumaProducto Suma como Saldo Total Suma anidando la funcin ndice y Coincidir utilizada en un presupuesto Suma con la Funcin Desref Funcin BdContar Funcin BdContarA Funcin BdExtraer Funcin BdMax Funcin BdMin Funcin BdSuma Funcin BdPromedio Funcin Carcter Funcin Elegir La falencia de la funcin =BuscarV Funciones o Formulas Matriciales Formulas que devuelven un solo valor Como ingresar una formula matricial Como se forma la matriz de informacin Operaciones Lgicas con Formulas Matriciales Armando una matriz para funciones que no trabajan como matriciales Formulas que a su vez devuelven una Matriz Algunas Funciones Matriciales de Utilidad Formulas Matriciales Vs Formulas Normales Ejemplo prctico de formulas matriciales sobre una base de datos Pase de asientos de libro diario a libro mayor Usando formulas matriciales para hacer la explosin de produccin Como corregir las fechas, de texto a Excel y de Excel a Texto Arreglando las fechas mediante la herramienta Texto a Columnas De Fecha Excel a Fecha Texto Tcnicas que conviene saber Copiar una hoja Mostrando los nmeros en formato de miles Montando Subtotales Una forma de revisar los nmeros consecutivos Asignar nombres a los rangos, celdas o tablas El formato condicional Formato condicional en Excel 2007 Encontrando las transacciones de la ULTIMA SEMANA Usando conos para marcar valores
103 104 105 106 108 109 112 115 118 119 120 121 126 128 129 131 133 135 137 139 141 142 145 145 146 148 149 150 150 151 152 154 157 165 166 167 169 173 182 186
Barras de datos Montando ICONOS solo al Top 10% Usando Formato Condicional en Excel 2003 Encontrando valores duplicados o valores nicos. Encontrando duplicados en Excel 97-2003 Encontrando valores UNICOS en Excel 2003 Usando filtro avanzado para encontrar valores nicos. Usando una tabla dinmica para encontrar registros nicos. Utilizando la herramienta REMOVER DUPLICADOS en Excel 2007 para encontrar los registros UNICOS Ms de formato condicional - Duplicados Primera ocurrencia Duplicados Primera ocurrencia en Excel 2007: Duplicados todas las ocurrencias
193 195 198 201 204 206 207 207 209 212 213 215 218 220 224 226 227 229 230 231 234 235 235 235 236 237 237 238 239 240 241 246 250 252 253 255 256 258 260 261 263 265 267 269 270 271
Ms de formato condicional:
Montando un Formato condicional que nos coloree la celda QUE CRUZA CON OTRA TABLA Ms de formato condicional: Comparar la celda correspondiente con otra hoja Ms de formato condicional: Mximos en fila y en columna Validacin de datos Validacin Bsica Validacin de datos de lista Lista desplegable desde otra hoja de clculo Doble lista desplegable Validacin de Fechas Validacin de longitud de texto Validacin personalizada Validar si los datos entrados suman el valor requerido Validacin de formato y solo nmeros entre 0 a 100 Validacin para prevenir registros duplicados Validacin para prevenir que se llenen registros fuera de cada fila Validacin para controlar que ingresen solo nmeros o solo texto Validacin para controlar que no dejen casillas en blanco Analizando informacin con Tablas Dinmicas Como se necesita tener la informacin para armar una tabla dinmica Armando una tabla dinmica en Excel 97-2003 Armando la tabla dinmica en Excel 2007 Cambiando la tabla dinmica usando el botn Agregar a en Excel 97-2003 Modificando la tabla dinmica en Excel 2007 Cambiando las celdas que se ven en blanco por ceros Cambiando la tabla dinmica en Excel 2007 arrastrando los campos de manera similar a Como lo haca en Excel 2003: Mostrando dos o ms campos en la zona de datos Agrupando campos de fecha Removiendo los campos de la tabla dinmica Creando un Reporte Especfico usando el cuarto elemento del panel: El filtro de Reporte Mostrando el TOP de los 10 mejores Como se sacan los 10 mejores en Excel 2003 Ordenar y Filtrar en Excel 2007 Extractando informacin detallada de los campos de la tabla dinmica (Drilling Down) Tablas dinmicas y el recalculo de informacin. Limitaciones de las tablas dinmicas Ms de tablas dinmicas:
Operaciones diferentes a Suma Llevando ms campos a la tabla dinmica: Ms de tablas dinmicas: Porcentajes de Participacin Ms de tablas dinmicas: Acumulados Ms de tablas dinmicas: Participacin porcentual Ms de tablas dinmicas: Crecimiento en Valor y en Porcentaje Ms de Tablas Dinmicas: Campos Calculados Ms de Tablas Dinmicas: Elementos Calculados Ms de tablas dinmicas: Cruces de informacin. Ms de Tablas dinmicas: Desactivar la opcin GETPIVOTDATA. Ms de Tablas dinmicas: Armando tablas dinmicas que leen ms de 1.048.576 filas de Excel
272 277 283 285 286 287 287 293 302 306 312
Automatizando las tareas con Excel VBA Otorgando el permiso necesario para que el cdigo de las macros corran o se ejecuten en su computadora Insertando el modulo VBA en su libro de trabajo Escribiendo y corriendo una macro Una macro que recorra todos los registros de la hoja de Excel Como referenciar las celdas en el recorrido Referenciar la fila completa usando CELLS Referenciar un rango rectangular usando CELLS Macro que nos colorea cada tercera fila de rojo Tomando decisiones basados en los valores hallados en la fila Trabajando con un nmero desconocido de Filas Trabajando con Otras Hojas de Clculo Recorriendo todas las hojas de clculo Usando el grabador de macros para aprender otro cdigo Lo que hay que tener en cuenta del grabador de macros Ir hasta la ltima celda con informacin Desplazarnos a partir de una celda sin necesidad de seleccionarla: Algo ms sobre la instruccin ActiveCell.Offset Ejecutar una macro paso a paso Las variables El procedimiento DO UNTIL Haciendo Un DO UNTIL combinado con variables temporales que nos montan una formula tal como =SUMA() Analizando el problema porque la Macro de tabla dinmica en Excel 2007 no corre. Haciendo que la macro que nos haga el recorrido con las variables de los rangos de inicio y final de cada bloque de valores de cada una de las cuentas. Algunas tcnicas para depurar los archivos planos Depurando el balance de comprobacin por terceros Creando la macro que depura el balance de comprobacin por terceros Referencias Agradecimientos
320 321 325 326 329 330 330 331 331 332 334 335 336 337 339 340 342 345 346 348 355 356 360 364 378 379 401 451 452
Introduccin "He aqu yo os envo como a ovejas en medio de los lobos; sed pues, prudentes como serpientes y sencillos como palomas" Mateo 10, 16: Esta cita del apstol Mateo ms de uno la conoce, adems es frecuente que el da del Contador se enven tarjetas o correos electrnicos emails- conmemorativos incluyendo esta cita Bblica. Puede que suene bastante dura si la aplicamos a la actividad del Auditor, pues implcitamente se est indicando que los lobos estn en las organizaciones, lo cual es una fuerte aseveracin si se tiene en cuenta que las relaciones de los hombres se basan en la buena Fe. Pero quien ha estado en Auditora, sabe que se debe pensar colocndose en los zapatos del sujeto que presuntamente pudiera tener la alevosa y la premeditacin, -as no exista dicho sujeto- para poder realizar hallazgos o hacer recomendaciones. Mxime si en la organizacin auditada se cuenta con la infortuna de dar con algunos personajes que procuran de alguna manera que no se encuentren pruebas, pues son un riesgo para su trabajo o su fuente de ingresos extra. Una tctica es empapelar o Atiborrar de documentos al Auditor. Quien ha trabajado en Auditora Interna sabe que la diferencia con la Auditora Externa es mucha. Nada mas piense que por lo general se tienen pocas horas para auditar cierta rea y encima de todo, solo una muestra. Pero no solo eso; los lobos en sentido figurado pueden ser otros tales como el lobo del trabajo bajo presin, el cual es en mi opinin el mayor de todos, pues en medio de los afanes las cosas a veces quedan mal hechas, (adems la intensidad horaria laboral deteriora tu vida personal), si no se poseen metodologas o ayudas que le permitan ser mejor en lo que se hace. (O el lobo de la negligencia, la
displicencia, la codicia, la pereza, el vicio o la corrupcin, estos ya no son lobos propios sino demonios propios, por no ir ms all todava y hablar de perseguir una mejor calidad de vida a toda costa, o an la misma esperanza de ser un da ricos ricos? En que sentido?- son demonios ms peligrosos que nos incitan a que empeemos nuestro futuro, y con ello peligrosamente estar en la posibilidad de que, abrumados por las deudas perder el dominio de un criterio claro. Recordemos que la Biblia en Proverbios 22 nos ensea que De ms estima es el buen nombre que las muchas riquezas, y la buena fama que la plata y el oro. Ms adelante, en el versculo 7, apunta que El deudor es sirviente del prestamista. As pues, ojo con eso). Quienes estamos en esta actividad, sabemos lo crtico y el sumo
riesgo que se asume al opinar sobre los Estados financieros. Cuando revienta una situacin el primero que sufre las consecuencias es el Auditor o Revisor Fiscal, y por ms que el dictamen indique que la produccin de los Estados Financieros es responsabilidad de los administradores, eso no lo salva de que le corten o renueven sus servicios de asesora. Despus de ellos, las miradas recaen en los administradores que resulten implicados. Recordemos que cuando estallaron los fraudes en EEUU de Enron y Worlcom entre otros, fueron tan graves que dieron al traste con la existencia de la multinacional de Auditora nmero uno del mundo, Arthur Andersen.
Este es un libro que aborda la utilizacin del Excel en la labor del Auditor, del Contador y del Administrador. Es un libro hecho desde la experiencia del da a da hacia Excel. La cantidad de criterios, preferencias, perspectivas, estilos de presentar o necesidad de presentar la informacin, hace que sea muy difcil satisfacer las necesidades de los usuarios a la hora de confeccionar sus informes o los reportes que exigen. Esta situacin hace que se llegue a la situacin de bajar o de descargar un listado que estaba destinado a imprimirse a Microsoft Excel, y a partir de Excel es que se comienza a trabajar. Las maneras de trabajar los listados bajados en archivo plano a Excel poco se ensean y en la vida real, he podido observar casos extremos en los que el desconocimiento de las herramientas y metodologas que se pueden implementar a travs de Excel, hacen que incluso se disponga de una persona dedicada a organizar la informacin del archivo plano durante algunos das. (Mayor costo de mano de obra en la
oficina. Y cuando no hay apoyo?) Es aqu en donde el conocimiento del manejo de este maravilloso
aplicativo hace la diferencia entre un profesional y otro. Esta labor tan manual, que supone una dedicacin de tiempo a tal punto que no se justifica que un profesional que ha invertido tanto tiempo en su formacin -frecuentemente universitaria- termine dedicando horas depurando y organizando la informacin de archivos planos an mas que las actividades propias de su profesin, en lugar de emplearlas para lo que realmente fueron contratados: Actividades que apoyan la Visin y la Misin empresarial, pero que dada la cantidad de prerrogativas terminan creando un cuello de botella que solo alcanza a dar un mnimo cumplimiento a las necesidades Gerenciales. Otra razn ms poderosa an para aprender a trabajar los listados bajados como archivo plano a Excel, sobretodo para los Auditores y Revisores Fiscales, es el hecho de dar cumplimiento en Colombia al Artculo 37 de la Ley 222 de 1995 Cifras fielmente tomadas de los libros y previamente confirmadas . Para confirmar, lo mejor sera tomar los libros oficiales o los listados auxiliares, bajarlos tal cual como son a Excel, es decir, originales, (para que luego no digan que uno se ha inventado las cifras) dejarlos en una hoja de clculo intactos, (Pues en el listado consta la fecha y hora de generacin del listado, una foto de la situacin contable), hacer una copia del listado o reporte original en una hoja anexa y sobre ella depurar la informacin; es decir, limpiarle todas las rayitas y encabezados de listado que no le facilitan a Excel hacer clculos sobre ella: Convertirla en una base de datos y con esta base, si comenzar a cruzar con la informacin detallada de los mdulos de cartera, o de inventarios, u otros sistemas o aplicativos, ver si ambas bases se conversan como se suele decir. Todo esto se puede hacer muy rpidamente con la ayuda de Excel. Por rpidamente me refiero a minutos, sino segundos. No saber buen Excel para un Contador, Auditor o Administrador, puede ser una seria desventaja competitiva, incluso tan grande como lo es no saber Ingls. Pero saberlo manejar, es una maravilla. Sobre todo el tema de las macros de Excel. Es por eso que este libro no le ensea las herramientas bsicas de Excel. En el mercado ya hay muy buenos libros que lo pueden llevar de la mano y superar el nivel bsico. Adems en Internet hay manuales sobre Excel bsico muy buenos (como la biblia del excel 2007 o 2010) que puede descargar gratis en Acrobat (Los documentos Acrobat son los archivos con extensin .Pdf) a su computadora. Este libro propende por mostrarle maneras de trabajar la informacin, temas que hacen la diferencia en relacin con los dems textos del mercado y recursos disponibles en Internet. Tambin es importante decir que para un Profesional de las ciencias de la administracin puede ser una tortura tener que depender de otras reas -como informtica-, al momento de trabajar grandes cantidades de informacin. Yo le aseguro que en cuanto le comience a encontrar el gusto al buen Excel, encontrar que su dependencia del rea de informtica descender tremendamente, pues ya no necesitar que le hagan consultas a la base de datos o que le creen desarrollos con todo lo que ello supone, (Sobretodo el costo, pues crear y hacer algo nuevo nunca es gratis, con el consecuente impacto en el Presupuesto) y antes evaluar el trabajo que normalmente ellos hacen. Por ejemplo, en una plataforma JDEdwards o BPSC que corre sobre el viejo pero poderoso AS/400, los mdulos (Facturacin, Cartera, Inventarios, etc.) manejan tanta informacin que viaja hacia la contabilidad, que saber, poder decir, meter las manos a la candela y asegurar, que todo lo que est en la contabilidad es 100% todo lo del mdulo es una afirmacin que no se hace, no se puede hacer a la ligera. Sin embargo, se debe de estar en condiciones de poderlo verificar y por lo tanto asegurar. En cuanto sepa cmo hacerlo (manualmente en minutos, o en segundos mediante macro), y en cuanto detecte transacciones que no viajaron hacia la contabilidad, o cualquier otra inconsistencia, una sonrisa aparecer en su rostro cuando le demuestre a los de informtica, por ejemplo, que algunas partidas o porciones de informacin se quedaron volando y no se asentaron correctamente en la contabilidad. Las casas de software se han puesto las pilas en este sentido y ahora propenden por sacar versiones en las cuales ya no hay procesos de interfaces entre los mdulos y la contabilidad, propenden porque
10
las transacciones queden en lnea, pero el usuario final poco cambio detecta en este sentido, por lo tanto es un cambio que poco se valora porque en ultimas no tendra porque hacerlo, pues el programa contable DEBE en todo momento y COMO SEA, asegurar la informacin. El potencial de Excel es tan grande, que un libro que lo abarque todo sera una enciclopedia por lo menos de 5 tomos. Hay manuales de Excel-macros en Ingles que superan las mil pginas. Es por eso que me centro en los temas que considero son los ms relevantes para los profesionales de las ciencias de la administracin. El libro se enfoca en los archivos planos del sistema contable CG1, pues como profesor, noto la gran cantidad de compaas que lo usan, es por eso que a su vez me centro en las metodologas que utilizan a la hora de trabajar la informacin de los archivos planos. Por otra parte, la experiencia me indica que para las reas contables es difcil liberar tiempo para tomar clases, ms an para asistir a seminarios de Excel. Nada ms el tema del trfico, (solo por citar uno de los inconvenientes), el stress del desplazamiento, lo absorbente del trabajo, es para matar cualquier intencin. Estamos en un corre-corre tenaz, incluso entre la espada y la pared. Los contadores deben soportar transacciones de ltima hora an despus de cierre y encima de eso, producir los Estados Financieros a la velocidad de la Luz, un pulmn respirndole en la nuca diciendo: Quiubo Ya?. Si no lo sabe an, este libro le dar algunas bases para que comience a generar esos reportes con mucha rapidez. Pero deber hacer un esfuerzo, romper un poco sus hbitos, armarse de paciencia, ir aprendiendo, ensayando y con mucho cuidado introducir las nuevas metodologas, que deber probar, o ejercitarse en ellas antes de implementarlas, para no pasar ratos desagradables con su jefe. El libro cuenta con el apoyo que el autor del libro presta en la comunidad de Excel Audi, (antes Excel Mquial)
http://www.facebook.com/groups/excelaudi/
11
Mi nueva pagina web es http://www.excelaudi.com An est en construccin, asi que si la digita lo devolver hacia google mientras la termino de configurar. Mientras tanto, lo invito a que me escriba a mi email [email protected], o se una al nuevo grupo de Facebook que le indicaba anteriormente:
http://www.facebook.com/groups/excelaudi/
12
Solo los profesionales de hoy que hagan un esfuerzo y propendan por aprovechar el potencial de la herramienta que siempre ha estado desde cuando eran adolescentes, podrn hacer la diferencia e imponerse a los dems. Y no debern temer que lleguen firmas de auditora del exterior quebrando precios pues ustedes de la mano de Excel los podrn bajar an ms. En sus manos siempre ha estado el poder para hacer Inteligencia de Negocios y Contabilidad Forense, solo por citar algunas actividades. Espero que el libro sea de tu agrado y me colabores adquirindolo y dndolo a conocer con tus amigos y colegas. Tambin te pido de todo corazn que me ayudes a combatir el problema de la piratera. No permitas que el libro se fotocopie. Si lo haces, estars destruyendo la ventaja competitiva que adquieres, lo que te diferencia de los dems, la posibilidad de mejorar y diferenciar tu talento la hechas por la borda, y con todo lo que ello implica, me perjudicas tremendamente. Este proyecto lleva ms de un ao, te aseguro que si hubiera nacido en cuna de oro seguramente no hubiera escrito un libro de estos, pero la necesidad es la madre de la industria. Apelo a tu sentido tico y profesional para que me ayudes en esta gesta. Espero que este trabajo rinda sus frutos para poder continuar con la labor pedaggica de seguir enseando y escribiendo libros de Excel, que cubran otros temas igualmente importantes en la organizacin. Me doy cuenta de la cantidad de talento que tenemos entre nosotros. Las nuevas generaciones del play station y el nintendo ya han crecido y vienen pidiendo pista, vidos de demostrar que son lo mejor de lo mejor. El Contador y el Administrador del Futuro es aquel que es en todo momento resolutivo y a la manera de los paisas, no preguntan Y ahora que hacemos? sino que piensan en cmo solucionarlo. No ha notado que en nuestra profesin, los inconvenientes y los problemas son lo que nos da de comer? Profesionales con una proactividad pasmosa, que no son esclavos del tiempo ni de la costumbre, que no los atan los hbitos laborales sino que encuentran las mejores metodologas para realizar todo mucho mejor, ms rpido, incluso ms bonito y a cambio de mas econmico, el mayor volumen rendir y crear a su vez mayor valor. Profesionales que cuando el jefe va, ellos ya han vuelto, y cada vez generan mayor valor agregado al trabajo. Nada le quedar Grande al Contador. Antes por el contrario, comenzar a rerse de todas las adversidades. El Contador de este siglo XXI integrar ms conocimiento de sistemas a su haber y verdaderamente, en lugar de trabajar principalmente para la administracin de Impuestos, apoyar a la organizacin presentando informes acertados y oportunos para una efectiva toma de las decisiones. Comienza dando ese primer paso o reafirmndolo si ya ests en la senda, retoma la capacidad creadora que poseemos todos los seres y deslgate poco a poco de la actividad hacedora. No olvides cuestionar, validar y verificar constantemente. Finalmente te comparto esta cita milenaria del sabio Lao-Ts, que nos dej en su libro El Tao-T-
King:
Para gobernar las cosas el mejor consejo es ser sobrio. El ser sobrio equivale a ser previsor. El ser previsor equivale a estar preparado y fortalecido. Estar preparado y fortalecido equivale a poseer una capacidad infinita. Y poseer una capacidad infinita es ser siempre afortunado
13
Breve Historia de la Hoja de Clculo. Para saber adnde vas, debes saber de dnde vienes, reza cierto proverbio judo. (Informo que no lo soy y que no tengo ningn problema con la diversidad religiosa) . Y en el tema del Excel, es importante conocer, por lo menos en forma resumida, toda el agua que ha corrido antes que Usted afortunadamente se interesara por este aplicativo. Considero que no se ha hecho la debida justicia al reconocerle a los Contadores por lo menos haber sentado las bases de lo que sera la hoja de clculo. Economistas y Contadores acadmicos la promovieron mucho antes de que la generacin de expertos en computadores de los aos 60 estuvieran interesados en las hojas de clculo electrnicas. Quizs habrn odo hablar a nuestros amigos Contadores de la vieja guardia, como se trabajaba antes con unas Superhojas Multicolumnarias muy grandes, con las cuales se registraba manualmente la informacin. Estas hojas formaban los libros Contables y los haba para todos los casos. Estas Grandes hojas, frecuentemente denominadas Matriz de informacin (palabra clave) eran y an son hoy en da en sitios en los cuales no llega la tecnologa an- la base del sistema de informacin. Pues bien, esta nocin de Matriz, nos sirve para retroceder an ms en el tiempo, para reconocer que las matrices han sido empleadas por los contadores desde hace cientos de aos. La historia registra (seguramente la tendencia fue fuerte entre los expertos del tema de la poca, pues no todos los doctos gustan de documentar o divulgar su conocimiento tan duramente logrado, pues el conocimiento duramente adquirido es un tesoro con el cual agregas valor y te diferencia de tu competencia) que fueron las matrices contables de De Morgan (1846), Rossi (1889) y Gomberg (1927) y las aplicaciones en lgebra de matrices por Leontief, Frich y otros; una etapa posterior corresponde al intento, a finales de los aos 1950 y 1960, para generalizar la hoja de clculo y aplicarla sistemticamente, junto con el lgebra de matrices a los negocios contables y financieros. El profesor Richard Mattessich en 1961 impuls el desarrollo de matrices computarizadas para su utilizacin en la contabilidad empresarial. Desde aqu se establecieron 3 direcciones diferentes: (1) La computarizacin de la hoja de clculo y la simulacin del presupuesto, as como el principio de los sistemas de contabilidad electrnicos para los macrocomputadores; (2) La aplicacin del lgebra de matrices a varios problemas de contabilidad de costos y contabilidad financiera, as como a la integracin de bases de datos contables con sistemas de bsqueda; (3) La axiomatizacin de sistemas contables que trajeron como consecuencia la estructura o marco conceptual de la Junta de Normas de Contabilidad Financiera en Estados Unidos (FASB) y en otros cuerpos emisores de normas de contabilidad. Pero el nfasis para la hoja de clculo fue dado en la primera direccin, (la simulacin del presupuesto). Informacin detallada de esto que le menciono, si le interesa profundizar, puede buscar en Internet el documento Spreadsheet-Malaga-LV.pdf. Aparece la primera hoja de clculo del mundo: El LANPAR Posteriormente la historia registra que en 1969 se cre el LANPAR LANguage for Programming Arrays at Random. La cual fue la primera hoja de clculo del mundo. Coinventada y desarrollada por Rene Pardo y Remy Landau, los cuales la disearon y la vendieron a Bell Canada, AT&T y las 18 compaas operadoras de telfono a travs de Estados Unidos, adems de la planta de General Motors en Michigan. Fue inventada por la necesidad que la compaa Bell Canada y AT&T tenan con el presupuesto, pues deban cambiar los datos de por lo menos 2.000 casillas en sus formas presupuestales, y el plazo de espera que deban soportar los grupos del departamento de servicios de informacin para reescribir el software en el lenguaje Fortran era de 6 meses a 2 aos. Pardo y Landau sentan totalmente que esta programacin deba estar en las manos de los usuarios ms que en los Ingenieros de sistemas. ( Sper!!!!) Usando LANPAR, el Seor Art Smith de Bell Canad,
14
estuvo en capacidad de programar y hacer TODOS los clculos necesarios en toda la aplicacin, por si mismo en tan solo un fin de semana. (No le suena tan familiar y repetitiva esta historia?) Ren Pardo y Remy Landau, tampoco fueron ajenos a la larga lucha por lograr la patente, solo la obtendran en agosto de 1982 despus de largos pleitos y por supuesto despus de todo ese tiempo, el costo de la oportunidad, la imposibilidad de haber lanzado formalmente su producto al mercado potencial. Esta informacin la puede ver en ingls en la pgina web de Ren Pardo.
Llega VisiCalc Los medios indican que los trabajos de Pardo y Landau no tuvieron influencia directa en el desarrollo del trabajo de Dan Bricklin, creador del programa Visicalc. La idea se le ocurri en 1978 a Dan Bricklin a raz de un caso que deba resolver en la universidad de Harvard y decidi programarlo en lenguaje BASIC. Como resultado, obtuvo una hoja de clculo capaz de manipular 5 columnas y 20 filas. Como es visto lo nfima que era, le pidi ayuda a Bob Frankston, Ingeniero del MIT (Massachusetts Institute of Technology) con el fin de expandir la hoja electrnica. Posteriormente en otoo de 1978 se les unira Daniel Fylstra, tambin del MIT y de la escuela de negocios ($) de Harvard. Como es natural, Fylstra vio el potencial comercial de la aplicacin si la hacan correr en un microcomputador Apple. Los tres fundaron en enero de 1979 Software Arts Corporation y comenzaron a mercadear Visicalc, (Visible Calculator). La empresa de Daniel Fylstra llamada Personal Software se convirti en Visicorp; vendi casi un milln de copias del aplicativo. Aparece la hoja electrnica Lotus 1-2-3 Posteriormente en los 80 entrara Match Kapor como diseador y gerente de producto de Visicorp, y desarroll los programas Visiplot y Visitrend, los cuales vendi a los socios de la empresa por un milln de dlares. Con estos recursos, mas el apoyo del inversionista Jonathan Sachs, fundaron Lotus Development Corporation, para comercializar el producto que Kapor haba desarrollado, el Lotus 1-2-3. En poco tiempo super a Visicalc. Integr graficacin y manejo de bases de datos, asignar nombres a las celdas, definir rangos y hacer macros. Con el xito obtenido, al poco tiempo compraron Software Arts y descontinuaron Visicalc, pues en su opinin Lotus 1-2-3 era superior a Visicalc. La seleccin natural del sistema capitalista en accin. Luego llegaron una multitud de hojas de clculo, quizs las de mayor recordacin fueron SuperCalc, Qpro y Excel. En la batalla que seguira en los frentes legal, venta de empresas, participacin de mercado entre otros, finalmente ganara Excel, la cual es hasta hoy el estndar universal de las hojas de clculo. Lo que tanto critican algunos hoy en da, es lo que hizo que se impusiera sobre las dems: el continuo desarrollo y mejora del producto, los cuales eran mucho ms rpidos que los de la competencia, y los usuarios vean con expectativa las nuevas funcionalidades del software.
15
16
Que es Excel? Esta es mi definicin de lo que es Excel: Es el nombre de una aplicacin desarrollada por la Corporacin Microsoft, (Empresa creada por el famoso Bill Gates) de tipo hoja de clculo que viene integrada en la suite de aplicaciones de computador para la oficina, ms conocida como Microsoft Office, de la que se sirve todo aquel que necesite crear informes, manejar o administrar o capturar y guardar (o todas las anteriores) gran cantidad de informacin y con base en ella realizar anlisis, efectuar gran cantidad de clculos y reclculos, los cuales sin una hoja electrnica o Excel que es la mejor de ellas, sera ms complejo y dispendioso. Por esta razn son los Administradores de Empresas, Ingenieros, Contadores, Auditores, Financieros, Economistas, profesiones y actividades similares de apoyo (Task force) los que han encontrado en Excel su mejor aliado. Veamos la definicin de Wikipedia, la enciclopedia gratis de internet: http://es.wikipedia.org/wiki/Microsoft_Excel
17
Historia del Excel Excel hizo su debut en 1985 en los computadores Macintosh de la Compaa Apple (los Mac fueron los primeros computadores personales y an hoy siguen siendo en mi opinin los mejores y los ms elegantes, pues su arquitectura no facilita entre otras cosas que les entren virus) y nunca perdi su posicin como la aplicacin de tipo hoja de clculo ms popular de los Mac. En 1987, Excel se incorpor a los PC (Personal Computers Computadores personales que seran la competencia ms seria de los Mac, pues colocaron el PC al alcance de un nmero mayor de personas, el computador personal dejaba de ser una mquina solo para las clases pudientes y se acercaba cada vez ms a una poblacin cada vez mayor). El sistema operativo de los PC de IBM fue el D.O.S (Disk Operating Sistem) y posteriormente Windows, ambos desarrollados tambin por Microsoft. A Excel le tom algunos aos sobrepasar a Lotus 1-2-3, la cual fue una de las aplicaciones ms exitosas en la historia de la computacin. Como veamos en la historia de la hoja de clculo, un gran nmero de hojas de clculo disfrutaron el xito antes de que IBM realizara el PC en 1981, entre ellas, estaban VisiCalc y Multiplan. Multiplan fue el predecesor de Excel, y usaba el sistema de notacin de filas y columnas R1C1 (Row 1, Fila 1 Column 1, Columna 1: referenciaba las celdas por sus coordenadas de filas y columnas) y an hoy se encuentra disponible como una opcin de notacin en Excel. Pero fue el Lotus 1-2-3 el que se dispar al estrellato muy poco despus de su debut y vino a dominar el mercado de la hoja de clculo de la computadora personal. Las primeras macros 1-2-3 fue la primer hoja de clculo que ofreci grficos e integracin con bases de datos en un solo paquete. Sin embargo, la principal razn de su xito fue la posibilidad de grabar macros. La historia cuenta que los desarrolladores del 1-2-3 colocaron las macros para depurar y probar el mecanismo del producto, y ellos mismos cuentan que slo se dieron cuenta del potencial de las macros a ltima hora, y las incluyeron en la liberacin final del producto por si acaso. Sea cual sea el origen de las macros, las macros le dieron a los No-Programadores una manera sencilla de llegar a ser programadores y automatizar las hojas de clculo. Los usuarios NoProgramadores tomaron la oportunidad y desde entonces la han aprovechado, por fin tuvieron una medida de independencia del departamento de Informtica. Las macros originales del 1-2-3 realizaron las tareas ejecutando las mismas teclas que un usuario utilizara para llevar a cabo la misma tarea. Fue, por lo tanto, muy sencillo crear una macro porque no haba virtualmente nada nuevo de aprender sobre el progreso de la manipulacin normal de la hoja de clculo a la manipulacin programacin. Todo lo que ha haba que hacer era recordar que teclas presion y anotarlas. Las nicas concesiones a la programacin tradicional fueron ocho comandos u rdenes extra tales como el comando /x. Los comandos /x proporcionaron una manera primitiva de toma de decisiones que poda ser ingresada por el usuario y una manera de construir mens. Uno de los mayores problemas de las macros del 1-2-3 fue su vulnerabilidad. Todava no se haba inventado el libro con varias hojas de clculo y las macros se tenan que escribir directamente en las celdas de la hoja de clculo, junto con los dems datos que all haba. Las macros estaban a merced del usuario; por ejemplo si se insertaban filas o columnas, esto afectaba el cdigo. Tambin estaban a merced del programador, pues si se organizaban los datos de la hoja de clculo se afectara tambin el cdigo. A pesar de los problemas los usuarios revelaron su nueva capacidad de programacin y millones de lneas de cdigo fueron escritos en este lenguaje de programacin, utilizando tcnicas recursivas para superar las limitaciones. Muchos dependieron de cdigo que a menudo se diseaba mal, mal documentado y sumamente vulnerable.
18
El lenguaje de las Macros XLM Las primeras macros de Excel requeran que se escribieran en una hoja para macros que se grababa en un archivo de extensin .xlm. De esta manera las macros se guardaban de manera separada de la hoja de clculo, la cual se grababa en un archivo con extensin .xls. Hoy, uno se refiere a estas macros como las XLM macros, o las Macros de Excel 4, para distinguirlas del lenguaje de macros VBA que se introducira en la versin 5 de Excel. El idioma de las macros Xlm consista en llamar las funciones organizadas en columnas de la hoja macros. Haba cientos de funciones necesarias para proporcionar todas las caractersticas de Excel y lograr el control programtico. El lenguaje XLM fue mucho ms sofisticado y poderoso que el idioma de macros del 1-2-3, aun que las versiones 2 y 3 del 1-2-3, pero el cdigo producido no era muy inteligible. La sofisticacin del lenguaje de las macros de Excel fue una espada de doble filo. Apel a quienes tuvieran mejores aptitudes para programar, pero fue una barrera para la mayora de los usuarios. No haba relacin sencilla entre la manera que se operaba manualmente el Excel y la manera en que se programaba. Aprender rpido implicaba dominar el lenguaje XLM. Otra barrera para la aceptacin del Excel en la PC era que este requera Windows. Las primeras versiones de Windows estaban restringidas por el limitado acceso a la memoria de la mquina computadora, y Windows requera mucha ms potencia para operar que el D.O.S, (el sistema operativo anterior al Windows, tambin de Microsoft). La interfaz grfica del Windows era bien vista, pero para que operara bien se tena que mejorar el equipo, y la velocidad de operacin fue percibida como un problema. Lotus cometi el error de asumir que Windows tena sus das contados y que pronto sera reemplazado por el OS/2, y no se molest en crear una versin de Lotus 1-2-3 para Windows. Los de Lotus colocaron toda su energa en desarrollar una versin de Lotus muy elegante que corriera bajo OS/2. Esta apuesta a un solo caballo fue una decisin errada que afect la evolucin del 1-2-3. Cuando los de Lotus vieron que Windows haba llegado para quedarse, estuvieron en verdaderos apuros pues vean como los usuarios adoptaban Excel. La primer intensin fue desarrollar una versin de 1-2-3 para Windows, la cual sali al mercado en 1991, que realmente era la versin 1-2-3 (3) para D.O.S. Versiones posteriores de Lotus han cerrado la brecha con Excel, pero han sido demasiado tarde por la adopcin casi universal de Microsoft Office por parte del mercado. Excel 5 Microsoft tom una decisin valiente para unificar el cdigo de la programacin de sus aplicaciones Office introduciendo VBA Visual Basic para Aplicaciones-. Excel 5, liberado en 1993, fue la primera aplicacin que incluy VBA. VBA fue introducido gradualmente en las otras aplicaciones de Office en las versiones posteriores. Excel, Word, Access, Powerpoint y Outlook, toda la suite Office usaba VBA como su lenguaje macro. Desde la liberacin de Excel 5, Excel ha apoyado el lenguaje XML y los idiomas de macro de VBA, y el apoyo para el lenguaje XLM continuar en el futuro previsible, pero han disminuido los usuarios pues continan cambindose al VBA. VBA es un lenguaje de programacin orientado a objetos que es idntico al lenguaje de programacin Visual Basic en la manera en que es estructurado y en la manera que maneja objetos. Si Usted aprende a usar el VBA en Excel, sabr cmo utilizarlo en otras aplicaciones de Office. Las aplicaciones de Office varan en sus objetos. Para programar una aplicacin debe de conocer el modelo objeto, el cual consiste en la jerarqua de todos los objetos que Usted encuentra en la aplicacin. Por ejemplo, la parte del modelo objeto de Excel nos dice que hay un objeto Aplicacin
19
(Excel), que contiene un objeto Libro de trabajo que contiene a su vez un objeto u objetos Hojas que a su vez contiene un objeto Rango, nombres de celda, etc. VBA es algo ms fcil de aprender que el idioma de macro de XLM. Es ms poderoso, es generalmente ms eficiente, y le permite escribir cdigo bien estructurado. Usted tambin puede escribir cdigo mal estructurado, pero siguiendo unos pocos principios, debe poder producir cdigo que es entendido perfectamente por otros y es razonablemente fcil de mantener. En Excel 5, el cdigo VBA fue escrito en mdulos, que tambin se organizan como las hojas de un libro de Excel. Las hojas de trabajo, hojas de grfico, y hojas de dilogo fueron otros tipos de hojas que podran ser contenidas en un libro de Excel 5. Un mdulo realmente es como un procesador de texto con algunas caractersticas especiales que le ayudan a escribir y a probar el cdigo. Excel 97 En Excel 97, Microsoft introdujo algunos cambios dramticos en la interfaz de VBA y algunos cambios en la modelacin de objetos de Excel. De Excel 97 en adelante, los mdulos no son visibles en la ventana de aplicacin de Excel y los mdulos ya no son objetos contenidos en el Libro Excel. Los mdulos son contenidos en el proyecto de VBA asociado con el Libro y slo pueden ser vistos y pueden ser redactados en la ventana del Editor de Visual Basic. Adems de los mdulos estndar, tambin se introdujeron los mdulos de clase, lo que le permite crear sus propios objetos y conseguir acceso a eventos de aplicacin. Los comandos de las Barras de herramientas (CommandBars) se introdujeron para reemplazar mens y barras de herramientas, y los Formularios de los usuarios UserForms reemplazaron las hojas de dilogo. Ahora los Formularios solo pueden crearse en la ventana del VBA. Como de costumbre, los objetos reemplazados se mantienen operativos, pero se ocultan y no se documentan en las pantallas de ayuda. En versiones anteriores de Excel, los objetos como los botones se empotraban en las hojas de trabajo y slo podan responder a un solo evento, generalmente un clic del ratn. Al salir Excel 97 aument el nmero de eventos a los que el cdigo VBA poda responder. Tambin se introdujeron los controles ActiveX que pueden ser incluidos en las hojas de trabajo y los formularios (UserForms). En esta versin el VBE proporciona mucha ms ayuda de la que haba estado disponible antes. Por ejemplo, como se escribe cdigo, van apareciendo la sugerencia automtica y ayuda sobre los de mtodos y propiedades de los objetos, valores de argumentos, parmetros de las funciones, entre otros. Excel 2000 En cuanto al editor de macros, el VBA Excel 2000 no introdujo cambios dramticos, hubo mejoras en algunas caractersticas de Excel como las tablas dinmicas. Los usuarios web se beneficiaron con de Excel 2000, especialmente por la capacidad de guardar libros como pginas web. Tena tambin mejoras para usuarios con necesidad de compartir informacin.
20
Excel 2002 Excel 2002 solo tuvo cambios incrementales; una vez ms, las mejoras estuvieron en la interfaz del usuario antes que en las caractersticas de programacin. Microsoft se concentr en mejorar las caractersticas web para distribuir los datos en internet. En el Editor VBA se incluy la proteccin, SmartTags, RTD (los Datos en Tiempo Real) y apoyo mejorado para XLM. Las caractersticas de proteccin permiten el control selectivo sobre las caractersticas que son accesibles a los usuarios cuando se protege una hoja de trabajo. Por ejemplo, se puede tener control sobre lo que puede alterar, que celda formatear, insertar o borrar filas y columnas. Tambin incluy la posibilidad de especificar cules usuarios pueden editar reas especficas y adems, si se quiere que utilicen una contrasea antes de hacer los cambios. La caracterstica SmartTags es la que permite a Excel reconocer los datos escritos a mquina en las celdas, como intuyendo lo que quiere escribir el usuario. Pero no solo eso: Excel 2002 puede reconocer abreviaturas del mercado de valores, como MSFT de Microsoft. Cundo Excel ve un tem as, muestra un smbolo de SmartTag que tiene un men mvil. Este men se puede utilizar para obtener informacin relacionada, como la cotizacin de las ltimas acciones o un informe de resumen en la compaa. Con esta opcin se puede crear nuevo software tipo SmartTag para obtener los datos disponibles de la organizacin o a travs del Internet. El RTD (los Datos en Tiempo Real) permite a los desarrolladores crear fuentes de informacin; Por ejemplo, una vez que en una hoja se crea un enlace o vnculo a otra hoja de trabajo, los cambios realizados en la fuente se muestran automticamente. Una buena utilidad si se desean obtener los precios de las acciones que cambian en tiempo real durante una negociacin. Otras aplicaciones pueden ser las de apuntar a datos de instrumentos cientficos o controladores industriales de proceso. Como las tecnologas Web son cada vez ms crecientes, se mejor el XLM lo que signific que ahora era ms fcil crear aplicaciones que intercambian los datos por Internet e intranet. Excel 2003 En Excel 2003 se continuaron introduciendo caractersticas orientadas a Internet, mejorando el Xlm y la asistencia en lnea, capacidad de compartir y actualizar los datos que utilizan los servicios de Windows SharePoint. Se incluyeron funciones estadsticas; la caracterstica Lista fue introducida para permitir la gestin mucho ms fcil de una mesa de base de datos. La caracterstica Lista hace ms fcil clasificar, filtrar y para redactar los datos. Las listas tambin pueden ser integradas con SharePoint para compartir los datos a travs de Internet. Tambin se incluyeron nuevas caractersticas para trabajar de manera compartida los documentos y derechos de acceso. Excel 2007 Excel 2007 represent el cambio ms grande de Excel desde Excel 97. El impacto ms grande fue la nueva interfaz del usuario, que utiliza la Cinta (Ribbon) como el instrumento primario de navegacin, reemplazando los tradicionales mens y barras de herramientas. Aunque la cinta es ms fcil de aceptar por los usuarios nuevos, siempre significa que los usuarios experimentados tendran que reeducarse. Excel 2007 super con creces los viejos lmites, llegando a 1.048.576 filas y 16.384 columnas, por ejemplo. Tambin hay muchos cambios a las caractersticas de las tablas dinmicas el acceso a las mismas y los grficos ms accesibles y ms fciles de manipular.
21
Las listas en Excel 2007, son ms fciles de manejar y tienen ms capacidad. La clasificacin (Ordenar) y los filtros volvieron a ser diseados; pueden manejar hasta 64 criterios de ordenacin simultneamente. Tambin se mejor el acceso a los datos externos, y aument la gama de fuentes externas. Excel 2007 acepta nuevos formatos de archivo que no eran compatibles en versiones anteriores, aunque los datos pueden ser guardados en formatos ms viejos, aunque con la prdida de algunas de las caractersticas nuevas. Si se quiere guardar un libro con macros, el archivo es diferente comparado con un archivo estndar. Los conceptos de seguridad se volvieron a disear introduciendo el Centro de Confianza. Las carpetas se pueden designar como De confianza y las macros en estas carpetas pueden correr sin necesidad de certificados digitales.
22
Introduccin a las macros Que es una macro. Macro es una palabra utilizada para referirse a un conjunto de instrucciones que realizan una accin recurrente y automtica en una hoja de calculo, en este caso Microsoft Excel. En otras palabras, cuando Usted en su oficina o rea de trabajo y sobre Microsoft Excel, todos los meses tiene que realizar las mismas cosas, (sobre diferentes bases y situaciones, pero en general, el mismo contexto) o de manera cclica cada cierto tiempo, ya sea todos los das, una semana, quince das, un mes, un ao, etc., se dice que el informe, cuadro, anlisis u operacin es recurrente. Es decir, cada cierto tiempo alguien tiene que hacerlo, una vez ms, y as sucesivamente, una y otra vez. Pues bien; esta actividad que se repite cada cierto periodo de tiempo, se puede Grabar en Excel, todas las acciones de todo lo que usted hace en la hoja de calculo se puede listar, se pueden escribir en una serie de instrucciones paso a paso y hacer que Excel las ejecute o siga las instrucciones dadas automticamente sin necesidad de Intervencin Humana. Lo anterior es sencillamente maravilloso, pues aparte de que ya no tenemos que hacer el trabajo directamente, la velocidad a la que Excel ejecuta las instrucciones de la lista grabada o escrita, es tan rpido que hasta parece magia. Veamos lo que al respecto dice Wikipedia: http://es.wikipedia.org/wiki/Macro
Para que nos pueden servir las macros Excel tiene una poderosa herramienta que le puede ayudar a crear sus macros fcilmente, y esa herramienta se conoce como el grabador de macros. Usted no necesita ser un ingeniero de sistemas para aprender este tema de Macros. Solo necesita alguien que le ayude a comprenderlas, ponerlas en prctica, sacarles el jugo, aumentar su rendimiento (el suyo) y calidad profesional, deshacerse de tanta operatividad, actividad secretarial, de digitador o como se dice en el argot popular, de tanta carpintera y enfocarse en el anlisis como tal o simplemente, dar mayor valor agregado a su competitividad u organizacin.
23
No es normal que un profesional o cualquier empleado o asistente que se sirva de Excel, invierta (o desperdicie) tanto tiempo trabajando de manera arcaica el Excel, cuando podran hacer muchas tareas en segundos, liberando tiempo y evacuando cuellos de botella de informacin.
Como podemos usarlas Las macros se usan ejecutndolas, o corrindolas que es lo mismo. Cuando usted ya ha grabado una macro, simplemente la llama (o invoca) mediante una combinacin de letras de su teclado de computador, o desplegando en Excel en el men la opcin Herramientas Macros - Correr una macro (si se encuentra en Excel 2003) , si se encuentra en Excel 2007 a travs de la ficha programador, clic en el cono Macros y seleccionar la macro. En ambas versiones con la combinacin del teclado Alt+F11 se puede llamar la ventana que nos muestra las macros disponibles, ya sea en el libro de Excel que se ha abierto o en el libro de macros personal.
Como podemos aprovecharlas? Conociendo que las macros ejecutan una serie o una gran cantidad de acciones en segundos, pues el recurso es ilimitado como nuestra imaginacin. El enorme potencial de la velocidad significa muchsimo menos tiempo. Por ejemplo, un Auditor no necesita de reporteadores especiales o software adicional que le ayude con cierta informacin tal como revisar si a todos los documentos los asistentes contables les registraron correctamente los impuestos: Podra solicitar un listado de cuentas auxiliar cronolgico, (adems del listado de terceros en donde figura la calidad tributaria) de todas las cuentas y de todo el mes o periodo y hacer entre otras cosas, las siguientes: 1) 2) 3) 4) Tomar todas las compras del periodo. Calcular los impuestos. Cruzar el clculo obtenido contra las cuentas de impuesto. Detectar en donde hay inconsistencias tales como comprobantes descuadrados, cuentas con saldos contrarios, terceros con saldos contrarios, revisar 100% el universo de los consecutivos, etc.
Por supuesto, no necesita seleccionar una muestra y sobre ella hacer los clculos de impuestos, nada de eso, puede efectuar auditora al 100% de la documentacin y solo pedir los documentos fsicos en los cuales se estn registrando diferencias entre lo calculado por la Macro de Excel vs. Lo contabilizado, adems de una muestra adicional para verificar otro tipo de cumplimientos. (Que miedo un auditor as!! Como har para detectar en cientos de registros en donde estn los documentos con problemas? Ser Mago?) Muestras Posteriores y selectivas son cosa del siglo XX. Mediante las macros, usted como jefe de contabilidad (o sus mismos colaboradores pueden auto chequearse) puede revisar una cantidad enorme de registros, ya que el que har ese trabajo ser el Excel mediante una macro, Excel ser en adelante su mejor colaborador. Por lo tanto podr darse cuenta que si su equipo de trabajo, comienza a maximizar el potencial de Excel, el rendimiento de su rea igualmente se maximizar y el tamao del rea contable, o rea administrativa, o la que tenga lugar, no tendr que ser ms grande en trminos de recurso de personal, o en otros casos no tendr que obligar a su equipo de trabajo a esfuerzos laborales adicionales, que es lo que normalmente se ve en toda parte.
24
Como podemos grabar las macros Muy fcil: con el grabador de macros. Este grabador de macros es maravilloso, no tienes que preocuparte en escribir cdigo a la vieja usanza o, en otras palabras, no tienes que ser ingeniero de sistemas para escribir un programa en lenguaje Visual Basic (el Visual Basic es el tipo de lenguaje de programacin que usan hasta ahora, 2010, no conozco los planes de Microsoft sobre este lenguaje hacia futuro las aplicaciones de Microsoft) pues los desarrolladores del Microsoft Office de Windows, crearon esta funcionalidad o aplicacin, mediante la cual, todas las acciones, todo lo que haces en
Excel, en una hoja de clculo, ya sea con los botones, mens, teclado y dems, quedan grabadas, quedan listadas, quedan anotadas, quedan escritas de una vez todas las instrucciones realizadas en la hoja de clculo, siempre y cuando est activo o en accin, el grabador de macros. Mas adelante
se indicar como editar las macros para hacer ciertas cosas que el grabador de macros no puede. Solo tenga en mente que el asunto es muy fcil, solo siga leyendo con atencin que mientras lo hace, el conocimiento lo ir embargando. El grabador de macros Si usted va a grabar una macro, por lo general se tiene una idea de que es lo que va a grabar. Para que no pierda tanto tiempo con el viejo pero largo truco de ensayo y error, es recomendable que escriba en una hoja de papel (fsico) las acciones de lo que va a hacer, Por ejemplo: 1) Selecciono la celda A1; 2) la copio; 3) me paso a la celda D10, 4) la pego.) Y as sucesivamente, o una lista de lo que siempre hace, para que cuando est grabando la macro, tenga bien claro lo que va a grabar. Por supuesto, esto no es de obligatorio cumplimiento, ni tiene que ser as. Puede ir grabando macros que ejecutan pequeas tareas y luego probarlas, si van quedando bien, unirlas o pegarlas. Antes de entrar en este tema es conveniente que conozca un poco ms sobre la interfaz de las macros de Excel y el Visual Basic: Entrando al modulo de macros en Excel 2003: Una imagen vale ms que mil palabras, as que en la siguiente imagen puede ver la ruta del men a travs del cual se llega en Excel 2003:
Entrando al modulo de macros en Excel 2007: En Excel 2007 se llega por la ficha programador. Es importante conocer que por defecto Excel 2007 no muestra esta ficha activa. Si no la ve, tiene que activarla. En otras palabras, hacer que aparezca o sacarla. Si esto es as, (que no la ve en su men) siga las siguientes instrucciones que se dan a continuacin: Vaya al smbolo de Windows en la esquina superior izquierda y haga clic:
25
Haga clic en el botn de abajo que dice Opciones de Excel. Llegar a esta ventana:
26
En esta ventana active Mostrar ficha programador en la cinta de opciones (Est de tercera, en Opciones principales para trabajar con Excel)
En cuanto haya activado la opcin, clic en aceptar. Ver que la ficha programador ya esta disponible: (Esta al lado izquierdo de la ltima ficha de la derecha que dice Complementos o a la derecha de la ficha Vista)
Haciendo clic en esta ficha (esto es, la ficha Programador) ya ver que tiene el modulo de las macros y el Visual Basic: Puede ver los conos de Visual Basic y Macros y todo lo dems en la ficha programador:
Cuando en ambos sistemas accede al Visual Basic, llega al siguiente mdulo: (En ambos Excel, 2003 y 2007 es casi lo mismo):
27
Dado que este es un libro prctico, mas adelante, cuando editemos las macros entraremos a esta opcin y explicaremos todo lo que sea relevante. No me interesa atiborrarlo de informacin de cada una de las funcionalidades que hay aqu, pues esto, en este momento, en lugar de proporcionarle lo que necesita, puede hacerlo pensar que el tema es complejo, y la verdad, nada mas lejos de la realidad, es algo que como el truco del mago, una vez que lo conoces, se deja de sentir asombro, por lo tanto, si vamos despacio, asimilar mejor el tema.
Volvamos al tema que venamos tratando con el grabador de macros: Pasos para grabar una macro con el grabador de macros: En Excel 2003: 1) Ir al men Herramientas - Macro- Grabar nueva macro. Ver que aparece la siguiente ventana, la cual le pedir alguna informacin que deber proporcionar para poder continuar:
28
En donde dice Macro1, puede darle el nombre que a bien tenga. Tambin puede usar una letra que unida con la tecla Control (de su teclado), puede llamar la macro que grab y por lo tanto ejecutarla de una manera mas rpida que si usa el ratn. Se podr dar cuenta que el Excel como toda aplicacin que viene del norte, satisface la enorme necesidad de trabajo bajo presin. Es bueno indicar de una vez- que un usuario Avezado no utiliza el ratn, para ejecutar las diferentes funcionalidades de Office y de Windows utiliza los atajos de teclado o Shortcuts. Estos atajos de teclado los puede conseguir en Internet, muchos sitios han puesto la lista de atajos gratis (con el fin de que los visiten, claro est, solo busque en Google Excel Shortcuts). Sigamos: En este momento NO le recomiendo que coloque una combinacin de letras, dado que como le deca, por defecto Excel ya tiene muchas combinaciones de letras, por ejemplo, copiar es Control+C, que se usa mucho. Si Usted a su macro le da tambin Control+C, pues Excel le dara prioridad a su macro, -si la guard en el libro personal- y le correr las instrucciones en el libro que se encuentre abierto, y le har un desorden tan complejo como las instrucciones de su macro. Debe tener tambin MUY presente que cuando una macro se ejecuta el botoncito de Deshacer no le revierte lo que hizo su macro. De igual forma lo que va a grabar se puede guardar en el libro actual o, en el libro de macros personal. La ventaja del libro de macros personal es que la macro le queda disponible siempre que abra el Excel, mientras que si la guarda en Este libro (el suyo por supuesto), solo funcionar o la podr correr o ejecutar si tiene abierto el libro en el que grab la macro.
Nota: Cuando le reinstalan el Excel, PIERDE sus macros de su libro Personal. Asegrese de
copiar todas las macros en un bloc de notas para luego volver a pegarlas en su nuevo libro Personal. Casos he visto de amigos y amigas que se lamentan de perder las macros que construyeron con tanto trabajo Es bueno que le escriba una buena descripcin, para que, el que abra el libro (o an Usted mismo despus de algn tiempo), sepa que es lo que hace su macro.
Al dar clic en Aceptar, ver un botn que simula ser el viejo botn Stop de las viejas grabadoras o reproductoras de audio que usaban Casetes. (Si Usted es de la vieja guardia o veterano/a como yo, debe de recordarlo). Creo que por asociacin de ideas del colectivo de las personas, fue acertado disear los botones de las macros con los mismos conos:
29
En la siguiente imagen ver que se le informa al usuario que Excel est grabando. Fjese debajo de donde dice Hoja1.
Usted dir, Pero grabando qu si no estoy haciendo nada? Efectivamente, si no ests haciendo nada, pues Excel no graba nada simplemente est esperando que Usted haga algo tal como seleccionar una celda, escribir algo, etc., para que el grabador de macros traduzca todas las acciones que realiza en la hoja de clculo, al lenguaje de programacin Visual Basic. Francamente, el desarrollo de funcionalidades como estas, han acercado al usuario comn y corriente al mundo de la programacin sin ser programadores o Ingenieros de sistemas y por lo tanto, como en todas las esferas en donde entra la automatizacin, desplaza mano de obra.... Y los ingenieros de sistemas tampoco escapan a esta situacin. Vamos a grabar algo muy simple, que nos servir para ver que es lo que hace Excel. Para efectos ilustrativos a la macro le he dado el nombre de Alejo. No quiere decir que su macro se llamar Alejo; dele un nombre cualquiera a su macro, -si es que va a hacer el mismo ejemplo, que no creo necesario- y tngalo presente. Voy a hacer la siguiente accin: (Recuerde que debe de estar la opcin Grabando activada). En una hoja de calculo Excel, en la celda A1 que est all sealada en la imagen, voy escribir Nombre en la celda B1, Direccin. En la celda A2, colocar el nombre Alejandro, en B2, colocar Calle bsquela con Carrera encuntrela y, no mas.
Cuando termine de hacer estas cuatro cosas, oprimir le botn Stop: hace para hacer que la macro NO GRABE MS, es decir, se detenga.
lo cual se
Despus de haber realizado lo anterior, vamos por el men Herramientas Macro Macros, y en la ventana que aparecer, seleccionamos con el puntero del ratn el nombre de nuestra macro que esta dentro del cuadro de macros, (el alejo que aqu en la grfica est en color azul, ese es el que debe seleccionar) NO el que est debajo de Nombre de la macro.
30
Seleccione la macro de prueba (que en mi caso se llama Alejo) y haga clic en el botn Modificar. Al hacerlo, llegar DIRECTO al editor de Visual Basic, (al cual tambin puede llegar con la combinacin de letras Alt+F11) y se desplegar el cdigo o instrucciones que le indican a Excel como hacer esas cuatro cositas:
Puede ver que Excel, dado que es una aplicacin hecha por una casa de software de los Estados Unidos, pues escribe el cdigo en ingls, lo cual hace que para ellos (Los que hablan ingls) sea ms fcil. Si comprende un poco de ingls igualmente comprender mejor todo lo que escribe automticamente el grabador de macros de Excel, sino, no se preocupe que no es nada del otro mucho, el asunto sigue siendo fcil. Siga leyendo:
31
Esto es lo que puso el grabador de macros por las acciones ejecutadas: Sub Alejo() ' ' Alejo Macro ' Macro grabada el 10/04/2009 por Alejandro Quiceno ' Range("A1").Select ActiveCell.FormulaR1C1 = "nombre" Range ("B1").Select ActiveCell.FormulaR1C1 = "direccin" Range("A2").Select ActiveCell.FormulaR1C1 = "Alejandro" Range("B2").Select ActiveCell.FormulaR1C1 = "Calle bsquela con carrera encuentrela" End Sub
Range no es nada difcil, significa Rango y un rango en Excel NO se refiere a jerarqua como tal, ni
a categora ni a situacin social elevada; no obstante, la definicin mas acertada es aquella que nos dice que Rango es una categora definida por un lmite superior e inferior. En lenguaje de Macros, ms propiamente se refiere a la celda o rango de celdas que se indica dentro de los parntesis. En este caso, el Rango de la celda A1, que es la casilla o celda de la columna A que se encuentra con la fila 1. Range(A1) esta seguida de la palabra Select, todo unido se refiere a Seleccionar el rango A1. En otras palabras Seleccione la Celda A1. ActiveCell.FormulaR1C1 = nombre indica que en la celda seleccionada, la A1, que ahora es la Celda Activa (ActiveCell) tendr el atributo Formula en este caso la formula simplemente es igual a la palabra nombre. Puede ver que las dems cosas que realic, Excel las traduce de la misma manera. Ahora, si guardo el libro y voy a Herramientas Macro Macros, escojo mi macro alejo y le doy clic a ejecutar, esto se realizar casi que a velocidad de la luz.
Pasos para grabar una macro con el grabador de macros en Excel 2007: 2) (En Excel 2007 la cosa por supuesto tiene que ser ms sencilla). En la ficha programador, que ya sabe como llegar a ella en caso de que no vea la ficha programador, haces clic en el botn Grabar Macro
32
Al hacer clic saldr la misma ventana de Excel 2003 que se refiere a ponerle el nombre a la macro, la descripcin, etc., al aceptar y continuar NO ver el botn flotante de stop que se ve en Excel 2003, pero si lo ver en la parte inferior de Excel, as como tambin, en lugar de grabar macro, ahora dice Detener grabacin.
Del resto, la cosa es bsicamente la misma. Excel 2007 reemplaz muchos comandos que se lean en los mens, por Iconos ms vistosos y elegantes, y por lo tanto es mucho ms Intuitivo que el men del Excel anterior.
33
La importancia de organizar la informacin en base de datos Este es un punto que si no lo tiene claro, conviene tratarlo un poco. Un listado o informe que genera un programa de computo, en el cual por supuesto hay informacin que nos interesa y que es una muy buena fuente de informacin, sobre todo porque constituye una evidencia Valida y suficiente, prueba reina y veraz de que la informacin se est tomando Fielmente de la contabilidad o cualquier otro sistema de control o gestin, puede que sea una muy buena BASE de informacin, pero todava dista -mucho o poco- de ser una BASE DE DATOS, por la razn de que para una base de informacin ser una base de datos debe cumplir con ciertas caractersticas de las cuales adolecen los listados o informes que genera un sistema. Una base de datos, (esta definicin es para que Usted se aproxime al concepto como tal), no es ms que una relacin de informacin la cual tiene los datos ordenados en filas, y las caractersticas de esos datos se organizan en columnas, o viceversa, Datos ordenados en columnas y las caractersticas de esos datos en filas. La base de datos ante todo RESPETA el ordenamiento establecido en estas filas y columnas. La siguiente es la definicin de Wikipedia, la enciclopedia gratis de Internet: Una base de datos o
banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos en papel e indexados para su consulta.
Por ejemplo, Si en una primera columna vamos a apilar nombres, estos se colocarn uno detrs de otro, hacia abajo, por filas, en la misma primera columna. El apellido ir en la segunda columna y ser el apellido correspondiente a cada nombre, y tambin, se ir apilando uno debajo de otro. Una tercera columna podr contener la direccin, y todos los datos relacionados con cada nombre, tal como numero de identificacin, telfono, etc. Una imagen le ayudar a identificar mejor La diferencia entre un listado de terceros y una base de datos de terceros: Este es un listado de terceros:
34
Como puede ver, la diferencia salta a la vista. El problema del listado exportado a Excel es que los encabezados del listado salen en cada pgina del listado, los cuales tambin quedan en Excel y como puede ver, para efectos de trabajar la informacin en Excel son basura, pues no agregan valor al momento de hacer operaciones con rangos de fila o de columna. Otro problema es el campo ciudad, que est en un rengln intermedio y no est alineado en la misma fila de cada tercero. Cuando Usted tiene la informacin en forma de base de datos, puede maximizar el potencial de Excel. Puede relacionar la informacin fcilmente y crear en segundos informes que le dan un muy buen valor agregado. Sin embargo, para dar cumplimiento con la ley de aquello de Cifras fielmente tomadas.etc. es bueno tener ambas fuentes, la base de informacin y la misma convertida a base de datos. De esta manera se puede demostrar que los datos no se los ha inventado con Excel, y que fueron tomados de un sistema en cierto momento, como queda registrado en su encabezado, fecha y hora.
35
Tcnicas y funciones de Excel ms utilizadas en la depuracin de archivos planos En este apartado se mostrarn algunas de las tcnicas, o trucos o maneras que se suelen utilizar y que vienen en nuestra ayuda, no solo para depurar los archivos planos sino en el manejo en general de Excel. Interesa ilustrarlas ya que estas tcnicas se pueden grabar en una macro, con lo cual se pueden realizar todava mucho mas rpido. Buscar y Reemplazar Esta tcnica es una de mis favoritas, ya que con una sola instruccin nos puede hacer un arreglo (o desarreglo, esto hay que tenerlo muy claro, por venir de redentor puedes salir crucificado) que de otra manera nos tardara muchsimo tiempo, adems la posibilidad de error humano se reduce casi a cero si tuvieras que corregir las cosas manualmente. Por lo general esta tcnica de buscar y reemplazar se usa para hacer correcciones ortogrficas, o que una palabra nos la cambie por otra, o la coloque con una mayscula o cosas as. Pero lo que a veces no se tiene en cuenta, o se pierde de vista es que el cambio del buscar y reemplazar tambin tiene efecto en las celdas que contienen frmulas, con lo cual, la sintaxis de las formulas tambin son susceptibles de ser cambiadas, y si usted no tiene esto presente, sus formulas que en alguna parte coincidan con la palabra que usted esta buscando y reemplazando, tambin se le cambiarn, y como consecuencia, prcticamente se le daarn las mismas, y usted se estar preguntando que rayos fue lo que pas, y si est en uno de esos momentos en donde (como cosa rara) no se puede dar el lujo de perder tiempo y lo que est haciendo es Urgente, lo mas seguro es que montar en ira contra el Excel, quizs golpee su computador, etc..toda una pelcula. Comprobmoslo: Aqu tenemos una formula que hemos hecho a propsito y que est direccionada hacia otra hoja que coincidencialmente ser la palabra que modificaremos con la tcnica de buscar y reemplazar: Fjese que la Celda B4 contiene una formula que contiene la palabra enero,
36
Si hacemos el buscar y reemplazar, (tecla control+b) de enero por febrero, ocurrir (en Excel 2007) que Excel intentar actualizar valores, est buscando la hoja que contiene febrero, como no la encuentra, despliega el explorador y le pide a usted que lo haga. Si da cancelar, se le reemplazar el valor de B3 que dice enero por febrero, pero se le daar la formula:
37
Si hay muchas mas coincidencias de este tipo, ya puede ver como se le pueden desbaratar las formulas. Por otra parte, puede darse perfectamente cuenta que una vez conocida esta situacin, ya puede saber como utilizarla a su favor, y es reemplazando con la correspondiente alevosa y premeditacin las formulas que necesita que efectivamente se direccionen a la hoja febrero, marzo, abril, etc. Ahora observemos que pasa en Excel 2003, ya que esto lo hemos probado en Excel 2007, como podr darse cuenta por las imgenes:
38
Pasa exactamente lo mismo. Ya sabe pues, lo que puede pasar si no sabe esto, y como lo puede explotar conocindolo.
39
Otro caso en el que se suele usar el Buscar y Reemplazar: El buscar y reemplazar lo utilizo en algunas ocasiones en las cuales las celdas que contienen valores que estn como tipo texto se resisten a convertirse en un nmero como tal, (esto se puede
comprobar porque aunque se ven como nmeros, Excel no puede hacer clculos con ellos, pues no son datos numricos, son datos tipo texto. Una prueba es que Excel alinea por defecto los textos a la izquierda y los numricos a la derecha, tambin, marca la celda en su esquina con una pequea marquita de un color y si acerca el ratn, ver que se despliega un comentario automtico, el cual le dice que el valor se ve como numero pero que para Excel no lo es puesto que esta precedido de un apostrofo o de un espacio) pues los separadores de decimal y de miles no estn en consistencia con la
configuracin regional del teclado de su mquina. Lo que hago es sealar el rango que contiene el nmero en forma de texto y le reemplazo el separador de miles por nada (es decir, en la parte del cuadro de dialogo que dice reemplazar por, no coloco ninguna cosa) y luego procedo a reemplazar el separador decimal por el que maneja mi computadora. Esto debera servir para solucionar el problema, sin embargo algunas veces no es suficiente, por lo cual termino de darle un tratamiento con base en la formula =Valor() escrita en una columna adyacente, que convierte los nmeros que estn como texto en valor, y all si, definitivamente quedan convertidos. Excel tiene algunos otros recursos que nos colaboran con este impase: Resulta que al abrir archivos planos con Excel, Excel automticamente nos trae un Asistente o Wizard que nos orienta con la conversin del archivo plano a Excel. Muchos archivos tienen los campos separados por algn carcter especial, tal como una coma, un espacio, tabulacin, etc., hay muchos tipos. Si coincide con uno de estos, pues facilitar mucho el trabajarlos, pues una de las cosas mas dispendiosas de acomodar o corregir en el archivo plano son esas columnas que nos parten los datos, ya sean datos de texto o datos numricos, datos de fecha, etc., con lo cual una parte del dato queda en una columna y la otra parte del dato queda en otra columna. Para que me entienda ms claramente: un valor numrico demasiado grande puede quedar dividido entre dos columnas, luego viene el problema de tener que unir los dos fragmentos de nmero en una sola celda, para poder trabajarlos con Excel Pues bien, al llegar a ese paso, si Usted tiene clara cual es la configuracin regional de su teclado para los nmeros en cuanto a los separadores de miles y separadores de decimal, es probable que no tenga problemas, y Excel, con el asistente le solucionar el problema. Si no sabe cual es la configuracin regional de su teclado vaya por Panel de control y verifquela. Personalmente uso Espaol (Espaa tradicional), y las macros que se suministran con este trabajo manejan los valores teniendo en cuenta esta caracterstica. Si su computador no tiene esta configuracin es probable que cuando ejecute las macros, en donde halla valores queden errores y Excel mostrar un tipo de error #VALUE!
A continuacin estn las imgenes del panel de control para el Windows Vista: de tal manera que le sirva de orientacin. En Windows XP y los dems, llega a esta opcin por panel de control
40
41
Corrigiendo los nmeros que parecen nmeros pero que son texto, en nmeros aceptados como nmeros para Excel con la herramienta Buscar y Reemplazar. Dando alcance al apartado anterior, este error es uno de los que mas te pueden ofuscar, si no conoces bien que es lo que sucede. Cuando abres un archivo plano (un archivo plano es un archivo que no tiene formato) con Excel, y ya has usado el asistente para importar texto y ya lo tienes en Excel, probablemente tienes la situacin que se observa en esta grfica:
Excel justifica por defecto los datos segn el tipo que se trate; tenga en cuenta que Excel justifica a la izquierda (justifica, esto es ALINEA) todos los datos de tipo TEXTO. En este caso est justificando como texto los valores que deberan ser numricos. Y esta verdad, encima la puedo comprobar, porque Excel no puede sumar ambos nmeros. Esta es la razn del porqu la seleccion en la grfica, para que Usted tambin constate que Excel no la puede sumar, solo la puede CONTAR, por eso nos indica en la parte inferior Recuento:2 Como arreglo estos valores con el buscar y reemplazar: Primero, me entero de cual es la configuracin numrica que mi teclado utiliza para separador de miles y de decimales. En mi caso, el separador de miles ES UN PUNTO, y el separador de decimales es UNA COMA. O sea, si se fija, se dar cuenta que es TODO lo contrario a como est el numero en el archivo plano que acab de abrir. Entonces, para arreglarlo, lo que hago es, 1) Seleccionar las columnas que tienen los datos numricos. En este caso, las columnas Saldo anterior, Dbitos, Crditos y Saldo Final. Las Selecciono as:
42
Luego, con estas columnas seleccionadas, vas por la ficha INICIO, grupo Seleccionar, y escogemos el
cono
Veremos que se despliegan unas opciones, y haremos clic en Reemplazar, como se ve en la figura de la siguiente hoja:
43
44
Le damos Aceptar, y Cerrar. Por ultimo, teniendo las columnas AUN seleccionadas, hacemos clic con el botn derecho y en el men contextual, emergente que aparece, damos clic en formato de celdas, as:
45
Y por fin, los datos quedan numricos, (te dars cuenta que Excel los justifica o alinea a la derecha) de la manera que se puedan hacer clculos y operaciones en Excel, y ahora si, se puede ver que Excel los suma:
46
Por supuesto, esta accin se puede grabar en una macro, mas adelante se volver a tocar este tema. NOTA: Le recomiendo, que cuando abra el archivo plano, las columnas que contienen nmeros les coloque TIPO TEXTO, y haga la operacin que se le acaba de explicar. De esta manera evitar que EXCEL MALINTERPRETE los nmeros, pues si el archivo plano tiene el separador de miles en COMAS, y tu configuracin numrica en puntos, es posible que nmeros muy grandes quedan como nmeros mucho ms pequeos. Una situacin que a veces el asistente para importar archivos planos no puede solucionar al aplicar la opcin Avanzado: Estos dolores de cabeza son ms frecuentes en los archivos planos relacionados con el Kardex, en donde cambian las reglas, los separadores de miles no son comas sino puntos. Hay que analizar bien la situacin y eliminar los separadores de miles ya sean comas o puntos y los separadores decimales colocar el tipo que maneje nuestra computadora. Sin embargo, si conoce bien el archivo plano, puede aprovechar la opcin Configuracin avanzada y colocar los separadores COMO SE VEN EN EL ARCHIVO PLANO. Excel los acomodar de la manera en que l los usa:
47
Ir a Especial - Celdas en blanco Esta opcin si que es otra de mis favoritas, y aqu le voy a explicar un truco que aprend en Internet con el cual Usted (si no la conoce) tambin se volver fantico de esta opcin.
Siguiendo con la grfica anterior del archivo plano, podemos ver que algunos archivos planos, colocan la lnea de los valores un rengln por debajo de la cuenta y la descripcin, de tal manera que, queda un espacio en blanco, como se ve en la seleccin de la imagen, y as sucesivamente con todas las lneas. Ninguna cuenta tiene al frente en su mismo rengln su saldo inicial, debito, crdito y saldo final, sino que estos valores estn un rengln por debajo. Entonces seria DESEABLE que en el espacio en blanco, estuviera la cuenta, de tal manera que luego nos quedamos solo con todos los valores de Saldo inicial, debito, crdito y Saldo final, y desecharamos los dems. Por el momento le voy a explicar como rellenar el espacio que esta en blanco, con los datos que estn arriba de l. En primer lugar, vaya hasta la ltima parte inferior del archivo plano, tal como se ve en la siguiente figura:
48
Seleccione las dos celdas A rellenar. Teniendo seleccionadas estas celdas, oprima al mismo tiempo las teclas Control + Shitf de su teclado (Shitf es la tecla que esta encimita del botn Control de la izquierda, que sirve para hacer una mayscula). Cuando las tenga OPRIMIDAS, oprima TAMBIEN (sin soltar control + shitf) la tecla INICIO. OCURRIR que se le seleccionar todo el rango EN DONDE ESTAN IMPLCITOS los renglones que pretendemos rellenar, Tal como se ve en la grfica.
49
Despus, vaya nuevamente por la ficha INICIO y seleccione de nuevo el cono de los binculos, este:
50
Listo. Active Celdas en Blanco, dele clic a Aceptar. Si lo hace bien, ocurrir esto:
51
Fjese que las celdas en blanco QUEDARON ESCOGIDAS. Ahora siga estas instrucciones: Asegrese de que el formato de la celda es general. Si est en texto, no se lograr el relleno de celdas correctamente. Ahora oprima la tecla + (es decir, oprima la tecla MAS + de su teclado). Luego del grupo de flechas de su teclado, oprima la flecha que apunta hacia arriba . Luego d control + enter AL MISMO TIEMPO. No se debe dar solo enter Debe de dar Control + enter. Si lo hace bien, en las celdas en blanco quedar metida una formula, la cual referencia la celda de arriba. Si lo hace bien, ha debido quedarle as:
52
Como ver, RELLENA de una sola vez, todas las celdas en blanco con la informacin que est inmediatamente arriba. Ahora, solo necesita seleccionar la columna A hasta la B, y la copia y la pega all mismo, con la opcin pegado especial, solo valores. As:
53
54
As, desbaratar la formula que introdujo en las celdas en blanco, y le quedaran datos.
55
Seleccione la ficha Programador, (si no la ve, psese a la seccin de macros para que sepa como sacar la ficha) es decir, esta:
Haga clic en Visual Basic. Cuando haga clic, le saldr el editor de visual basic:
56
57
Puede ver que en arbolito del explorador aparece una carpeta que dice mdulos modulo uno. (Si no est, insrtelo con el men). De igual forma, aparece una hoja en blanco. En esta hoja es en donde se coloca o se escribe o se graba el cdigo de las macros. En esa ventana, va a escribir este cdigo: Sub Copiar() Do Until ActiveCell = "Fin" If ActiveCell = "" Then Selection.FillDown End If ActiveCell.Offset(1, 0).Select Loop End Sub Esta macro me la hizo hace muchos aos (mas de 10 y) James Eduard Espitia Coronado, la cual a diferencia de otras que circulan en Internet, me parece que es la ms prctica. James es experto en Excel Macros, pues adems de que es Contador, es Ingeniero de Sistemas. Por supuesto que hay otras adems de esta, he incluso esta misma se puede escribir sin necesidad de seleccionar las celdas, como veremos en el apartado de las macros, pero entre las que siguen este procedimiento, me parece que es muy buena por no decir, la mejor, adems de que le facilitar a Usted la comprensin de la misma. Este es el cdigo que har esa operacin de copia. Asegrese de escribirlo correctamente, pues los errores de ortografa o de transcripcin aqu se pagan caros, por el hecho de que la macro obedece las ordenes que usted le est escribiendo, as que si escribe mal, pues Excel no le entender y le saldrn mensajes de error. Permtame contino indicndole como terminar de colocar esta macro en su maquina y luego paso a explicarle que es lo que hace. Una vez haya escrito el cdigo que hace la copia y relleno en las celdas en blanco, deber quedarle algo as como esto:
58
Ahora, recuerde que no ha grabado el libro, grbelo con un nombre, puede usar el botn de guardar, o Archivo Guardar como de este men. Este botn guardar del editor de visual basic hace lo mismo que el men de Excel. De esta manera, esta macro funcionar SOLO en este libro. Es decir, si necesita usarla en otro archivo, no la tendr disponible porque no tiene el archivo en el cual la grab, abierto. Para tener la macro disponible en todo momento, tiene que meter la macro en un mdulo del libro de macros personal, es decir, todo lo que anteriormente realizamos, pero metido en el VBAProject(PERSONAL.XLSB).
(Tambin, cuando comienza a grabar la macro, le da la opcin de guardarla en el libro actual o en el libro de macros personal, si escoge libro de macros personal, Excel se lo coloca de una sola vez en un modulo dentro del libro de macros personal):
Si no tiene el modulo1, pues ya sabes como insertarlo. En este modulo pegas la misma macrito anterior. Cuando grabas la macro en el libro de macros personal, al cerrar Excel, el programa te preguntar que si deseas que los cambios que hiciste en el libro de macros personal apliquen permanentemente. Ante esta pregunta, normalmente se le dice que S. Si le das no, pues no te guardar nada de lo que hiciste en el libro de macros personal.
59
Ahora, si ests en Excel 2007 y lo guardas la macro en un libro, no debes guardarlo como un libro comn y corriente. Debes de guardarlo como xlsm, libro de Excel habilitado para macros. Si lo guardas en un libro comn y corriente, y Excel detecta que tiene un modulo de Visual basic, te saldr este cuadro de dilogo:
Ok. Ahora miremos que es lo que hace la macro: Sub Copiar() Do Until ActiveCell = "Fin" If ActiveCell = "" Then Selection.FillDown End If ActiveCell.Offset(1, 0).Select Loop End Sub Toda macro comienza con la palabras SUB y END SUB (algo as como SUBrutina y Final SUBrutina). O como dice la web de Microsoft: Declara el nombre, los parmetros y el cdigo que definen un procedimiento Sub. Y End Sub Termina la definicin de este procedimiento. Una rutina, es una serie de instrucciones que pueden repetirse, por lo tanto es una excelente opcin para acelerar o automatizar nuestro trabajo. Las rutinas de las macros de Excel son escritas en el lenguaje Visual Basic, el cual posee una sintaxis casi de escritura comn interpretable de alguna forma por cualquier usuario, pero una vez puesto ese programa en las LECTORAS" electrnicas de la PC (computadora), es pasado por el software "Traductor" y "Concatenador" que lo traducen a rdenes en lenguaje de mquina y a pulsos electrnicos interpretados binariamente, todos ellos en perfecta coherencia y en "BUEN FUNCIONAMIENTO PREDECIBLE". Por ejemplo, esta fue la primera macro de la que yo tuve necesidad hace muchos aos, pues yo me desenvolva mas o menos bien en Excel, pero inevitablemente llegaba a unas situaciones en las cuales deba copiar una celda de una fila superior, en la misma columna, en las filas inferiores hasta el final del archivo. Y me tocaba hacer esta labor de manera MUY MANUAL, a veces se trataba de archivos MUY GRANDES, en los cuales la tareta manual de seleccionar y copiar la celda, pasarme a las celdas de abajo que estn vacas, pegar la celda seleccionada, volverme a pasar a la celda siguiente que necesito
60
copiar, seleccionarla, copiarla, pasarme al siguiente grupo de celdas vacas, pegar la celda seleccionada, y as sucesivamente.. Te dars cuenta que es una RUTINA y como rutina no es una excepcin, al igual que todas las RUTINAS de la vida real pueden llegar a ser agotadoras y por lo montonas no tardan tambin en ser muy aburridoras. Ok. Puede darse cuenta que la tarea de COPIAR y PEGAR gran cantidad de veces es una tarea titnica que solo la hace una persona asignada para hacerlo, que puede tardar mucho tiempo. Una forma de hacerlo es la tcnica de rellenar las celdas en blanco que le expliqu en el apartado anterior, el cual es muy buen truco para rangos no muy grandes, pues consumen mucha memoria de la mquina computadora y esta otra opcin que es mediante MACRO, muy buena tambin, pero que, dicha sea la verdad, no es TAN INSTANTNEA como la opcin de rellenar celdas, pero si es TREMENDAMENTE RAPIDA. Bueno, contino con la explicacin de lo que hace la macro Copiar: Despus de haberle explicado el Asunto de cmo comienzan y terminan las macros, (con Sub y End Sub) vamos con las siguientes lneas: Do Until ActiveCell = "Fin" If ActiveCell = "" Then Selection.FillDown End If ActiveCell.Offset(1, 0).Select Loop Ok. Primero que todo NO SE PREOCUPE SI NO ENTIENDE NADA DE LO QUE LEE O VE. Fjese que solo son 6 renglones y adems, MUY CORTICOS!! Y ya le explico que es eso. Nada del otro mundo. Las macros como son nativas de una nacin ANGLOPARLANTE, pues estn hechas en idioma INGLS. Lo cual quiere decir que si Usted entiende ingls, algo comprender de lo que dice all. Pero como el Ingls y el Espaol, son lenguajes hijos del Latn, pues ver que para nosotros incluso leer esas palabras tambin nos son familiares. Por ejemplo, la palabra Selection.. Pues significa SELECCIN. Active. Activo Cell. Esta si se la soplo: CELDA (uno de los cuadritos o casillas de Excel). Fjese que se parecen : Celda-CELL.. Ve? Se da cuenta? La cosa es fcil. Do: Si se acuerda del Ingls del Colegio, recordar que es el verbo hacer. UNTIL . Esta tambin se la soplo: hasta que. IF . SI THENEntonces END. FIN FILL. RELLENAR DOWNABAJO OFFSET. El programa traductor de Idiomas Babylon traduce esto como deslucir; compensar, contrarrestar, retranquear (?) pero yo dira mas bien que es algo as como DESVESE Ok, despus de este MICRO glosario de trminos, le cuento que all lo que dice es esto:
61
Haga HastaQue CeldaActiva = "Fin" Si CeldaActiva = "" Entonces Selection.RellenarAbajo Fin Si CeldaActiva.Desviese(1, 0).Seleccione Repita Bueno. Creo que ya se va DIGERIENDO MEJOR. Ok, resulta que la macro corre o ejecuta hasta que se encuentra con la palabrita Fin que tenemos que poner dentro de una Celda en nuestro archivo EXCEL, al final de la columna, en donde queremos que se detenga la copia. Es importante decirle que en el escrito (script) de la macro, las instrucciones que se escriben, pueden ir acompaadas de comentarios que nos ayudan a entender que es lo que hacen las instrucciones. Estos comentarios el Visual Basic los pasa por alto y no los ejecuta, siempre y cuando estn precedidos de un apostrofo . Como puede ver, ahora HE COMENTAREADO lo que hace la macro con unas lneas que comienzan con un APOSTROFO:
Entonces:
Do Until ActiveCell = "Fin" Quiere decir: ejecute hasta que la celda diga Fin If ActiveCell = "" Then Si la Celda Activa es igual a vaco o ningn espacio, ningn espacio se indica entre un par de comillas juntas entonces Selection.FillDown Rellene hacia abajo End If Fin del SI Si no se cumple que la celda est vaca, le decimos que se desplace una celda hacia abajo: ActiveCell.Offset(1, 0).Select Loop Repita, gire o haga la rutina hasta que se encuentre con la palabra FIN. Este Loop hace que la macro vuelva y comience desde el Do Until. Bueno, ahora explico un poco ms lo del ActiveCell.Offset Esta es la tcnica que tiene Excel para direccionarse hacia otra celda diferente de la celda actual sin necesidad de indicarla como tal, la macro se va corriendo en diferentes celdas que se le van indicando y este es el comando. Es decir, el comando ordena a la celda activa cambiar la posicin, cambiar de sitio, y eso se indica mediante coordenadas, de manera similar a las coordenadas geogrficas, que en este caso son filas y columnas. Dicho lo anterior, ActiveCell.Offset(1, 0).Select
62
Le indica a la celda activa que se desve o desplace a la fila de abajo, cero columnas. El primer 1, es la coordenada de la fila, el dato despus de la coma, se refiere a las celdas que se desplaza por las columnas, como es cero, pues no se desplaza a la derecha, solo el parmetro de pasarse solo una celda abajo. Para ir a la celda anterior, la de arriba se le dira (-1, 0) Una celda a la derecha sin moverse de la fila (0, 1) Esta instruccin es importante aprendrsela, pues el grabador de macros de Excel NO LA HACE, pues siempre que se selecciona una nueva celda, Excel crea el cdigo de la celda que se selecciona, por ejemplo si selecciona la celda A1, el grabador de macros traducir Range(A1).Select Mas adelante en el tema de Macros, volveremos a trabajar el tema para que quede absolutamente claro. Ok. Ahora miremos como trabaja la macro: si sigui al pie de la letra las instrucciones ya la tenemos grabada en el libro de macros personal, y solo nos falta usarla para rellenar las celdas en blanco: Por ejemplo, mire la siguiente imagen:
Supongamos que usted ya ha arreglado manualmente un archivo plano y ya lo tiene as como se ve en la imagen. Resulta que como es un libro auxiliar, hacer la operacin de copiar la celda A10 en el rango A11 hasta el A15, volver a bajar hasta la A21, copiarla en el rango del A22 hasta el A26, y as, por todas las cuentas, es una tarea vuelvo y repito, dispendiosa. Entonces, en donde queremos que se detenga la macro, escribimos la palabra Fin, pero se escribe tal como se indic en la macro, esto es, La primera F en mayscula, y la in, las dos ltimas letras de Fin, en minscula. Si escribe fin, o FIN, la
63
macro no reconocer donde detenerse y se ir derecho hasta el final de la hoja de clculo, y la nica forma de detenerla es oprimiendo la tecla del computador de ESCAPE.
Aqu ya escribimos Fin en donde queremos que se detenga la macro. Ahora ubquese en la celda donde debe arrancar la macro, esto es en A1, o en A10, Una que tenga CONTENIDO, DATOS en la columna que necesita rellenar o copiar. Vaya por la ficha programador, escoja el botn macros, y seleccione la macro COPIAR. Luego dele clic en Ejecutar:
Si todo est correcto, podr ver la macro dentro de las macros disponibles en el libro, as:
64
Seleccione la Macro Copiar y haga clic en Ejecutar. Ver como hace la operacin a TODA VELOCIDAD:
Si le ha salido bien, a partir de este momento considero que se volver FANATICO de las macros, porque se habr dado cuenta de la cantidad de trabajo que le realiza en segundos. A este archivo solo le falta que lo ordene por la columna B y se deshaga de la basura sobrante de la columna A, y luego mediante la herramienta TEXTO EN COLUMNAS, haga las particiones necesarias.
65
En mi caso personal, solo a partir de este momento, comenc a trascender un poco ms el Excel Intermedio y comenc a meterme tmidamente en el mundo de las macros. Lo que pasaba en mi caso, es que la interfaz del Visual Basic, es una Interfaz que como todo lo nuevo parece extrao, y al no tener asesora, (ni libros en nuestro medio y mas an en ese entonces sobre el tema y para completar el Windows no vena en Espaol, como ahora) la incertidumbre reina y de la mano de ella el temor a lo desconocido viene con su amiguito MIEDO, y creo que esa es una de las razones por las cuales, no nos aventuramos a lo desconocido por nosotros mismos. Pero casi todo en la vida lo aprendemos empricamente; los sistemas no son la excepcin, se tiende a volver uno Cacharrero, Cacharreando es el termino usado en Colombia para referirse a que mediante el milenario mtodo de Prueba y Error, vamos construyendo el nuevo conocimiento. Antes de continuar con el tema de macros, necesito que asimile los siguientes temas que le voy a presentar sobre Excel, ya que si los comprende, podr aprovecharlos cuando monte sus macros, pues todo lo que se hace en Excel se puede grabar en macro.
66
Filtros A la hora de depurar los datos los filtros ofrecen un ENORME potencial. Y en el Excel 2007, ni hablar. La principal diferencia de los filtros de la versin de Excel 2003 contra la versin del 2007, es que Excel 2003 solo podas hacer tres filtros, mientras que en Excel 2007 puedes ingresar mas de tres. (Pero ojo, si colocas demasiados filtros la maquina se te puede quedar MUERTA, o informarte que la operacin es muy compleja) Como el tema que nos atae es la depuracin de los archivos planos, veremos con imgenes como los podemos usar para depurar los archivos planos. Tenemos en la siguiente imagen un archivo plano abierto en Excel:
Como podr darse cuenta, prefiero abrir el archivo plano con el asistente para importar texto Y NO COLOCARLE COLUMNAS TODAVIA. Es decir, no uso ningn separador y toda la columna la selecciono como que es de tipo texto. Empaqueto el archivo plano en la columna A, como se ve en la grafica. Esto me facilita AGARRAR todos los registros indeseados mucho ms fcil. Luego, se puede proceder a la particin, para eso existe la herramienta Texto en Columnas que ya hemos visto. Para meter el filtro, simplemente vaya a la ficha inicio, y all, a la extrema derecha, seleccione el grupo de botones
67
modificar. All ver un embudito, . Entonces: Marque o seleccione la Columna A, y escoja el embudito de ordenar y filtrar. Este filtro tambin lo encuentra en la ficha Datos. Entonces, si lo hizo bien, tendr algo as:
Puede ver que sali una pestaa all en la fila dos. Quiero que se fije que este archivo plano, todo el encabezado del listado no nos agrega valor, es basura. Si se fija, vera que el encabezado tiene o
comienza con un palito de estos:| en mi teclado, el palito lo tengo al lado izquierdo del nmero uno que est encima de la letra Q. Esa caracterstica nos sirve para seleccionar un filtro que nos elimine en un solo tiro el encabezado, puesto que este, siempre CONTIENE el carcter palito Preste atencin a la siguiente imagen:
|.
68
Hice clic en la pestaa del filtro y me sali el men emergente, por all me fui a la opcin Filtros de texto, y luego, clic en contiene. Siguiente imagen:
Fjese que en Contiene puse el palito. Si no lo puede sacar con su teclado, pues copie el carcter y en la caja de texto del autofiltro personalizado, pguelo con el men emergente.
69
Fjese como quedaron seleccionados todos los encabezados QUE NO QUEREMOS TENER. Solo nos falta eliminarlos, seleccionar desde la fila 2, hasta el final, y con el men emergente, dar clic en eliminar toda la fila, as:
70
Y eso es todo. No olvide quitar el filtro. As se utilizan los filtros para eliminar la basurita de los archivos planos. Pasemos a la siguiente forma de eliminar la basurita, pues a veces este truquito no funciona, sobretodo cuando estas manejando archivos muy, muy grandes.
71
72
Ordenar los datos Esta tcnica es de las que mas se usan a la hora de DESHACERSE Manualmente de la basurita de los archivos planos, pues se ordena por una columna que uno considera que es por donde se pueden seleccionar JUNTICOS todos los datos que son basura, de tal manera que simplemente se seleccionen las filas de la basurita que esta reunida y se eliminen todas las filas. Yo le puedo contar, por experiencia, que cuando se utiliza la tcnica vista anteriormente de los filtros para eliminar la basurita de los archivos planos de archivos extremadamente grandes, hablo de mas de 300.000 mil filas, es muy posible que, su maquina computadora SE NIEGUE a eliminar las filas filtradas seleccionadas, y le indique un mensaje que diga No hay recursos suficientes, Seleccin demasiado compleja o en otros casos puede que haga la operacin, pero elimine hasta las filas que no tiene que eliminar, es decir, hasta las que estn ocultas y no haban sido filtradas. Si a esto le suma, que la operacin que se le pide a Excel es tan grande que el programa se ve imposibilitado para que la opcin DESHACER no deshaga la operacin, pues. PEOR AUN. Si le llega a pasar, lo mejor es que cierre el archivo SIN GUARDAR CAMBIOS, y lo vuelva a abrir. Es preferible volver a repetir los ltimos pasos, que perder informacin importante. Entonces, que hacer? Si Usted se fija, a Excel y la mquina le cuesta trabajo filtrar una enorme cantidad de filas, PERO, si Usted le agrupa la basurita en sectores, esto es ordenando los datos, pues, AH si, Excel si le podr borrar la informacin sin problema, y lo har a una velocidad an mayor, pues Usted ya le habr colaborado a Excel, agrupndole la basurita. Como mencionaba en la introduccin, Excel 2007 tiene mas de 1.040.000 (Un milln cuarenta mil) filas, entonces, no es difcil entender que si tiene un archivo plano que COPA casi toda la capacidad de la hoja electrnica, al hacer el borrado de las celdas filtradas, Excel simplemente no lo pueda hacer. Haga esta analoga mental, para que asocie el tamao de memoria que usa la hoja de clculo en el nuevo Excel: Excel tiene 1.048.576 filas. Puede ver que visualmente, una fila corresponde ms o menos a medio centmetro de grueso. Entonces, estamos hablando que el nuevo Excel sostiene una hoja de clculo que en cuanto al largo, corresponde no a una hoja, sino a una sbana de 5 kilmetros 242 metros ! Ahora, un archivo de 600.000 filas de largo, como puede ser un archivo plano de Kardex de todo un ao, o algunos meses, estamos hablando de una hoja que VIRTUALMENTE MIDE 3 kilmetros de largo: 600.000 filas dividido entre 0,5 centmetros = 300.000 mil centmetros, divididos a su vez entre 100, tenemos 3.000 metros, = 3 kilmetros. Esto lo traigo a colacin para que sea consciente y no se ofusque si su mquina se queda un poco pegada, tenga en cuenta que SON MUCHOS LOS ARREGLOS QUE EXCEL DEBE HACER PARA DARLE GUSTO A USTED!! A m no me extraa, que los filtros no se puedan ejecutar en archivos tan grandes. Esto est directamente relacionado con la potencia de su maquina computadora, pero hasta las mas poderosas al momento de escribir este manual, las de 4 procesadores y 8 Gigas de memoria, tienden a quedarse Pegadas en este punto, o sea, hasta a los mas poderosos les pasa. Es posible que en los sistemas operativos de 64 bits halle mas potencia, pero los nuevos equipos siempre son ms costosos, y las aplicaciones (hasta ahora) todava no estn listas para trabajar en 64 bits. En lugar de esto, siempre es posible encontrar una solucin alterna, la que le propongo es que Ordene el archivo plano y en cuanto tenga la basurita agrupada, proceda a borrarla. Ver como Excel lo hace en un Santiamn (en segundos).
73
Cuando he tenido que trabajar archivos tan grandes? Como le mencionaba, he tomado el universo completo del kardex, he depurado el archivo plano y una vez convertido en base de datos lo he cruzado, verificando si los documentos me cuadran contra el archivo plano depurado del libro auxiliar. Mas adelante, en tablas dinmicas, ver COMO PUEDE HACER ESTO EN SEGUNDOS, Y CONCILIACIONES REALMENTE INMENSAS LAS PUEDE HACER EN SEGUNDOS.UNA COSA SENCILLAMENTE INCREIBLE. Ok. Sigamos: De acuerdo al archivo del grafico que le vengo enseando, le voy a mostrar en las siguientes graficas como seria el asunto: En primer lugar, cuando comience a utilizar la opcin de Ordenar, le aconsejo que Inserte una nueva columna (de primera, es decir en la columna A) y coloque a todo lo largo de esta columna, de arriba hacia abajo, una serie de nmeros del uno, hasta el final del archivo. Esta tcnica la usan mucho por ah y la verdad que es til, puesto que, si Usted desordena el archivo, siempre que vuelva a ordenar por la nueva columna 1 que contendr la serie de nmeros, el archivo le quedar ordenado como estaba originalmente. Pero, Cmo colocar esa serie rpidamente? Por lo general los usuarios colocan en la celda A1, el numero 1, y en la A2, el numero 2, seleccionan las dos celdas y van arrastrando hasta el final. Si el archivo es muy grande, probablemente se quede unos buenos minutos EN ESAS. La forma ms rpida, de hacer en segundos, el relleno de la serie, casi automticamente, es de la siguiente forma. Preste atencin: Paso 1: Inserte dos columnas.
74
75
All mismo, de una vez, oprima la celda FIN y a continuacin la flecha hacia abajo. Llegar hasta la ultima celda de Excel en la columna A, la celda 1.048.576 luego se desplcese a la celda C
76
Estando en la celda C1048576, oprima nuevamente FIN y luego la flecha arriba. Con esta accin, el cursor se estrellar con el final del listado:
Estando ya, en la ltima parte, o final del listado, desplcese nuevamente a la columna A. All, coloque una marca tal como una x, as:
77
Luego, copie esa celda con control, oprima al mismo tiempo la tecla Short, luego FIN, y luego la flecha del cursor arriba. Ver como selecciona todo el rango, desde la ltima celda hasta la primera. Luego d enter para que se pegue en el rango todo lo copiado:
Listo, ahora ubquese en la celda B1, e ingrese el numero 1, luego en B2 e ingrese el numero 2. Luego seleccione estas dos celdas, B1 y B2, as:
78
Luego ubique el puntero del ratn y haga doble clic en la esquina inferior derecha del cuadro de las dos celdas enmarcadas: Para que me entienda ms fcil, es hacer doble clic en este punto:
(Cuando se posiciona encima de ese mini cuadrito negro de la esquina, el cursor se convierte en una cruz negra delgada.) En cuanto haga doble clic all, la serie del 1 hasta el ultimo nmero se llenar automticamente, pues tiene una referencia de celdas por la que seguir el rastro y son las que usted ya cre rpidamente a todo lo largo de la columna A, cuando marc con x todas las celdas.
79
De esta manera, puede hacer la serie que le ayudar a Ordenar originalmente el listado que ordenaremos por otro criterio que nos facilite reunir en una sola zona la basurita y poder eliminar esas filas basura. Recordemos que este mtodo es alterno a eliminar la basura con filtros, pues al tratarse de archivos demasiado grandes, Excel podra negarse a hacerlo por insuficiencia de recursos. Sigamos: Una vez creado el serial, puede eliminar la columna A, esto es, la que contiene las x, pues ya no la necesita, ya cumpli su cometido de ayuda:
Listo, teniendo esta serie de nmeros como ayuda, podemos proceder a ordenar por la columna B, al hacerlo, todos los campos que son similares se ubicarn unos debajo de otros, y esto es lo que queremos que esas lneas de datos de formato de listado que no aportan nada, queden juntos de tal manera que podamos seleccionar esas filas y eliminarlas: Puede seleccionar toda la tabla de datos ubicndose en A1 y oprimiendo Crtl+Shift+*, luego vaya a la ficha Ordenar datos y ordene por la columna B:
80
Si se va desplazando hacia abajo, ver que la basura qued por all abajo: (a veces queda en la parte superior, en todo caso, al desplazarse encontrar en donde le qued reunida la basura):
81
En este punto, ya puede seleccionar, por ejemplo, en este caso, las filas que contienen esas rayas que no agregan valor:
Y las puede eliminar, o puede optar por seguir la seleccin con lo que contina, (los lapsos) que tambin son basura, y luego, eliminar todas esas filas. Y as, sucesivamente, va eliminando la basura (incluidas esas celdas en blanco) y luego ordena todo nuevamente por la columna a, y retorna al orden original del listado, pero, ya ser sin la basurita de los encabezados: Aqu ilustramos como seleccionamos la basurita de los encabezados y vamos a eliminarla:
82
En la siguiente imagen ya hemos eliminado y ya hemos ordenado nuevamente por la columna A, retornando al orden original, pero sin la basurita.
Esta es la manera en la cual, Ordenar los datos nos puede ayudar a depurar los archivos planos muy grandes que no se pueden limpiar con los filtros.
83
Funciones de uso frecuente Las funciones o formulas de uso frecuente es un tema que conviene saberlo, ir aprendindolo, pues ofrecen un tremendo potencial una vez que se conocen. Otra razn ms de peso es el hecho de que si tiene buenas bases en el manejo de frmulas, podr incluirlas en las macros que escriba. Para saber manejar un auto formula uno (las macros) debes de saber manejar bien todas las cosas bsicas de un vehculo. Las he limitado a unas pocas funciones de uso frecuente y tcnicas tiles en un rea contable, es decir, a la vez que se explica como se montan las funciones de uso frecuente, vamos a ir mostrando ejemplos prcticos. Si Usted est registrado en mi pagina web o grupo en Facebook, puede descargar el diccionario de formulas, (el cual es la traduccin del trabajo del Seor Peter Noneley que est en Ingls y que tambin se consigue gratis en Internet desde hace muchos aos) y ver, directamente en Excel como operan las funciones de uso frecuente para un rea contable. En esta seccin hablaremos de las ms importantes, pero en la web encontrar todava ms, por si desea profundizar en otras funciones. Funcin Si La funcin si, sirve para evaluar una celda, y dependiendo de su contenido (o condicin), podemos hacer o no, un clculo o colocar un mensaje, o colocar otra formula si su contenido es adecuado, o colocar otra formula si el contenido no es adecuado o acorde con la evaluacin. Una funcin si, puede colocar en su interior mas Ss, en el nuevo Excel pueden Anidarse (as se dice) hasta 64 S condicionales. Claro que debe de saber que es raro que uno realice tantas anidaciones, por lo general con unas cuantas se suelen cubrir las necesidades de accin. Miremos el ejemplo:
En este caso estamos haciendo un ejemplo mediante el cual estamos revisando rpidamente si los asesores comerciales o representantes de ventas han logrado el objetivo. Si usted, como jefe, debe de revisar si cumplieron o no, podr darse cuenta que en una cuadrilla de muchos vendedores, la tareta puede ser un poco dispendiosa de lograr. Sin embargo, si Usted monta una formulita Si condicional, se puede deshacer de esta tarea engorrosa, en segundos. Como? Simplemente evaluando la condicin de la celda que contiene las ventas contra el objetivo, comparando que, si el valor de las ventas es mayor o igual que el objetivo, pues nos alerte colocando un texto, que puede ser la palabra Bien o Mal. En la columna F, se ha puesto la formula que est en las celdas E que hacen la comparacin. Ahora ampliemos mas el conocimiento de la funcin Si mirando la ficha tcnica: Que hace? Evala una condicin. Si la condicin se cumple se considera VERDADERO. Caso contrario se considera FALSO. Dependiendo de este resultado, una de dos acciones se pueden llevar a cabo. Sintaxis =SI(Condicin, Accin Si es Verdadera, Accin si es falsa) Por lo general la condicin evala dos celdas, tal como A1=A2. Las acciones verdadera y falsa pueden ser nmeros textos o clculos.
84
Formato No se requiere. Ejemplo 1 La siguiente tabla muestra los resultados de ventas y objetivos de algunos representantes de ventas. Cada uno de ellos tiene su propia meta la cual debe alcanzar. La funcin =SI() se utiliza para comparar las ventas con la meta. Si las ventas resultan mayores o iguales a la meta se muestra el resultado "OK". Si las ventas no alcanzan el objetivo se muestra el resultado "No alcanzado" Observe que el texto que se inserta en la funcin =SI() se debe encerrar en doble comilla.
Ejemplo 2 Este ejemplo es similar al anterior. En esta ocasin se calcula la comisin a ser pagada. Si las ventas son mayores o iguales a la meta, se paga una comisin de 10% sobre las ventas. Si las ventas no alcanzan la meta, se paga una comisin del 5%.
Ejemplo 3 Este ejemplo utiliza la funcin =Y() con la funcin =SI() Un comerciante concede un 10% de descuento en algunas lneas de sus productos. El descuento se concede en los productos que estn en oferta especial, y cuando el pedido es mayor a $1.000 La funcin =Y() se usa con la funcin =SI() para verificar si el producto esta en oferta y si el pedido se encuentra por encima de $1.000
De manera similar, puede anidarse la funcin O para verificar el cumplimiento de una de dos condiciones, en lugar de que se verifiquen que sean dos condiciones al mismo tiempo, efecto que se consigue con la funcin Y.
85
Funcin Izquierda
Que hace? Trae un nmero determinado de caracteres desde el lado izquierdo de un texto. Sintaxis =IZQUIERDA(Texto original, nmero de caracteres requeridos) Formato No se requiere. Ejemplo La siguiente tabla se usa para extraer el primer nombre de una persona desde su nombre completo. La funcin =ENCONTRAR() se usa para localizar la posicin del espacio entre el primer y segundo nombre. Entonces el largo del primer nombre es la posicin del espacio menos un carcter. La funcin =IZQUIERDA() puede ahora extraer el primer nombre basado en la posicin del espacio.
Se puede dar cuenta que las formulas anidadas combinan su potencial y nos dan muy buenas soluciones.
86
Funcin Derecha
Que hace? Extrae un nmero especfico de caracteres desde la derecha de un texto. Sintaxis =DERECHA(Texto Original, Nmero de caracteres requeridos) Formato No se requiere
Ejemplo La siguiente tabla fue usada para extraer el segundo nombre de un texto que contiene nombre y apellido. La funcin =ENCONTRAR() ubica la posicin del espacio entre el primero y el segundo nombre. La longitud del segundo nombre se calcula restando la posicin del espacio de la longitud total del nombre completo, con lo que la funcin =DERECHA() ya queda en condiciones de extraer el segundo nombre.
Al igual que en el caso anterior, se puede dar cuenta que las formulas anidadas combinan su potencial y nos dan muy buenas soluciones.
87
Funcin Extrae
Que hace? Trae un pedazo de texto desde la mitad de una celda con texto. Para tal fin necesita saber el punto de inicio y cuantos caracteres traer. Si el nmero de caracteres a traer excede el nmero de caracteres disponibles, trae los caracteres disponibles.
Sintaxis =EXTRAE(Texto Original, Posicin de inicio, nmero de caracteres a traer) Formato No se requiere. Ejemplo 1 La siguiente tabla usa la funcin =Extrae() [en Ingls =MID()] para extraer un cdigo postal desde un ID utilizado por la compaa. En este caso, se asume y aplica que siempre se usa el mismo formato con la misma cantidad de Caracteres. El cdigo postal se encuentra en la 5ta y 6ta posicin.
Ejemplo 2 Este otro ejemplo muestra como extraer un tem el cual es de longitud variada, el cual se encuentra dentro de una pieza de texto que NO tiene un formato estndar, pero que siempre se encuentra entre dos smbolos slash /.
88
Funcin Concatenar
Que hace ? Esta funcin une piezas de texto separadas. Sintaxis =CONCATENAR(Texto1,Texto2,Texto3...Texto30) Hasta 30 textos se pueden encadenar Formato No se necesita. NOTA Puedes lograr el mismo resultado usando el operador & Ampersand, normalmente se encuentra en la tecla Shift + 6
89
Funcin Espacios Esta funcin es til cuando se hace limpieza de los campos de un archivo plano, pues, para Excel, lo que no se ve, no quiere decir que no est all, y estos espacios a menudo son un problemita serio, que no permite que otras funciones tales como =BuscarV() o =Sumar.Si no operen como se espera, y uno, se arranque las mechas sin poder entender porque no funcionan las @#?$& funciones. Entonces, piense que tal vez el valor buscado o sumado no es exactamente igual, Revise y depure los campos con la ayuda de esta funcin.
Que hace? Remueve espacios indeseados de una pieza de texto. Los espacios antes u despus del texto se remueven completamente. Los espacios mltiples dentro del texto quedan en un solo espacio. Es til para limpiar informacin que baja de los programas contables que residen en los servidores, sobretodo los espacios que quedan al final, que son invisibles y que presentan molestias en los programas que validan Informacin. Sintaxis =ESPACIOS(Texto a corregir)
90
Funcin Texto En algunas ocasiones, necesitamos que los nmeros se ordenen como si fueran un texto y no un nmero, ya que la ordenarlos como nmero se acomodan de menor a mayor cuanta, mas no por los caracteres del texto, y en ocasiones, por ejemplo, necesitamos que el 11 quede debajo del 1. (Ejemplo, el disponible, debajo del 1, Activo). Para esto, podemos usar la funcin texto, que es muy fcil de usar como ver a continuacin.
Que hace? Convierte un nmero en texto. Se necesita especificar el formato de texto en la funcin. No est de ms indicar que una vez convertido Excel dejar de tratarlo como nmero, por lo que no podr hacer clculos con l Sintaxis =TEXTO(Nmero a Convertir, Formato de Conversin) Funcin Valor Esta funcin toma un nmero que est en formato Texto y de manera similar a la funcin texto, lo convierte en tipo nmero. Ejemplo: En la depuracin de archivos planos esta funcin es de mucha utilidad, como le mostrar a continuacin:
Como puede ver, este segmento de archivo plano est empaquetado en la columna A. Mediante la herramienta Datos Texto en Columnas, podemos traer el asistente de importacin de archivos planos, y hacer la particin del segmento plano, estos es, asignar las rayitas que sern las columnas, as:
91
En la siguiente seccin, observe que los valores crdito van con un CR, en ese punto, observe como contino haciendo la particin:
En el siguiente paso, le aconsejo que le coloque a todos los datos que son tipo texto, hasta para los que se ven como nmeros. Es mejor, ya que algunos valores numricos son algo confusos, y Excel nos los puede traer de manera errada. Posteriormente les daremos el mismo tratamiento que les dimos en el apartado en el cual explicbamos como arreglar estos valores con el buscar y reemplazar. No obstante hacer este truco, es posible que algunos datos an se resistan a ser convertidos en valores, entonces, all es cuando entra la funcin valor en accin:
Aprovechando que ya vimos la funcin =SI(), vamos a usarla para que los valores que tienen un CR al lado, sean multiplicados por -1: Primero vamos a arreglar los valores de la columna C con esta formula: Si D2 es CR, entonces multiplique C2 x menos 1, sino, djela igual, esto es, coloque C2:
92
Ahora, como decamos que es probable que existan nmeros tipo texto que se resisten a convertirse en datos numricos, usramos la funcin =Valor(); entonces, anidmosla dentro de la formula si:
Observe que si es CR, despus del punto y coma hay un signo menos que antecede a la funcin =Valor(). Casos ms difciles en cuales se necesita extraer el valor de una cadena de texto: Si el nmero se encuentra en la mitad de un texto largo, se tendr que extraer usando otras funciones de texto tales como =HALLAR(), =EXTRAE(), =ENCONTRAR(), =SUSTITUIR(), IZQUIERDA() o DERECHA() Caso 1:
En este caso, estamos extrayendo y encontrando con ayuda de la funcin Hallar, el signo $ pesos que antecede el nmero que siempre se encontrar a la derecha. La funcin extrae toma la celda, luego pide el segundo argumento que es, desde donde le hago la extraccin? Le decimos con ayuda de =Hallar() que lo haga desde donde aparezca el signo pesos, y de all que tome 99 dgitos. Todo es encapsulado o tomado en conjunto por la funcin valor, que convierte el texto numrico extrado, en un valor.
93
Caso 2
Este caso es ms complicadito que el anterior, pero igual, nada que no sea posible de hacer. El valor en porcentaje es de una longitud variable, puede ser uno dos o tres dgitos de largo. La nica manera de identificar el valor es el hecho de que siempre termina con el signo %. No hay forma de identificar el comienzo del valor, lo nico es que viene precedido por un espacio. El principal problema es calcular la longitud del valor a extraer. Si la extraccin asume el largo mximo de tres dgitos y el signo de %, se tendrn errores cuando el porcentaje se de slo un dgito de largo, cuando se hallen caracteres alfabticos adyacentes. Para resolver el problema la funcin =SUSTITUIR() se utiliza para incrementar el tamao de los espacios en el texto. Ahora cuando la extraccin tenga lugar cualquier carcter innecesario estar precedido de espacios los cuales sern ignorados por la funcin =VALOR() Se recomienda estudiar las funciones de primer y segundo nivel usadas aqu, tales como =HALLAR()=SUSTITUIR() y =EXTRAE()
94
Funcin Hallar
Que hace ? Busca una letra o cadena de caracteres dentro de una pieza de texto y cuando la encuentra, muestra el nmero de la posicin de la letra o primera letra del texto o letra buscado. Si la letra no est, se indica un error tipo #VALOR NOTA : Esta frmula NO diferencia entre maysculas y minsculas. Sintaxis =HALLAR(Texto buscado, Texto, Posicin inicial) Texto buscado: Es el texto que se desea encontrar. Se puede usar * como carcter comodn; es decir, por ejemplo, para buscar cualquier texto que contenga una parte de las letras "*ola*" Texto: Es la pieza de texto en la cual se buscar la letra. Posicin inicial: Es opcional, especifica el punto en el cual la bsqueda del texto iniciar. Formato No se necesita, el resultado se ensea como un nmero.
Funcin Sustituir
Si Usted es contador y le ha tocado manejar informacin exgena que solicita el fisco, le habr tocado lidiar con los caracteres extraos que a veces salen en los archivos importados. Esta funcin ofrece una excelente manera de corregirlos.
Que hace ? Reemplaza una pieza de texto con otra. Puede reemplazar todas las ocurrencias de texto o una instancia especfica. Considera maysculas y minsculas.
95
Sintaxis =SUBSTITUIR(Texto Original, Texto a Remover, Texto a Insertar, Instancia requerida) La instancia es opcional, Si se omite todas las instancias se sustituyen. Formato No se requiere. Nota Como esta frmula distingue Maysculas y minsculas, puede usar otras funciones de texto que aseguren el efecto deseado tales como =MAYUSCULA, =MINUSCULA() o =NOMPROPIO() Funcin Mayscula
Que hace ? Convierte todos los caracteres de una celda a mayscula. Sintaxis =MAYUSCULA(Texto a Convertir)
Funcin Minscula
Que hace ? Convierte todos los caracteres de un texto a minscula: Sintaxis =MINUSCULA(Texto a convertir)
96
Funcin Nompropio
Que hace ? Esta funcin convierte las primeras letras de cada palabra en maysculas y las dems letras en minsculas. Sintaxis =NOMPROPIO(Texto a Convertir) Antes de continuar, es posible que usted se est preguntando como hacer que solo la primera celda quede en mayscula y las dems en minscula. Cuando se arman los balances con sus notas, por lo general, el estilo del texto de los nombres de las cuentas es de esta manera, y para esta tarea, esta funcin =NOMPROPIO() sencillamente NO SIRVE. Que hacer? Le tengo la solucin, anidando las funciones vistas, as:
Esta anidacin arranca primero convirtiendo la primera letra de la izquierda en mayscula, luego, amarra el resultado de esa primera formula o funcin concatenndola con el ampersand & a la siguiente funcin: Minscula. Y minscula anida dentro de ella la funcin Extrae, que, como su nombre lo indica, extrae desde el segundo digito a la derecha hasta 100 dgitos. Al estar anidado dentro de minscula, todo lo correspondiente al segundo digito hasta 100 dgitos es convertido a minscula.
97
Funcin Largo
Que hace ? Cuenta el nmero de caracteres, incluyendo espacios y nmeros de una celda que contiene texto. Sintaxis =LARGO(Texto)
Funcin BuscarV
Probablemente BuscarV sea la funcin mas utilizada de Excel, con justa causa, por el enorme potencial que ofrece. Sin embargo, combinada con otras funciones ofrece un potencial todava mayor, por esa razn nos detendremos un poco ms en esta funcin, para que comience a aguzar su mente y su creatividad.
Que hace ? Busca un tem debajo del encabezado de columna indicado, en las filas de esa columna, y cuando lo ubica, se v por ese rengln de fila atravezando la tabla hacia la derecha, y se detiene en el nmero de columna indicado, trayendo el valor que requiere el usuario. Sintaxis =BUSCARV(Item a Encontrar, Rango o Tabla de Bsqueda, Columna de la que se debe traer, Ordenado o Desordenado) El Item a Encontrar es un solo item especificado por el usuario. El Rango o Tabla de busqueda es el rango de informacin con ttulos en sus encabezados de columna. Columna de la que se debe traer es el nmero de columna contando a partir de la primera que se
98
utiliza, pues una vez hallado el Item en la fila de la primera columna, se atraviesa la tabla hasta cierto nmero de columna. Ordenado o Desordenado se usa cuando los encabezados de columna estn ordenados. VERDADERO o 1 si est ordenado, FALSO o 0 (cero) si no. Con Verdadero, si no encuentra una coincidencia exacta trae la mas parecida, con Falso si no halla la coincidencia exacta, trae un error tipo #N/A Formato No se requiere. Ejemplo 1 Esta tabla es usada para encontrar un valor basado en un mes y nombre especficos. La funcin =BUSCARV() se usa para rastrear abajo para encontrar el nombre. El problema surge cuando una vez encontrado, no sabemos en cual columna de mes detenernos. Para resolver el problema se obtiene ayuda de la funcin =COINCIDIR(). La funcin =COINCIDIR() busca en la lista de nombres para encontrar el mes que se requiere y calcula la posicin del mes en la lista. Pero debido a que la lista de meses no es la misma que el rango de bsqueda, se le debe adicionar un 1 para compensar. Con lo anterior, la funcin =BUSCARV() ahora usa la posicin del mes que le entrega la funcin =COINCIDIR() con lo cual puede cumplir el siguiente paso, que es atravesar la tabla o rango para traer el Item que finalmente se encuentra en la columna del mes. La funcin BUSCARV() usa FALSO al final de la funcin para indicarle a Excel que los encabezados de fila no estn ordenados.
Ejemplo 2 Este otro ejemplo muestra como la funcin =BUSCARV() se usa para traer el costo de un repuesto de diferentes marcas de carros. La funcin =BUSCARV() busca hacia abajo, de los encabezados de fila en la columna F el repuesto de la columna C. Cuando lo ubica, =BUSCARV() busca a travs de la tabla para encontrar el precio, usando el nmero de posicin que le entrega la funcin =COINCIDIR() y as ubicar el nmero de columna para la marca del carro. La funcin utiliza rangos absolutos indicados por el signo $. Esto asegura que cuando la frmula es copiada a mas celdas, los rangos de =BUSCARV() y =COINCIDIR() no cambien.
99
Ejemplo 3 En este otro ejemplo ms complejo, un vendedor de materiales de construccin, ofrece descuentos en los pedidos ms grandes. La tabla de costo unitario contiene el costo de 1 unidad de Ladrillo, Madera y Cristal. La tabla de descuentos contiene diferentes descuentos para diferentes cantidades de cada uno de estos productos. La tabla de rdenes se usa para ingresar las mismas y calcular el total. Todos los clculos tienen lugar en la tabla de rdenes. El nombre del producto se indica en la columna C. El costo unitario de cada producto se busca en la tabla de costo unitario. La opcin FALSO se utiliza al final de la funcin para indicar que los productos en los encabezados de la tabla costo unitario no se encuentran ordenados. Usando esta opcin se indica a la funcin que busque la coincidencia exacta. Si la coincidencia no se encuentra, la funcin produce un error. =BUSCARV(C140;C128:D130;2;FALSO) Luego el descuento se busca en la tabla de descuentos. Si la cantidad ordenada coincide con el valor del encabezado de la tabla de descuento, la funcin =BUSCARV() ubicar en esa columna hacia abajo para seguir buscando el descuento correcto. La opcin VERDADERO se utiliza al final de la funcin para indicar que los valores se encuentran ordenados. Adicionalmente, permite a la funcin hacer una coincidencia aproximada, lo cual sirve para el propsito planteado, pues si la cantidad ordenada no coincide con ningn valor del encabezado de la tabla de descuentos, el siguiente valor mas cercano pero bajo es escogido. =BUSCARV(D140;F128:I130;COINCIDIR(C140;G127:I127;0)+1;VERDADERO)
100
En primera instancia puede parecer complicado, si Usted est suscrito (gratis) en nuestra web, puede descargar los ejemplos en archivos Excel, de tal manera que le facilite el aprendizaje.
Ejemplo 4 Se muestra como anidar la funcin =ESPACIOS() dentro de =BUSCARV(), para eliminar la posibilidad de que la frmula nos muestre un error tipo #N/A, cuando en realidad el Match SI existe. Debe tener sumo cuidado y tener en cuenta que algunos Items puede que se vean iguales pero que es probable que para Excel no lo sean. De igual forma se muestra como deshacerse del error #N/A cuando se tiene certeza de que en verdad NO aparece el item buscado.(Solo se quiere descartar el error #N/A,) Para este fin nos valemos de la funcion =SI() y la funcin =ESNOD() Tenga en cuenta que si ha bajado informacin de un servidor en el cual reside el programa de control, es probable que haya importado informacin con caracteres extraos, con lo cual Excel tambin el mostrar un #N/A
101
Como usted sabe que la funcin =SI() toma accin para el caso en el cual sea verdadera o falsa una condicin, pues nos valemos de ella y de la funcin =ESNOD() para realizar la tarea anterior. En primer lugar, ESNOD evala si la funcin BUSCARV muestra un error #N/A. Si no lo es, no pasa nada, pues se pasa a la accin para el caso en que el error sea falso, y esa accin es que se realice la funcin BuscarV otra vez. Pero SI en verdad ESNOD est arrojando un error tipo #N/A, entonces internamente arrojar un VERDADERO, que ser interpretado por la funcin SI, y en consecuencia, la funcin SI har lo que le pedimos en la formula, que es, que emita un mensaje al usuario. (El mensaje se debe colocar entre comillas). Si desea que aparezca un cero 0, coloque el cero sin las comillas. Si desea que aparezca NADA, no coloque nada entre las comillas, as: "" O si desea realizar otra accin mediante otra frmula, colquela en esa parte del argumento.
102
103
Aqu se busca el producto en la tabla de precios del mes, cuando encuentra el producto, busca el nmero del mes en la tabla de los meses, para saber cual de los precios por mes traer.
104
En ocasiones necesitamos montar una formula que nos ubique primero la categora y dentro de ella, ubique el siguiente dato, para traer una tercera informacin. Una solucin es combinar la funcin BuscarV o BuscarH con la funcin Coincidir. (Ya se present un ejemplo de estos anteriormente) Primero se debe de reorganizar la tabla de datos, como se muestra a continuacin, dependiendo de la funcin que utilices:
105
Para lograr este cometido, de buscar en una Categora, una subcategora y luego en una tercera Sub categora, ya abandonamos la funcin BuscarV, y nos valemos de otras funciones de bsqueda: ndice
106
y Coincidir, pero ingresadas como funcin matricial. Para entender como operan las funciones matriciales, por favor vaya al apartado que explica el tema, por lo pronto, debe saber que este tipo de formulas se escriben pero se ingresan NO dando enter, sino, oprimiendo al mismo tiempo, las teclas Control + Shift + Enter.
Si muy buena su solucin pero, yo quiero que me traiga la columna que yo quiera Como se hace ?
Aqu hay una variacin del caso anterior, para que no diga que no se le trata bien Con otro coincidir ubica la columna, Info1, Info2 o Info3 . . . Tabla Ejemplo:
Como puede darse cuenta, en temas de bsqueda, no hay tema que sea imposible de sacar adelante con la ayuda de Excel.
107
Desconocido
No
Explicacin para la formula en la primera tabla: La formula Si, nos sirve para el evento en el cual =BuscarV() devuelve el error #N/A, el cual solo se presenta si =BuscarV() no encuentra el valor buscado, en ese caso, la funcin =Eserror() lo detecta y pasa a ensear el Texto Id desconocido (o el que usted quiera colocar entre comillas). Si no hay error, vuelve y ejecuta la funcin =BuscarV(), pero en este caso, ahora rastrear la localizacin. De manera similar se ha montado la formula en la segunda tabla. Esta solucin es buena, pero la verdad, yo prefiero cruzar los datos con ayuda de las tablas dinmicas de Excel, es sencillamente REVOLUCIONARIO.
108
Funcin Indice
Que hace ? Recoge un valor desde un rango de informacin buscando hacia abajo un nmero indicado de filas y a travs de un nmero indicado de columnas. Se puede usar con un solo bloque de datos o bloques de datos separados.
Sintaxis 1 =INDICE(Rango en el cual se busca, Coordenada) Esta sintaxis se usa cuando el Rango en el cual se busca es una sola fila o columna. La Coordenada indica cuantas filas abajo o a travs se debe bajar o atravesar el rango para traer los datos que se encuentran en el rango. A diferencia de las funciones =BUSCAR() esta funcin trae la informacin que queremos al indicarle el rango y la direccin. Los ejemplos que se muestran a continuacin usan la misma sintaxis, pero las coordenadas se refieren a filas cuando el rango es vertical y a Columnas cuando el rango es horizontal.
109
Sintaxis 2 =INDICE(Rango en el cual se busca, Coordenada de Fila, Coordenada de Columna) Esta sintaxis se usa cuando el rango est conformado de varias filas y columnas.
Sintaxis 3 =INDICE(Rango en el cual se busca, Coordenada de Fila, Coordenada de Columna, rea de la cual se traer el dato) Se usa esta sintaxis cuando el rango a buscar esta conformado de varias reas. La mejor forma de maneras los rangos de varias reas es seleccionndolas y dndoles un solo nombre. El rea de la cual se traer el dato indica cual de las reas debe usar la funcin. En el siguiente ejemplo los rangos Norte y Sur han sido definidos como un solo rango llamado NorteYSur. Esta operacin se ejecuta en el men Insertar - Nombre - Definir. O bien, puede seleccionar los dos rangos (esto es, selecciona el primer rango con el ratn, oprime la tecla Ctrl y mantenindola oprimida, selecciona el segundo rango; luego suelta la tecla Ctrl y lleva le puntero del ratn hacia el cuadro de nombres. El cuadro de nombres es la primera casilla de la barra de frmulas. All, escribe NorteYSur. Los rangos que debe nombrar son los que estn coloreados de amarillo claro.
110
Ejemplo En este ejemplo se usan los nombres de los productos y los trimestres. La funcin =COINCIDIR() se usa para encontrar la posicin de la fila y la columna de los nombres ingresados. Estas posiciones son usadas por la funcin =INDICE() para traer la informacin.
111
Funcin Coincidir
Que hace ? Busca un item en una lista y muestra su posicin. Puede ser usada con texto y nmeros. Puede traer una coincidencia exacta o una coincidencia aproximada.
Sintaxis =COINCIDIR(Que es lo que se busca, Donde se busca, Tipo de coincidencia) El tipo de coincidencia puede ser 0, 1 o -1. Usando 0 se busca una coincidencia exacta. Si no la hay, el error #N/A aparece. Usando 1 busca una coincidencia exacta o el siguiente numero mas bajo. Si no hay ninguno de los dos, se muestra el error #N/A. La lista de valores a examinar debe estar ordenada para que la funcin trabaje correctamente. Usando -1 busca una coincidencia exacta o le siguiente nmero mas alto. Si no hay ninguno de los dos, se muestra el error #N/A. La lista de valores a examinar debe estar ordenada para que la funcin trabaje correctamente.
Ejemplos La opcin 0 es la mas apropiada para una coincidencia exacta. Una lista Ascendente da un match exacto. Un lista Descendente, tambin. Pero un valor que no existe en la lista no produce una coincidencia exacta, as que el error #N/A aparece.
112
Ejemplo 2 La opcin 1 es apropiada cuando se quiere encontrar la coincidencia exacta o la coincidencia siguiente mas baja. Con una lista Ascendente se consigue una coincidencia exacta Con una lista Descendente se obtiene un error #N/A (Not Available) Un valor errado se trae la coincidencia siguiente mas baja.
Ejemplo 3 La opcin -1 es apropiada para encontrar la coincidencia exacta o la coincidencia siguiente ms alta. Con una lista Ascendente se consigue un error #N/A Con una lista Descendente se obtiene una coincidencia exacta. Un valor errado trae la coincidencia siguiente ms alta.
113
Ejemplo 4 Esta tabla la usa una compaa de transportes para asignar los buses con suficientes sillas para los pasajeros. La lista del tamao de los buses por sillas se tiene en una lista. El nmero de pasajeros en el tour se ingresa una casilla para tal fin, y con la funcin =COINCIDIR() se ubica el bus correcto con las sillas suficientes. Si el nmero de pasajeros no coincide exactamente, el siguiente bus mas grande es seleccionado. Despus de que la funcin =COINCIDIR a encontrado la coincidencia exacta, la funcin =INDICE() se usa para buscar en la lista otra vez y traer el tamao de bus requerido.
Ejemplo 5 Esta tabla se usa para calcular el tipo de graduacin de los estudiantes. La lista de graduacin se tiene en una lista. El puntaje de los estudiantes se tiene en otra lista. El puntaje de los estudiantes se compara contra la lista de graduacin. Si no se encuentra una coincidencia exacta, la coincidencia siguiente mas baja es seleccionada. Luego la funcin =INDICE() busca para en la lista de graduacin para encontrar el tipo de graduacin.
114
Sumar.Si
Esta funcin es muy usada, entre otras cosas, en un rea contable sirve para totalizar rpidamente los valores de una cuenta en una hoja anexa. Aqu vamos a ir mas all en el uso de est funcin, para que Usted le saque verdaderamente el Jugo.
Que hace? Adiciona el valor de los items que coincidan con el criterio dado por el usuario. Sintaxis =SUMAR.SI(Rango de celdas a ser examinados, Criterio de coincidencia, Rango de Valores a Totalizar) =SUMAR.SI(C8:C16;"Frenos";E8:E16) Esta funcin examina los nombres de los productos en el rango C8:C16. Identifica las celdas que dice "Frenos". Luego, trae los valores para frenos que se encuentran en E8:E16 =SUMAR.SI(E8:E16;">=100") Esta otra funcin examina los valores en el rango E8:E16 Si el valor es >=100 el valor es sumado. Formato No se requiere.
115
116
117
Funcin SumaProducto
Que hace ? Utiliza por lo menos 2 columnas de valores. Los valores en la primera columna son multiplicados con el valor correspondiente en la segunda columna. El total de todos los valores es el resultado del clculo. Sintaxis =SUMAPRODUCTO(Rango1, Rango2, Rango3 hasta el Rango30) Ejemplo La siguiente tabla fue utilizada en un estanco (tienda de licores) para controlar las existencias. El propietario necesita conocer el valor de compra del stock y el valor potencial del mismo si es vendido, teniendo en cuenta un margen de ventas. La funcin =SUMAPRODUCTO() se usa para multiplicar las cajas con el precio por caja para calcular lo que el propietario gast en comprar este inventario. La funcin =SUMAPRODUCTO() tambin se usa para multiplicar las cajas en stock con las botellas por caja y el precio de venta de las botellas, para calcular el valor potencial del stock en caso de que se venda todo.
118
Escriba la formula =SUMA($D$11:D11) en la celda E11 y luego cpiela hacia abajo de la tabla.Funciona como queremos debido a que la primera referencia utiliza el smbolo $ para mantener $D$11 esttico cuando la frmula es copiada abajo. Cada ocurrencia de la funcin =SUMA() adiciona todos los nmeros desde la primera celda hacia abajo. Esta funcin se puede mejorar para que muestre 0 cero cuando no hay un valor en la celda adyacente usndola con la funcin =SI().
119
La formula en C27 se copia hacia abajo =SUMA(C11:INDICE(C11:N11;COINCIDIR($C$25;$C$10:$N$10;0))) Fjese que la suma arranca en C11: el destino lo da ndice y coincidir. Coincidir ubica la posicin del mes corriente y pasa el dato a ndice, que ubica el mes para formar el rango de suma. La formula para D27 se copia hacia abajo =SUM(B11:M11) La formula en C25, carga el mes automticamente, pues se vale de la funcin =HOY() para actualizar el cuadro inferior automticamente. Usted solo tendra que actualizar sus costos reales.
120
=SUMA(E40:DESREF(E40;0;0)) Este ejemplo usa la celda E40 como punto de referencia, sin filas o columnas de desviacin, por lo que el rango se queda en E40:E40. Fjese que el segundo E40 requerido por la funcin =SUMA() est conformado por =DESREF().
121
Observe que el separador de la funcin suma, los dos puntos (resaltados aqu en rojo) es el punto en donde se ingresa la funcin DESREF que arma el segundo rango.
En este ejemplo se usa E47 como punto de REFerencia con DESviacin de 1 columna para traer la celda F47,con lo que el rango que se forma es E47:F47
En este ejemplo se usa E52 como punto de REFerencia con DESviacin de 2 columnas para traer HASTA la celda G52, con lo que se forma el rango E52:G52
Usando DESREF dos veces en una frmula Dando alcance a los ejemplos anteriores, vamos avanzando un poco ms en complejidad. Los siguientes ejemplo usan =DESREF() para traer el inicio y el final de un rango que se requiere totalizar.
La celda E63 se utiliza como punto de salida en ambos DESREF y cada uno se desva 1 columna. El resultado es que solamente se utiliza la celda F63 para armar el rango F63:F63 que es el que calcula la funcin =SUMA()
122
La celda E69 se utiliza como punto de partida en ambos DESREF, el primero de ellos tiene desviacin de una columna y el segundo, dos columnas. El resultado es el rango F69:G69 el cual es el que se totaliza.
La celda E74 es la base de ambos DESREF, el primero con desviacin de una columna, y el segundo con desviacin de tres columnas. El resultado es el rango F74:H74 el cual es el que se totaliza. Ejemplo 1 La siguiente tabla muestra cinco meses de informacin. Para calcular el total de un rango especfico de meses se utiliza la funcin =DESREF() El punto inicial y el punto final se ingresa en las celdas F87 y F88 y se usan para armar la desviacin y producir un rango que pueda ser totalizado.
Explicacin A continuacin se va "desglosando" lo que la frmula =DESREF() anterior hace. Es una representacin que le servir para comprender como actualiza los datos con las celdas que contienen los meses (celdas F87 y F88) Formula 1 =SUMA(DESREF(D95;0;MES($F$87)):DESREF(D95;0;MES($F$88))) Esta es la frmula ingresada. El punto de inicio es la celda en blanco a la derecha de total o a la izquierda de "Enero", Con cero filas de alto y las columnas las da la funcin =MES() Formula 2 =SUMA(DESREF(D95;0;MES(2)):DESREF(D95;0;MES(3))) Aqu se muestra como la funcin =MES() calcula el nmero del mes. En el ejemplo los valores de los meses ingresados son 2 y 3 para febrero y marzo. Estos valores son las desviaciones relativas a la celda D95. Formula 3 =SUMA(DESREF(D95;0;2):DESREF(D95;0;3)) Aqu se muestra como los nmeros de los meses se usan en la funcin =DESREF(). Formula 4 =SUMA(F95:G95) Aqu se muestra como =DESREF es eventualmente igual a las direcciones a ser usadas como un rango para la funcin =SUMA. Ejemplo 2 Se muestra el primer caso del ejemplo anterior pero con la informacin en columnas:
123
En este caso el punto base a partir del cual se arman las referencias de la funcin suma es la celda D124; luego, si a la celda D124 le sumamos las posiciones obtenidas por la funcin MES, tenemos que para el primer rango se forma D124 + 2 = D126 y consecuentemente el segundo rango nos dara D124 + 3 = D127, Con lo cual la funcin =SUMA() obtiene los rangos D126:D127. Ejemplo 3 Se muestra el caso anterior sin usar los meses con formato fecha sino, en letras. Para controlar que se ingrese el mes en letras correcto se usa la herramienta validacin de datos. La validacin de datos se explica con ms claridad en el anexo correspondiente. En este ejemplo para conseguir la desviacin de los rangos prescindimos de la funcin =MES() del ejemplo anterior y utilizamos la funcin =COINCIDIR(); con su ayuda obtenemos la posicin del mes inicial en letras en la tabla de la izquierda.
Ejemplo 4 Se usa el mismo ejemplo anterior pero maximizando la utilidad de la funcin =DESREF() utilizando los argumentos Alto y Ancho. La misma funcin define el rango basado en la celda referencia, que en este nuevo ejemplo es la D171; a partir de all se le dice : "Baje la posiciones indicadas en el mes inicial"; esta desviacin es el segundo argumento; el tercer argumento para este caso, las columnas, se omite, es decir, se deja en cero. Luego, con la opcin Alto, se le indica el nmero de celdas que deber tener el rango. Esto se hace restando las posiciones del mes final contra el mes inicial y adicionando un 1. Por ejemplo, para Marzo que es posicin 3 y Febrero que es posicin 2, mas 1, obtenemos 2 (3-2+1=2), que es el Alto del rango indicado en mes inicial y mes final. Como estamos trabajando los meses en
124
letras, hacemos la operacin valindonos de la funcin =COINCIDIR(). El ltimo argumento, el Ancho es 1, pues se tiene una sola columna de ancho.
Ejemplo 5
En este ejemplo vamos mas all en la utilizacin de la funcin DESREF() y ahora controlamos un rango de informacin inmerso en una tabla de datos. Nos seguimos valiendo de la funcin =COINCIDIR() para ubicar las posiciones que necesitamos saber y as alimentar la frmula. El alto se obtiene ubicando con =COINCIDIR() la posicin inicial y final del mes, restando las mismas y sumando un uno (1). El ancho, de la misma forma, pero con los aos. Una manera de hacer ms manejables las formulas que se van tornando grandes y un poco complicado leerlas e ingresarlas, es usar la tcnica de asignar nombres a los rangos.
125
Recuerde que estos ejemplos los puede bajar de la web, directamente en Excel, para facilitar su aprendizaje. A continuacin vienen las funciones de bases de datos que no son muy conocidas, pero que nos ofrecen una tremenda utilidad cuando las conocemos y las sabemos manejar: Funcin BdContar
Qu hace ? Examina una lista de informacin y cuenta los valores de la columna especificada. SOLO cuenta valores, texto o celdas en blanco NO se tienen en cuenta. Sintaxis =BDCONTAR(RangoDeLaBaseDeDatos,NombreDelCampo,RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores que sern contados, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios
126
127
Funcin BdContarA
Que hace ? Examina una lista de informacin y cuenta todas las celdas que no estn en Blanco, en la columna especificada. Es decir, cuenta valores y texto. Pero las celdas en blanco son Ignoradas. Sintaxis =BDCONTARA(RangoDeLaBaseDeDatos,NombreDelCampo,RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores que sern contados, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios Formato No se necesita. Ejemplos Conteo de un producto particular, del cual se desconocen sus horas de vida.
128
Funcin BdExtraer
129
Si ms de un registro coincide con el criterio, se ensea el error tipo #NUM Si ningn registro coincide con el criterio, se muestra el error tipo #VALOR Sintaxis =BDEXTRAER(RangoDeLaBaseDeDatos, NombreDelCampo, RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores a extraer, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios
130
Funcin BdMax
Que hace? Examina una lista de informacin e informa el valor mximo de una columna especfica. Sintaxis =BDMAX(RangoDeLaBaseDeDatos, NombreDelCampo, RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores para recoger el valor mximo, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios Formato No se necesita. Ejemplos El inventario mas costoso de un producto y marca particular
131
Esta otra frmula hace el mismo clculo pero usando la palabra "Valor del Stock" que aparece en uno de los encabezados de columna, en lugar de la direccin de la celda, I7
132
Funcin BdMin
Que hace ? Examina una lista de informacin e informa el valor mnimo de una columna especfica. Sintaxis =BDMIN(RangoDeLaBaseDeDatos,NombreDelCampo,RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores para recoger el valor mnimo, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios Formato No se necesita. Ejemplos El inventario ms econmico de un producto y marca particular.
133
Esta otra frmula hace el mismo clculo pero usando la palabra "Valor del Stock" que aparece en uno de los encabezados de columna, en lugar de la direccin de la celda, I7.
134
Funcin BDSuma
Que hace ? Examina una lista de informacin e informa el total de una columna especfica. Sintaxis =BDSUMA(RangoDeLaBaseDeDatos,NombreDelCampo,RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores a totalizar, como por ejemplo "Valor del Stock" o I3 El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios. El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios. Formato No se necesita. Ejemplos El inventario total de un producto y marca particular
135
Esta otra frmula hace el mismo clculo pero usando la palabra "Valor del Stock" que aparece en uno de los encabezados de columna, en lugar de la direccin de la celda, I7.
136
BDPromedio
Que hace ? Examina una lista de informacin y produce un promedio. Sintaxis =BDPROMEDIO(RangoDeLaBaseDeDatos,NombreDelCampo,RangoDeCriterio) El Rango de la base de datos es toda la lista de informacin que se necesita examinar, incluyendo los nombres de los encabezados de la parte de arriba de las columnas respectivas. El Nombre del Campo es el nombre, o Celda, de los valores que sern promediados, como por ejemplo "Costo Unitario" o F3. El Rango de Criterio est formado por dos datos. El primer dato es el nombre o nombres de los campos que forman la base para seleccionar los registros, como por ejemplo, la marca o los watios. El segundo dato es el registro actual, o los registros los cuales sern seleccionados, como por ejemplo, General Electric como marca o 100 Watios. Formato No se necesita.
137
Esta otra frmula hace el mismo clculo pero usando la palabra "Costo Unitario" que aparece en uno de los encabezados de columna, en lugar de la direccin de la celda, F7.
138
Funcin Carcter
Que hace ? Convierte un nmero normal a carcter por la configuracin ANSI que usa Windows. Sintaxis =CARACTER(Numero) El numero debe estar entre 1 and 255. Formato El resultado ser un carcter sin formato especial. Si aplica un formato especial, el carcter se convertir en un smbolo asociado al formato de la fuente. Ejemplo La siguiente es la lista de los 255 nmeros y los caracteres que ellos representan. Observe que algunos caracteres no aplican y se muestran como un cuadro pequeo.
139
Ejemplo 2 Si cambia el tipo de fuente de ARIAL a Webdings, Wingdings, Wingdings 2, o Wingdings 3 (Fuentes simblicas) obtiene una amplia variedad de figuras. En la siguiente lista se cambi a tipo de fuente Wingdings (Los sombreados de rojo).
Ejemplo 3 Estos caracteres pueden utilizarse para hacer marcas de auditora, e incluso hacer verificaciones lgicas. Por ejemplo, el carcter 252, con Wingdings, obtiene un "chulito" de visto bueno. Si lo configura dentro de una funcin =SI(), puede traer dicho smbolo para el caso en que la operacin lgica sea correcta, y la X de error del carcter 251 si resulta incorrecta, as:
140
Funcin Elegir
Qu hace ? Recoge de entre una lista de opciones basada en un Indice de valores dados por el usuario. Sintaxis =ELEGIR(ValorDelUsuario, Item1, Item2, Item3 hasta 29 Items) Formato No se necesita Ejemplo La siguiente tabla fue usada para calcular las medallas para los participantes que tomaron parte en una prueba de resistencia. Se toma el tiempo de cada participante. La funcin =JERARQUIA() calcula la posicin final de cada participante. Luego la funcin =ELEGIR() asigna la medalla correcta. La funcin =SI() se usa como filtro ya que las posiciones ms all de 3 causan que el error de #VALOR surja dado el hecho de que =ELEGIR operar solo con las tres primeras posiciones.
141
Caso especial: La falencia de la funcin =BuscarV Creo que la funcin =BuscarV() debe ser la que ms intensamente usan los usuarios de Excel. Es buena cuando uno necesita montarle el nombre, la direccin y el telfono a un informe como por ejemplo, la informacin exgena o ms comnmente conocida como los medios magnticos para la Dian (Departamento de impuestos y aduanas nacionales). Para los lectores de otros pases, se refiere a la informacin en medio magntico que pide el Fisco con la cual, una vez obtenida la info de todo mundo, comienza a cruzar si lo que dice vender fulanito, cruza, estos es, cuadra con lo que a su vez compraron todos los que a su vez estn reportando y detectar presuntos evasores de impuestos. Volviendo al tema: cuando uno arma una funcin =BuscarV() para bases realmente grandes, y no solo una sino bastantes =BuscarV(), por ejemplo, un =BuscarV() que me traiga el nombre, otro =BuscarV() que me traiga la direccin, otro =BuscarV() que me traiga el telfono, la ciudad, etc, etc, de una base de Nits o de terceros que supere los 100 mil registros, (por no decir el milln, tambin lo he probado), la funcin =BuscarV() literalmente le consume tanto recurso a la mquina computadora, (o al procesador) que es posible que se le quede pegada, muertita, o bloqueada completamente, tanto que no puede ni siquiera revisar el correo o hacer otra cosa. Una solucin es administrar los ncleos de su procesador, y decirle que use solo dos ncleos para office, y que los otros dos los deje libres para otras actividades de la computadora pero ms que eso, la solucin es PRESCINDIR de la funcin =BuscarV(), y encontrar otra solucin.
BuscarV no es lo Ultimo en Guarachas =BuscarV() es una muy buena funcin, pero no es la nica funcin de bsqueda que existe o que tiene Excel. Eso debe tenerlo Usted claro. El problema con =BuscarV() es que, cuando usted lo pone a buscar un nmero de NIT, o el cdigo del tercero, ya sea un proveedor, un cliente, o un empleado, Esta funcin =BuscarV() lo RASTREA, o REVISA a todo lo largo de la base de datos: Quiere decir, que por cada nit que lo ponga a buscar, =BuscarV() lo buscar tantas veces como grande sea en cantidad de filas su base de terceros, o su base de cdigos. Por ejemplo, har 500.000 mil =BuscarV() para cada nit, y en cada uno de ellos, cuando lo ubique, traer la columna que usted le pidi que traiga, si su base tiene 500 mil registros. En otras palabras, una analoga para que entienda el esfuerzo que estamos poniendo a hacer a Excel, es algo as como si le dijramos a un polica que busque el nmero de identificacin o cdula de ciudadana de x tipo, sujeto o individuo en la torre ms alta de la ciudad. Por ejemplo la torre de mi ciudad, La Torre de Cali, que solo tiene 45 pisos, y cada piso muchas oficinas. Entonces, el agente policial, comenzar desde el piso uno, (la fila) registrando todas las oficinas, (columnas) si en ellas est el individuo o sujeto que tenga el mismo nmero de identificacin que el que le dimos. Como se dar cuenta, es una tarea muy larga que consume mucho tiempo, y si le damos al polica una relacin de cdulas a buscar? Se demorar todava ms! Como podr intuir o presumir, esto parece innecesario, lgicamente desgastante hasta para el sper Excel 2007, porque una vez que Excel ha encontrado la FILA correcta, podr usarla para traer la columna especificada de la fila. Hay una funcin llamada =Coincidir(). Vimos ejemplos de esta funcin dentro del tema de las funciones de uso frecuente. Trabaja como =BuscarV(), pero en lugar de traer un dato de la tabla de bsqueda,
142
TRAE EL NUMERO DE LA FILA, esto es LA POSICION dentro del rango que Coincide con el valor buscado. La primera vez que vi la funcin =Coincidir() la despreci. Me pareci una bobada, para qu iba a querer yo, traer el numero de la fila en la cual est el dato que busco, si lo que necesito es que me traiga el dato como tal, no el numero de la fila.? Se me antojaba una bobaday por mucho tiempo, no le prest atencin, hasta que, me encontr con el problemita que me comenzaba a presentar la funcin =BuscarV(). El equipo se quedaba calculando celdas demasiado tiempo.Lo primero que dije fue Ah!! Este computador me qued pequeo, necesito un procesador ms rpido! Cuando por fin tuve una supermquina, la ltima del mercado que en ese momento era el Intel Core Quad Duo (4 procesadores y 8 gigas de memoria), me segua sucediendo lo mismo, me di cuenta que no era posible que no hubiera otra solucin, que deba existir otra manera de hacer esta operacin ms rpido y sin esforzar tanto el PC. La clave era esta funcin =Coincidir(). Como le mencionaba, la funcin =BuscarV() hace demasiadas bsquedas, si tan solo se le indicara en que fila buscar, seguramente se le simplificara la tarea. Pero Coincidir funciona MUCHISIMO MEJOR que =BuscarV() cuando la combina con la funcin =INDICE(). Como su nombre lo Indica, la funcin Indice toma la tabla de bsqueda, y te pide el numero de la fila y el numero de la columna en donde se halla el valor que quieres traer. De igual forma, cuando conoc la funcin =INDICE(), tambin la despreci, pues precisamente lo que yo necesitaba es que me ayudara a Buscar y traer el dato que necesito, pero si a esta funcin =Indice() le tengo que decir en que fila y en que columna est el dato. Entonces Qu es lo que busca si yo le tengo que decir en donde est el dato?... Nuevamente Que bobada!... Ah, pero es que la cosa cambia cuando ANIDAS o combinas la funcin =INDICE() con =Coincidir(), usando =Coincidir() como segundo argumento de la funcin =INDICE(). La funcin =Coincidir() le puede decir en que fila est el dato que estoy buscando!! Es como si al agente policivo simplemente se comunica con la gente de seguridad de cada piso del edificio y les pregunta que si all est el sujeto x; entonces, el agente de seguridad que lo tenga registrado le dir Seor Polica, el tipo que busca est en el piso 38; con lo cual, el polica solo tendr que ir hasta el piso 38 y buscar al sujeto solo en las oficinas ese piso, es decir en las columnas de esa fila. Haga de cuenta que los de seguridad son la funcin =Coincidir(). Una cosa que debe saber, tratndose de formulas anidadas, es que Excel comienza por hacer los clculos de las funciones de ms adentro, las mas internas, y los valores hallados los entrega a la siguiente funcin que anida a la otra, es decir, la que cobija o encapsula o Contiene a la otra. La de ms adentro le entrega el clculo a la que la anida, y as sucesivamente. Es por eso que en estos casos, Excel no pierde tiempo rastreando a todo lo largo, lo primero que hace al usar la funcin =Coincidir() es UBICAR la posicin del dato buscado en la fila de la superbase de datos, le entrega la posicin hallada a =Indice(), de tal manera que, =Indice() no pierde tiempo y va AL GRANO, ya puso el ojo, ahora, pone la bala, en lugar de disparar a todos los datos en todas las filas y columnas como si lo hace =BuscarV() La ventaja? =BuscarV() es un procesador reintenso. Pero si le entregas de una vez la fila en la cual debe de trabajar la funcin =Indice(), la funcin hace un solo Buscar en lugar de buscar a todo lo largo y ancho de la tabla, el tiempo de clculo DESCENDER DRAMATICAMENTE, TANTO QUE SE SORPRENDER COMO ME SORPRENDI YO LA PRIMERA VEZ.
143
Mismo caso pero Usando =Indice() con =Coincidir() como segundo argumento de la funcin:
Tratndose de archivos con bases grandes, le recomiendo que se monte la funcin Indice con Coincidir. Coincidir le ahorra el trabajo a Indice dicindole en que columna buscar. Cuando el clculo se le tarde varios minutos, ver como con esta funcin la cosa se le reduce a unos cuantos SEGUNDOS, o por lo menos, en lugar de bloquearse el computador, si le saca adelante la bsqueda.
144
Para ingresar una formula matricial: Escriba la formula en la celda y presione Ctrl+Shift+Enter al mismo tiempo. NO se da solo enter, se presiona todo el conjunto de teclas al mismo tiempo. Si lo hizo correctamente, ver como Excel acepta la formula porque ver las dos llaves {} que rodean la formula. Si no lo hace correctamente, obtendr un valor errado o un error tipo #VALOR!
145
Como se forma la matriz de informacin La funcin =SI() puede ser usada en una formula matricial para evaluar el resultado de mltiples evaluaciones al mismo tiempo. Por ejemplo, se podra querer sacar el promedio de los valores del rango A1:A5, pero excluir los nmeros que son menores que o iguales a cero. Para lograr esto, puede utilizar una formula matricial con la funcin =Si() para evaluar los valores de las celdas y la funcin =Promedio() agregarse al resultado. La siguiente formula hara exactamente ese trabajo:
La formula trabaja evaluando si cada celda en el rango A1:A5 es mayor a 0 ( > 0 ). Lo cual devuelve una matriz de valores booleanos tales como por ejemplo {Verdadero; Verdadero; Falso; Falso; Verdadero}. Un valor booleano es un tipo de informacin que contiene el valor Verdadero o el valor Falso. Cuando se usan en una operacin aritmtica, Verdadero equivale a 1 y Falso a 0. La mayora de las funciones matemticas como =Suma() y =Promedio() ignoran los valores booleanos, as que deben ser convertidos a valores numricos antes de pasar a =Suma() y =Promedio(). La funcin =Si() evala cada uno de los resultados individualmente, y devuelve el valor correspondiente desde el rango A1:A5 esto es Verdadero o Falso. Desglosando como trabajara la formula, es algo as como: =Promedio(Si({Verdadero,Verdadero,Falso,Falso,Verdadero},{A1,A2,A3,A4,A5},{Falso,Falso,Falso,Falso, Falso}) Note que el Falso del final de la formula {=Promedio(Si(A1:A5>0;A1:A5;Falso))} se expande al tamao apropiado del rango de la matriz A1:A5. En las formulas matriciales, todas las matrices deben tener el mismo tamao. Excel expande los elementos nicos tanto como sea necesario, pero no redefine la matriz con ms de un elemento de otro tamao. Si la matriz no tiene el mismo tamao obtendr errores tipo #VALOR!, o #N/A. Cuando la funcin =Si() realiza la evaluacin, se forma la siguiente matriz intermedia: {A1,A2,Falso,Falso,A5}. Observe que los valores verdaderos del primer argumento se reemplazaron con los valores del rango A1:A5. Puesto que La funcin =Promedio() se dise para ignorar valores booleanos, promediar slo los valores de A1, A2 y A5, ignorando los valores Verdadero y Falso. Observe que Falso no se convirti a cero, por lo que ser ignorado completamente por la funcin =Promedio(). Las funciones matriciales son ideales para contar o sumar celdas basadas en criterios mltiples. Considere la tabla de la derecha; lista el numero de productos (Columna I) en diferentes categoras (Columna G) vendidas por diferentes representantes (Columna H). Para calcular el nmero de Fax vendidos por Brown, podemos usar la siguiente formula:
146
Esta funcin arma tres matrices. La primera matriz es una serie de valores VERDADERO o FALSO, los cuales son el resultado de comparar el rango G73:G81 con la palabra "Fax". (Recuerde que Excel expandir el elemento "Fax" en una matriz de tems, todos los cuales son "Fax"). La segunda matriz tambin es una serie de valores "VERDADERO" o "FALSO", resultado de comparar H73:H81 con "Brown" (Este solo elemento "Brown" tambin se expande al tamao requerido de la matriz). La tercera matriz abarca el nmero de unidades vendidas en el rango I73:I81. Estas tres matrices se multiplican juntas. Cuando se multiplican dos matrices, el resultado es una matriz en si misma, en la cual cada uno de sus elementos es el producto de los correspondientes elementos de las dos matrices que fueron multiplicadas. Por ejemplo, { 1 , 2 , 3 } veces { 4 , 5 , 6 } es { 1 * 4 , 2 * 5 , 3 * 6 } = { 4 , 10 , 18 }. Cuando los valores VERDADERO y FALSO se utilizan en cualquier operacin matemtica, asumen el valor 1 y 0 respectivamente. De tal manera que la formula de arriba, Excel la expande en tres matrices : La primera : (G78:G86="Fax") ---> {Verdadero, falso, verdadero, verdadero, falso, falso, verdadero, falso, falso} La segunda: (H78:H86="Brown")-----> {Verdadero, falso, falso, falso, falso, falso, verdadero, falso, falso} La tercera: (I78:I86) -----> { 1 , 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 } Cuando estas matrices se multiplican, verdadero es 1 y falso 0, con lo que la matriz queda: { 1 , 0 , 0 , 0 , 0 , 0 , 60 , 0 , 0 } Lo cual muestra que Brown hizo dos Ventas. La funcin =Suma() simplemente cumple su propsito con la matriz resultante y devuelve 61, la cantidad de maquinas Fax que vendi Brown. Habr notado que la lgica de la formula que evala los productos iguales a "Fax" Y el representante de ventas igual a "Brown", NO USA LA FUNCION =Y(). En su lugar, se usa la multiplicacin * que acta como el valor lgico Y. La multiplicacin sigue las mismas reglas que el operador Y, pues tambin devuelve Verdadero o 1 slo cuando ambos parmetros son Verdaderos ( o <> 0 ). Si uno, o ambos parmetros son Falsos ( o 0 ), el resultado es Falso ( o 0 ).
147
Cuenta el numero de ventas (no el numero de unidades vendidas) en la cual el producto fue "Fax" O el representante de ventas fue "Jones" (O Ambos). La adicin Acta como O porque el resultado Verdadero (o <>0) si uno o ambos elementos son Verdadero (<>0). Es Falso, slo cuando ambos elementos son Falsos (o 0). Esta formula monta dos matrices: El resultado de comparar G73:G81 con "Fax", y el resultado de comparar H73:H81 con "Jones". Entonces suma las dos matrices. Cuando sucede esto, el resultado es otra matriz en la cual cada uno de los elementos es la suma de las correspondientes matrices originales. Por ejemplo, { 1 , 2 , 3 } + { 4 , 5 , 6 } = { 1 + 4 , 2 + 5 , 3 + 6 } = { 5 , 7 , 9 } Para cada elemento en la matriz suma (G73:G81="Fax")+(H73:H81="Jones"), si el elemento es mayor a cero, traer 1, de otra forma traer 0. Finalmente la Suma totaliza la matriz. Un Exclusivo "O" es una comparacin que devuelve Verdadero cuando SOLO UNO de los dos elementos es Verdadero. Un Exclusivo "O" es Falso cuando ambos elementos son Verdaderos o Falsos. Matemticamente podemos utilizar la funcin =RESIDUO() para simular esta operacin Lgica. Por ejemplo, para contar el nmero de ventas en la cual el producto fue "Fax" o el representante fue "Jones" (Excluyendo los Fax vendidos por Jones), podemos usar la siguiente formula:
Un "negativo Y" es una comparacin que devuelve Verdadero cuando ninguno o exactamente uno de los elementos es verdadero, pero devuelve Falso si ambos elementos son Verdaderos. Por ejemplo, podemos contar el numero de ventas EXCEPTO aquellas en las cuales "Jones" vendi un "Fax" con la formula
148
Por ltimo, la operacin Lgica Y puede ser realizada con la Multiplicacin. Siguiendo con el cuadro ejemplo,
Armando una matriz para funciones que no trabajan como matriciales Cuando Usted est construyendo algunos tipos de formulas matriciales, Usted necesita crear una secuencia de nmeros para que una funcin la procese como una Matriz. Por ejemplo, considere una formula matricial que compute el promedio de nNmeros mas grandes en un rango. Para hacer esto, utilizamos la funcin K.Esimo.Mayor para conseguir los nmeros mas grandes, y entonces pasar estos nmeros como matriz a la funcin Promedio para calcular el mismo. Normalmente, la funcin K.Esimo.Mayor toma como parmetro un rango para procesar y un nmero que le indica cual nmero mas grande traer (1 el mas grande, 2 el segundo mas grande, etc.) Pero K.Esimo.Mayor NO trabaja con Matrices en su segundo parmetro. Usted podra intentar escribir la matriz en la formula: =K.esimo.mayor ( A1:A10 ; { 1 , 2 , 3 } ). El hecho de indexar esto, es un trabajo tedioso. En vez de eso, Usted puede usar la funcin =Fila() para obtener la secuencia de nmeros. Usada en una formula matricial, la funcin =Fila(m:n) devuelve una matriz de enteros desde m hasta n. Por consiguiente, podemos usar =Fila() para crear la matriz y pasarla a K.Esimo.Mayor. Esto cambia nuestra formula matriz en a =K.Esimo.Mayor ( A1:A10;Fila ( 1:3 ) ) Esto nos lleva por un buen camino, pero quedan dos cositas pendientes: Primero, si Usted inserta una fila entre los rangos 1 al 3, Excel cambiar la referencia 1 : 3 y por lo tanto la formula promediar valores errados. Segundo, la formula se circunscribe solo a los 3 valores mas grandes. Podemos hacerla mas flexible haciendo que el nmero de elementos a promediar tengan una celda de referencia que sea fcil de cambiar. Por ejemplo, podemos especificar que la celda C1 contenga el tamao de la matriz para pasarla a =K.Esimo.Mayor. Esta tarea se completa con la funcin =Indirecto(). (La funcin indirecto convierte una cadena de texto que representa una referencia de celda en una referencia de celda real. La subformula =Fila ( Indirecto( " 1 :" & C1 ) ) devuelve una matriz de nmeros entre 1 y el valor en la celda C1. Ahora, vienen junto a la formula Promedio los n Nmeros ms grandes en A1:A10 As:
149
Formulas que a su vez devuelven una Matriz El otro tipo de formula matricial son las que devuelven una matriz de nmeros como resultado. Estas organizan una matriz de formulas que se ingresan en varias celdas como grupo. Por ejemplo, considere la formula =Fila(A1:A10). Si se ingresa en una solo celda como una formula normal, o como celda matricial, el resultado ser 1 en esta sola celda. Sin embargo, si la ingresa en una rango de celdas, cada celda contendr un elemento de la matriz. Para hacer esto, primero debe seleccionar el rango de celdas en las cuales la matriz debe escribirse, marque C1:C10 y escriba la formula =Fila(A1:A10) y presione las teclas Ctrl+Shift+Enter. Los elementos de la matriz { 1,2, . . . . . , 10 } se escribirn en el rango de celdas, con un elemento de la matriz en cada celda. Cuando realice cambios, debe seleccionar el rango entero nuevamente, editar la formula y volver a dar Ctrl+Shift+Enter. No trate de cambiar un solo elemento de la matriz. Algunas funciones propias de Excel devuelven una matriz de valores. Estas formulas deben ser ingresadas en una matriz (o grupo) de celdas. Por ejemplo, la funcin =Minversa() devuelve la matriz inversa con un numero igual de filas y de columnas como la matriz invertida. Por lo tanto, si su matriz est en las celdas A1:B2 (dos filas y dos columnas), debe seleccionar un rango del mismo tamao, escribir la formula =Minversa(A1:B2) y presionar Ctrl+Shift+Enter. Esta accin ingresa la formula como una formula matricial en las celdas seleccionadas. Si usa la funcin Minversa en una sola celda, solo la celda superior izquierda de la matriz invertida ser devuelta. Algunas Funciones Matriciales de Utilidad Las formulas matriciales pueden hacer variedad de tareas. Algunas formulas miscelneas se muestran aqu. Sumar ignorando errores Normalmente si hay un error en una celda, la funcin =Suma() devuelve un error. Esta formula ignorar esos valores de error. =Suma(Si(Eserror(A1:A10);0;A1:A10)) Promedio ignorando errores Ignora errores cuando se promedia un rango =Promedio(Si(Eserror(A1:A10);Falso;Si(A1:A10="";Falso;A1:A10))) Promedio ignorando ceros =Promedio(Si(A1:A10<>0;A1:A10;Falso)) Suma de valores absolutos Puede sumar un rango de nmeros considerndolos todos positivos usando la funcin ABS =Suma(ABS(A1:A10)) Suma de la parte entera solamente La parte fraccionaria es descartada =Suma(Truncar(A1:A5)) El texto ms largo en una celda =Desref(A1;Coincidir(Max(Largo(A1:A10));Largo(A1:A10);0)-1;0;1;1)
150
Formulas Matriciales Vs Formulas Normales Hay una diferencia considerable entre lo que se puede hacer con formulas matriciales y las funciones propias de Excel, tales como =Bdsuma(), =BdContar() y muchas otras. Es claro que las funciones o formulas normales son mucho mas rpidas que una formula matricial; ya se vio todo el anlisis que arman para emitir un resultado. Si tiene un libro grande y complejo, notar que los clculos tardan ms tiempo que si tuviera sus formulas montadas como funciones normales. Las principales diferencias son: Las funciones propias de Excel son ms rpidas. El criterio de seleccin de las funciones normales o propias reside en las celdas. Las formulas matriciales pueden montar el criterio de seleccin directamente en la formula. Las funciones normales devuelven un solo valor en una celda. Las matriciales pueden devolver una matriz en varias celdas.
151
En este ejemplo (que en realidad puede ser cualquier otra cosa, datos de un Kardex, repuestos, o un informe de ventas) se presentan algunas formulas matriciales que Usted podr aplicar a su da a da contable.
En la siguiente imagen ver cada una de las funciones matriciales que se pueden montar:
152
153
Mediante una formula matricial es posible mayorizar las cuentas AUTOMATICAMENTE, es decir, EN LINEA, INSTANTANEAMENTE en otra hoja de Excel:
(Este ejemplo es revolucionario.Pequeas contabilidades se pueden JACTAR de tener constantemente sus estados financieros al ir ingresando informacin en la hoja diario)
154
Puede ver que se sigue el mismo esquema de la tienda de mascotas, aplicado a un caso contable. La formula se monta en la columna de acuerdo a su naturaleza, as, si una cuenta arroja saldo negativo sabr que est en contra de su naturaleza. Este cuadro de Libro Mayor no tiene que volver a tocarlo, salvo que exista una cuenta nueva, o necesite ampliar el rango. (Ojo con eso). Salvo lo anterior, siempre se le actualizar automticamente. Que hace esta formula: Puede ver que hay dos condiciones Si. (Se colorean para que las pueda ver fcilmente) (Se asume que Usted ya ley la parte terica que explica como se forma la matriz de informacin). El primer Si evala si el mes de la columna del mes del libro diario coincide con el mes del libro mayor. Puede ver que el mes del libro mayor es $B$17. Observe que dentro de ella se usa la funcin =Mes() que extrae el nmero de mes tanto del diario como del mayor. Si esta condicin se cumple, indicamos 1, sino, 0. Recuerde que el * multiplicador hace las veces del Y. (Y uno es equivalente a verdadero y cero, es equivalente a falso) El segundo Si, compara el numero de cuenta de la columna diario contra la celda que lo contiene en el mayor. Esta celda es mvil, es decir, no est amarrada con $, (como es el caso del mes), pues en cada rengln necesitamos que haga la evaluacin en la cuenta siguiente. Si esta segunda condicin se cumple, indicamos 1, sino, 0. Si los parmetros anteriores son ciertos, pasar para cada uno de los casos evaluados de la matriz un 1 x 1 = 1, (Un 1 de la matriz del primer Si, y un 1 de la matriz del segundo Si) y los casos en que sean 1, se multiplicarn por la columna Dbitos menos la columna Crditos. Los casos evaluados en los que el resultado sea un cero, no traer ningn valor, pues recuerde que todo numero multiplicado por cero es cero. Utilizar nombres en lugar de Rangos facilita el manejo, pero considero que es mejor que mientras aprende, visualice los rangos como tal. Recomendacin: Siempre que compare un criterio entre tablas o bases de datos, asegrese de que son los mismos. No es lo mismo una cuenta 111005 en formato nmero que en formato texto. Tampoco si una de ellas tiene un espacio o un punto intermedio. Depure todo eso antes y asegrese que no tendr problemas por esta causa. Haga pruebas por su propia cuenta, y familiarcese con este tipo de formula matricial. La primera vez que yo la escrib, escrib las llaves por no detenerme un momento y leer que despus de escribirla, deba dar Ctrl+Shift+Enter al mismo tiempo. Sobra decir que el mes tambin debe ser consistente en ambos lados. Observe muy bien la colocacin de los parntesis y tenga paciencia si no le sale como espera despus del primer intento. Analice que est haciendo y verifique. Las formulas matriciales son simplemente Fantsticas. Siguiendo este procedimiento puede montar Informes de todo tipo, y para todo tipo de rea de la organizacin. Solo HECHE MANO DE SU RECURSIVIDAD Y APLIQUE los conceptos dados a su vida profesional. Pero, Siempre hay un pero, como las formulas matriciales realizan muchos clculos, pueden volver lento su equipo. Y esta verdad si que era terrible en la poca en que se escriban en computadoras con procesadores Lentium de 500 Mhz. Una ventaja ahora es la tremenda velocidad de los procesadores, y que seguir en aumento. Pero no abuse de las matriciales. Si la maquina computadora tiene poca memoria, el clculo le podra presentar un resultado que NO ES VERDAD. Y esto, puede ser hasta la causa de su despido por presentar a su jefe datos errados. Sea Escptico y metodolgico SIEMPRE.
155
A continuacin hay otro caso de esta misma naturaleza que estoy seguro se estar preguntando como realizar.
El valor de la celda F89 totaliza todas las cuentas que tienen por raz 110. Para eso nos valemos de las funciones Valor e Izquierda. Izquierda extrae los 4 primeros dgitos, y dado que al extraerlos los deja con formato texto, con la funcin valor los convertimos en un dato numrico, para que pueda ser sumado a todo lo largo de la matriz. Esta funcin es muy similar a =Sumar.Si(), pero con la ayuda de estas otras dos funciones, se salva esta dificultad. Puede seguir anidando sumas condicionales para le caso de que desee sumar ciertos centros de costo, y despus ciertos nmeros de Nit, o todos los criterios que necesite; con este tipo de formulas puede montar los informes que su imaginacin a bien tenga: Cuadros de mando, Reportes gerenciales, reportes de costos, verificacin de saldos, cedulas sumarias, etc.
156
Usando formulas matriciales para hacer la explosin de produccin. Las formulas matriciales son una solucin para esta tareta relativamente compleja de hacer a la que se enfrentan algunos Contadores cuando para el mes de noviembre deben de tener listo el presupuesto del ao siguiente de la Compaa. Lo primero que le recomiendo, si usted es el Contador a cargo, es que se asegure y REVISE que los cdigos de materiales, de materias primas, de productos terminados del sistema contable, SON LOS MISMOS que se manejan para las reas de compras, produccin, planeacin y contabilidad. El que manda la parada debera ser el cdigo como est creado en el sistema contable. (Aunque a veces prefiero la definicin o nombre que da el proveedor-fabricante del insumo, pues se supone que ellos saben ms de eso que la empresa que es el cliente). He visto como la gente de planeacin tiene un nombre similar para ciertos insumos, los de compras por lo general se refieren al mismo de igual forma como lo llaman los proveedores, los jefes de produccin apelando a su experiencia de varios aos los llaman de otra forma En fin, uno se encuentra con varios nombres para el mismo insumo. Esto es un problema grave. Pues al Contador, los de compras le pasan los precios negociados de los insumos con los proveedores con sus nombres, los de planeacin pasan el dato de lo que esperan vender y por lo tanto producir, tambin con sus nombres y el contador en medio de ellos, debe de hacer que los cdigos primero que todo sean consistentes con los tems del inventario para poder hacer la explosin. Porque? Porque recuerde que hay un inventario inicial de insumos, y este inventario lo da el sistema. As que si los cdigos y descripciones no concuerdan, tendr un Sancocho de cdigos de insumos en su inventario, y muchos de ellos se refieren a la misma cosa. Entonces, es mucho el tiempo que se pierde haciendo estas equivalencias, porque para la seora o el seor de compras el tem se llama de una manera, para el seor o seora de planeacin de otra, y en el sistema el cdigo, para completar el moo, tambin es distinto. Y el contador all, tratando de agarrar ese trompo con la ua y unificar a todo mundo, finalmente trabajando el doble o el triple. La idea es que como verdadero administrador de la informacin, con ayuda del seor de sistemas, si lo hay, pongan a todo mundo hablar el mismo lenguaje de cdigos de tems o de Insumos. Una vez salvado lo anterior, la explosin de produccin ser cosa de montar una formulita matricial. Cul es la base de la explosin de la produccin? La tarjeta estndar de produccin. La que contiene cuanta materia prima, materiales, mano de obra y otros costos y gastos indirectos consume hacer una unidad de producto terminado. Por ejemplo, si en el garaje o patio o solar de mi casa preparo una especie de bebida espirituosa, debera tener una relacin de tems o insumos que necesito para que una unidad de mi bebida quede perfecta. Un ejemplo puede ser la siguiente informacin en Excel:
157
Esto bsicamente es la misma cosa ya sea que se trate de una cerveza, una bebida hidratante o un t. Al comienzo del libro le coment acerca de organizar la info en forma de base de datos no? Porque as como est esa lista, no le facilita mucho las cosas a Excel. Entonces, esa info se organiza y se deja as:
As sucesivamente para los 500 o 1000 productos de su compaa. Arma la superbase de datos. Entonces, mi Gerente de Ventas habiendo estudiado el mercado y toda la cosa, me pasa una hoja en Excel con la lista de todas las ventas que planea hacer y me dice que para el ao entrante planea vender 50.000 botellas de mi exclusivo Chirrinche panela 250, as como de mis dems presentaciones y me pasa una hojita en Excel as:
Entonces, a la pregunta, Cuantos insumos necesito tener para satisfacer las expectativas de venta de todos mis productos, monto la explosin de produccin con una formula matricial as:
158
La formula en F2 es: {=SUMA(SI($A$14:$A$17=A2;1;0)*($B$14:$B$17)*E2)} Como ve, es la misma frmula matricial que siempre se viene usando en los dems ejemplos vistos. Por supuesto, tambin se puede escribir as: {=SUMA(SI($A$14:$A$17=A2;($B$14:$B$17)*E2))}
Supongamos que la info de ventas est dividida en meses, y debemos obtener las cantidades requeridas por mes:
159
La formula en F2 es esta que le muestro aqu arriba: analice los rangos, vea como el rango que multiplica la cantidad unitaria del insumo, se multiplica por un rango que lo conforma TODO EL BLOQUE de cantidades de producto terminado a Vender:
Esta es la manera en que puede ir anidando ms Ss, en caso de que apareciera otra variable. Despus de esta explosin, por lo general viene la de las compras. Teniendo ya las cantidades que necesita comprar, ahora necesitara CUANTIFICAR el costo de esos insumos, para eso, tendr que hacer algo similar, pero ya no contra el presupuesto de ventas, sino por la lista de Insumos POR PROVEEDOR. Estos proveedores tambin puede que hayan informado que los incrementos los harn en Marzo y en Septiembre por ejemplo. Veamos cmo sera en el ejemplo que me invent de mi Aguapanela Chirrinche:
160
Ok, ahora lo vamos complicando mas (sea, ahora le ponemos los incrementos por proveedor en el mes que ellos hayan informado). (Ojo, los proveedores por lo general indican el precio por mil, diez mil unidades, DEBE de calcular el precio de una unidad.) Por ahora, tenemos que esas cantidades requeridas que ya armamos en una sola formula, necesitamos multiplicarlas por el precio de venta de estos proveedores.
Pero si se fija, observe que algunos proveedores ofrecen un precio ms competitivo, como es el caso de Panelas del Cauca, me vende 1.000 por 28.000 en lugar de los 30.000 que me cobra Panelas del Valle. Ya sea que Usted considere siempre el mayor o menor precio, puede Usar nuevamente una funcin matricial basada en la Funcin =MAX() que le devuelve el valor mximo de una lista, o =MIN(), que le devuelve el ms econmico. Para eso, se sigue la misma metodologa y le metemos otro s, que segn sea el proveedor, busque el ms alto y multiplique por la unidad.
Bueno, con el nimo de que vea la imagen lo ms completa posible, la ver en la siguiente pgina:
161
Observe que nos devuelve el precio Mximo de la lista de proveedores. Lo nico que necesita es unir esta frmula matricial con la otra, con lo cual, las 417 unidades de Aguapanela que necesitar en Enero debern costar $12.500. La formula quedara as:
La funcin en F2 es: {=SUMA(SI($A$14:$A$17=$A2;SI($B$13:$M$13=F$1;($B$14:$M$17)*$E2)))*MAX(SI($A$21:$A$34=C 2;$D$21:$D$34))} Visualizar todo el rango ayuda a comprender como es que se relaciona la formula matricial con las tablas ventas y proveedores. Para efectos pedaggicos, se han colocado las pequeas tablas en la misma hoja de clculo, para facilitar la comprensin de cmo es que se monta, y para que me ocupara en un solo grfico, ocult algunas filas, para que se pudiera ver todo el rango del nuevo cuadro proveedor, adems, le d F2 Modo Edicin a la celda para que los colores faciliten la apreciacin de los rangos de la funcin:
162
Solo debe tener en cuenta la ultima parte de la funcin, desde donde comienza =MAX(). La parte anterior, ya vimos como es que se mont. De manera similar, si tiene el dato de CUANDO es el MES que los proveedores harn el incremento, podr anidarlo de manera similar a como tuvimos en cuenta el mes en las ventas: Para que vea bien el cambio, la hoja de los proveedores la presentaran mes a mes as: (solo voy a poner dos meses para no extenderme mucho en el grfico):
Entonces, la formula MAXIMO, tiene ahora que encontrar el mximo del mes, no de todo en general. Si no considera el mes, le calcular que para enero, usara el valor mximo de la aguapanela, que es de 50.000, que es el precio pero de MARZO. Si se fija, le hice incrementos TREMENDOS, para que vea el efecto en los meses, en los dos primeros Insumos:
163
Esta otra imagen le muestra cmo es que ya se pone a jugar el rango mes del proveedor, puede ver que como no se han definido los precios de los dems meses de los dems insumos, la funcin devuelve cero.
Espero que esta tcnica le sea de utilidad, Es una manera de trabajar. Pero como le advert anteriormente, cuando se arma la funcin, y la copias para miles de productos, te recomiendo que tengas una muy buena computadora, pues estas funciones consumen mucha memoria, y a tu compu le puede dar una Embolia Cerebral, pues los clculos pueden ser demasiados, y en lugar de blanquear los ojos, como un humano, blanquear la pantalla de tu computador.
164
165
Dependiendo del lugar del mes, da, ao, deber acomodar su formula. Se indica un segundo caso en el cual se necesita dejar solo los dos ltimos dgitos del ao.
166
3) Para acceder a las opciones del comando mover o copiar, seleccione la hoja y haga clic con el botn derecho, ver un men emergente aparecer, en cuanto aparezca, seleccione Mover o Copiar:
4) En cuanto haga clic en mover o copiar, aparecer la configuracin por defecto, si escoge mover, Excel cambiar la hoja a la nueva ubicacin en el libro. Esto es innecesario, puesto que simplemente lo puede hacer al seleccionar la hoja y arrastrarla a la nueva localizacin. 5) Al escoger Crear una copia, Excel har una copia exacta de la hoja:
167
6) Finalmente, utilice la lista desplegable. Si usted quiere hacer una copia del libro en un nuevo libro o copiarla en un libro abierto:
Usar el comando ofrece algunas ventajas, que si utilizara la opcin de copiar y pegar celdas: Excel copiar: Anchos de filas y altos de columnas Formato de celdas Informacin de la configuracin de la impresin, tal como encabezados y pies La configuracin de los escenarios
168
Mostrando los nmeros en formato de miles Esta tcnica es til cuando se requiere revisar cifras, pero queremos verlas en miles o millones.
Debe de colocarle un formato personalizado. Seleccione botn derecho y en el men emergente escoja formato de celdas, o bien presione la combinacin de celdas Control + 1, de esta manera aparecer el cuadro de dilogo relacionado con el formato de celdas:
Ahora, NO HAGA clic en Aceptar, vaya a la ltima opcin, Personalizada. Observe que est iniciando con un formato de moneda; $#,##0#. Ese es el formato que Excel utiliza para mostrarle el nmero en formato moneda con cero decimales:
169
Ubquese debajo de Tipo, y despus del signo # coloque un punto. Si no le funciona, revise como es el punto separador de miles y de decimales en su computadora:
Si desea que le salga el separador de miles, agregue un signo numero, un punto y dos signos de nmero, como se muestra a continuacin.
170
De esta manera, no tendr que ponerse a dividir las celdas por mil en una columna anexa. Tambin puede colocar la letra M de miles directamente en el formato condicional: Solo agregue entre comillas la letra M, as:
Ahora, si la cifra que tenemos aqu la desea reducir a Milln, adicione un punto adicional (si en su caso no funciona el punto, ensaye la coma, como le dije, fjese en la configuracin numrica de su equipo)
Y colocarle una doble M para indicar que est viendo cifras de milln, hace lo mismo que cuando colocamos la M anterior:
Ahora solo le resta copiar y pegar el formato a las dems celdas en donde desea que el surta efecto el formato que acaba de personalizar:
171
Cada punto al final del formato personalizado del nmero causar que se muestre el nmero dividido por otro mil. Para mostrar los nmeros redondeados al cien mil ms cercano, es vlido combinar una posicin decimal seguida por dos puntos:
Si quiere que no se vea 10,3 millones, sino 10,38 millones, coloque otro cero:
Le recomiendo que haga algunas pruebas en su Excel para que coja dominio de la tcnica y no la olvide tan fcilmente.
172
Montando Subtotales Los Subtotales son muy tiles, y ms de uno los sabe hacer. Sin embargo se incluyen aqu para aquellos que todava no los conocen: Como su nombre lo indica, el subtotal es una herramienta que hace precisamente eso, le inserta subtotales en donde Usted as lo indique al cuadro de dialogo. Por ejemplo:
Uno pudiera desear saber, cuanto son los salarios (la columna que aqu se ve como Basic Salary), pero totalizados por la columna A rea. Para lograr eso, ubquese dentro de cualquier lugar de la tabla, preferiblemente en la celda A1. Primero que todo ordene la informacin, de manera tal que las agrupaciones le queden consistentes. Para el caso del ejemplo, Primero se ordenan las reas (Columna A), luego por el Cargo (Columna C, Designation). Si no se asegura de que la clasificacin de los datos siga el orden necesario, Subtotales har un efecto completamente distinto al que queremos. Despus de ordenar la info, en Excel 2007, vaya por el men DATOS:
173
En cuanto haga clic all, le saldr este cuadro de dilogo: Es el mismo para ambas versiones:
Entonces, Para cada cambio en: hay una pestaita que se puede DESPLEGAR, all estn todos los Rtulos o Ttulos de Columna. Se despliega y se escoge POR CUAL COLUMNA queremos Subtotalizar. En Usar funcin, por lo general se totaliza con Suma, pero tambin se puede usar las funciones Contar, promedio, mximo, mnimo, producto, contar nmeros, desviacin estndar, entre otras. Seguidamente, ACTIVAMOS las casillas de verificacin en los campos que deseamos, para el caso, queremos Subtotalizar por la columna Basic Salary (Salario Bsico):
174
As quedara para el cuadro de la imagen, la seleccin. En cuanto se hace clic en OK, nos queda la info as:
Ya puedes ver lo maravillosa que esta opcin. Excel automticamente le inserta una nueva fila entre cada AREA. Y entre cada rea, se incluye una funcin llamada Subtotal.
175
Observe que Excel mont tres botoncitos pequeos en la esquina superior izquierda:
Puesto que se muestran solo los subtotales, puede ser bueno, poder copiar solo los subtotales en un libro nuevo, PERO, si seleccionas las celdas, las copias y luego las pegas, vers que IGUAL, te copia todo, hasta lo que est oculto. Para que le copie solo los subtotales, haga esto: Seleccione desde Gran total hacia arriba:
176
En Excel 2003 vaya por el men Edicin Ir A. En la ventana que le salga, haga clic en ESPECIAL. En Excel 2007 Escoja la Ficha INICIO EDICION BUSCAR Y REEMPLAZAR IR A ESPECIAL:
En el siguiente cuadro, escoja Solo celdas visibles y presione OK. El resultado ser que Excel escoger solo las filas visibles. Ahora, al copiar, podr ver como Excel solo selecciona las celdas visibles:
177
178
Como se quitan los Subtotales Para quitar los subtotales, te ubicas dentro de zona o regin de la hoja de clculo en donde se encuentran los subtotales y nuevamente seleccionas la opcin Subtotales, una vez que te salga el cuadro de dilogo, haces clic en el botn Quitar Todos. Adicionando un segundo nivel de subtotales En el ejemplo en el cual vengo ilustrndole el tema, se podra desear tener otro subtotal dentro del que ya hicimos, por ejemplo, tener tambin los totales por Cargo (Designation). Ubquese dentro de los Subtotales. Nuevamente seleccione la herramienta Subtotales. En esta ocasin, seleccione la casilla Designation y ADEMAS DESACTIVE la opcin Reemplazar subtotales actuales, as:
Haga clic en aceptar: Le quedar el Subtotal INTERNO que le suma adems los totales por cargo.
179
Si oprimes el botoncito 2:
Si oprimes el botoncito 3:
180
Y si oprimes el botoncito 4:
Y as, sucesivamente si hubiera necesidad de mas subtotales Internos o anidados, esta es la manera de hacerlos, y de usarlos.
181
Una forma de revisar los nmeros consecutivos Este es un tema que inicialmente iba a ser el ejemplo 4 de la funcin S. Pero me pareci mejor sacarlo como tema aparte. Mediante la funcin Si, podemos revisar si los nmeros consecutivos no presentan saltos o nmeros faltantes. Una tareta que hay que hacer frecuentemente en una auditora. Supongamos que ya tenemos la informacin y la tenemos as:
En este ejemplo, la primer columna se refiere al cdigo del tipo de comprobante, la segunda columna, la B, el nmero. Pero si se fija que todas las celdas tienen una pestaita verde, seal inequvoca que indica que Excel ha detectado que en esas celdas hay un nmero pero se le est dando tratamiento de Texto. En la tercer columna est la fecha. La revisin de los consecutivos la hacemos sobre el principio de que si un nmero consecutivo es correcto, la diferencia de los dos debe ser igual a 1. Pero, antes de hacer la formula, se debe de poder trabajar el numero consecutivo como un nmero, as que primero que todo, en la columna D, transformamos o convertimos el nmero del consecutivo en un dato que de verdad sea numrico, habilitado para que Excel pueda hacer clculos. Entonces, en la columna D, usamos la funcin =Valor() y la direccionamos hacia la celda que contiene el nmero consecutivo, as:
182
Hacemos la frmula y la copiamos a todo lo largo. Solo para efectos didcticos, en la columna E, le estoy mostrando cmo es que se escribe la formula que est en D2. Ok. En la columna E, vamos a montar esta verdad: El nmero consecutivo de la siguiente fila, menos el nmero de la fila actual, es igual a uno:
Como en este caso, 357894 menos 357892, es una VIL MENTIRA, (je-je) pues Excel nos devuelve Falso:
Sobre esta Prueba lgica comenzamos a montar la formula que nos revisar los nmeros consecutivos, y la mejoramos, con la funcin Si, As: =Si(Celda siguiente menos celda actual igual a Uno; no me indique nada, si no es igual a uno, dgame que hay un salto de consecutivo) Este rollo quedara as:
183
La formula en E2 es: =SI(+D3-D2=1;"";"Hay un salto en el nmero consecutivo") Que cumple a cabalidad lo que queremos. La prueba lgica es +D3-D2=1 si es verdadero, no colocar nada, esto se indica con las dobles comillas sin espacio intermedio entre ellas. Si es falso, se coloca el mensaje entre comillas Hay un salto en el nmero consecutivo. La formula se copiara hacia abajo, y pues all ya se cumplira el cometido. Sin embargo, la funcin se puede mejorar, pues en la diferencia entre 357892 y 357894 que es DOS, falta el 357893. Podemos usar el prefijo concatenador & (Ampersand) que por lo general est en su teclado en la tecla 6, y amarrar el valor de la celda, sumarle un uno, e incorporar el nmero faltante al mensaje. Y esto se puede indicar en la funcin, as:
=SI(+D3-D2=1;"";SI(D3-D2=2;"Falta el nmero "&D2+1;"")) Sin embargo la cosa no para all, pues habrn ms casos en los cuales la diferencia no ser un solo salto en el consecutivo, sino varios consecutivos. Siguiendo la misma tcnica, podemos hacer que el mensaje nos diga cuales son los nmeros que hacen falta, as:
La formula se mejora mediante otro S: =SI(D6-D5=1;"";SI(D6-D5=2;"Falta el Numero "&D5+1&" Hasta el Numero "&D6-1;"")))
"&D5+1;SI(D6-D5>2;"Falta
desde
el
Numero
184
Una vez montada la formula, solo necesita, mediante un filtro excluir las celdas en blanco, y ya sabra cuales son los saltos en los consecutivos. Otras maneras de encontrar los nmeros consecutivos faltantes, pueden hacerse tambin con la ayuda de la tabla dinmica, enfrentando o cruzando una serie completa que uno mismo confeccionara, contra la serie de consecutivos que nos estn pasando. As, la tabla dinmica nos mostrara que el nmero solo existe en nuestra serie completa, y que falta en la serie real. Pero para hacerlo mediante tabla dinmica tiene que aprenderla a manejar, y eso lo veremos ms adelante.
185
De tal manera que, si hacemos una frmula que se refiera a ese rango, ya no tendremos que escribir A1:A5, si no nombres.
Cualquier rango, ya sea numrico, de texto, una tabla de datos, se puede nombrar, y en las formulas que introduzcamos, podemos usarlos, y as, queda mucho ms fcil saber de qu es que se trata una formula. Es normal que pase el tiempo y se dificulte la lectura, mas, si en lugar de ello, se usan los nombres pues es mucho ms fcil.
186
Formato Condicional
Formato se refiere a la estructura, patrn, diseo, organizacin de las celdas. En Excel las celdas se pueden combinar, (si tienes un texto o un ttulo muy largo, y quieres que cubra varias celdas las puedes FUSIONAR, como si fueran una sola), se pueden colorear, se les pueden colocar patrones de textura, se les pueden colocar bordes, lo que contienen se puede formatear tambin, colocndole un color al tipo de letra, cambiar el tipo de fuente (estilo de la letra) repintarla (ponerla en negrita o negrilla), inclinarla (Cursiva), colocarle una rayita debajo, (subrayado). El formato condicional ES: dependiendo del contenido de la celda, hacer que Excel Automticamente le ponga un formato. POR EJEMPLO: Supongamos que tenemos un MONTON de transacciones. Queremos UBICAR rpidamente las que estn fuera de lo normal, por ejemplo, encontrar las ms grandes, las ms pequeas o las que se encuentran por encima del promedio. Formato condicional en Excel 2007 Una de las TREMENDAS MEJORAS que le hicieron al nuevo Excel, incluyeron este tema. La facilidad para APLICAR el formato condicional con las funciones de ORDENAR POR COLOR es Espectacular. Para ubicar los valores ms grandes en un rango, seleccione un rango de datos NUMERICOS. 1. En la Ficha INICIO Escoja el grupo ESTILOS. Despliegue la pestaa:
187
2. Vamos a escoger 10% mejores. Si no le gusta el estilo que Excel le trae por defecto, puede
Tan pronto escoja 10% le resaltar automticamente el valor que cumple la condicin. Al desplegar la pestaa, obtiene ests opciones:
188
Encontrando las transacciones de la LTIMA SEMANA Si una de las columnas contiene fechas, el formato condicional en Excel 2007 puede encontrar fcilmente fechas que cuadran en un rango de fechas. Siga los siguientes pasos: 1. 2. 3. 4. Seleccione un rango de fechas Clic en formato condicional Seleccione RESALTAR REGLAS DE CELDAS Seleccione Una fecha:
5. En la siguiente ventana de dilogo despliegue la pestaa donde puede escoger el periodo de ocurrencia, tal como ayer, esta semana, siguiente mes. Los rangos se reevalan cada vez que el libro se abre. Si configura HOY ver diferentes celdas resaltadas, dependiendo de la fecha en el reloj del sistema.
189
Usando conos para marcar valores Los conos son una nueva funcionalidad en Excel 2007. 1. Seleccione nuevamente el rango de valores. En el formato condicional, escoja conjunto de conos. Luego, ms reglas:
2. En el cuadro de dilogo primero escoja un estilo de conos, a medida que vaya escogiendo un estilo, ver cmo van apareciendo los mismos al lado de los valores sobre el rango seleccionado, observe:
190
3. Si hace clic en MAS REGLAS (no administrar reglas, MAS REGLAS, las de la imagen anterior a esta) puede definir 3, 4, o 5 categoras. Luego use la cajita de valores para definir los porcentajes:
191
Estos semforos son muy tiles para que Excel nos coloque alertas de auditora o para cumplimiento de metas. Nosotros que nos la pasamos mirando numeritos, esta es una excelente ayuda para CLAVAR EL OJO en donde necesitamos sin necesitar de revisar los valores UNO A UNO.
192
Barras de datos Otra caracterstica NOVEDOSA de Excel 2007, son las barras de datos. Nuevamente seleccione Formato condicional
A medida que va seleccionando un estilo, se va formateando la celda con una escala de color relativa al tamao de cada nmero.
193
Tenga en cuenta NO INCLUIR en el rango el total del mismo. El valor ms grande tomar automticamente la barra ms larga, y har que el resto de las barras se vean insignificantes. Las escalas de color funcionan de manera similar a las barras, aqu una imagen:
Ahora, en la opcin MAS REGLAS, podemos cuadrar las opciones a nuestro gusto y necesidad:
194
Aqu, se ha personalizado la barra, con la base de 10 y 90% respectivamente para la barra ms corta y la ms larga. Como puede ver, hay varios tipos de reglas en formato condicional que se pueden aplicar. Montando ICONOS solo al 10% MEJOR Cuando se aplican los conos a un rango, uno de los inconvenientes es que a cada celda se le asigna un cono, as que se forma una MEZCOLANZA de conos:
Sera mucho mejor si solo se le colocan conos al 10% mejor. Para configurar este formato condicional hay que decirle a Excel que 1. Primero seleccione un juego de conos.
195
4. Configure la regla similar a la figura que le presento a continuacin: Escoja aplicar formato nicamente a los valores con rango inferior o superior. En la lista seleccione INFERIOR. Escriba 90. Dele clic a la casilla de verificacin % del rango seleccionado
196
6. Clic en Aceptar. En la siguiente imagen, ahora s, ver que SOLO SE MONTA CONO a los mejores 10%:
197
Se puede usar una metodologa similar para aplicarle una barra verde a los mejores 33% y una barra roja al 33% de los registros ms bajos.
Usando Formato Condicional en Excel 2003 El formato condicional en Excel 2003 comparado con las nuevas caractersticas de Excel 2007 no es tan bueno. No ofrece juego de conos, barras ni escalas de color.
El formato condicional lo encuentra por el men Formato Formato condicional. En esa opcin puede resaltar las celdas que son ms grandes que un valor particular:
198
Para lograr resaltar las celdas mayores al 92% en Excel 2003, Tendr que llevar a cabo estos pasos: 1. 2. 3. 4. 5. 6. Seleccione un rango de nmeros Escoja Formato, formato condicional En la lista desplegable, seleccione FORMULA Escriba una formula tal como : =D2> Coloque un formato Clic Aceptar
199
7. El formato condicional que acaba de colocar a la CELDA B2, debe de copiarlo, con COPIAR FORMATO al resto de las celdas de RANGO.
Expertos de Excel pueden montar formulas como esta, pero la mayora no tiene tiempo para armarla o investigarla, Excel 2007 es mucho ms fcil.
200
Encontrando valores duplicados o valores nicos. En Excel 2007 la cosa es SUPERFACIL. Seleccione el rango en donde quiere DETECTAR los registros duplicados, va por Formato condicional Resaltar reglas de celdas Duplicar valores.
Tan pronto seleccione la opcin Excel detecta automticamente los registros repetidos.
201
Al desplegar la opcin de relleno, puede seleccionar uno de los tipos de formatos preestablecidos, o crear uno:
Otra opcin BUENA que trae Excel 2007 es que puede seleccionar una de las celdas que quedaron formateadas y que son duplicados, y hacer clic derecho. En el men emergente, escoger:
202
De manera similar, en lugar de seleccionar los valores duplicados, puede escoger los valores UNICOS:
203
Encontrando duplicados en Excel 97-2003 En las versiones anteriores nos toca montar una formula, en una columna adyacente o montar la formula en el formato condicional. La frmula que normalmente se usa es =Contar.Si()
204
Recuerde que una vez ingrese la formula en C2, debe de COPIAR EL FORMATO CONDICIONAL al resto de las celdas del rango.
205
Usando una frmula para identificar los valores nicos La formula en la imagen RASTREA la SEGUNDA OCURRENCIA. Los que son nicos, quedan con un CERO. El truquito radica en que el rango comienza en la celda $A$1 AMARRADO completamente con signo pesos, y se extiende con un amarre relativo a la columna A. As, el rango en la fila 3 se va extendiendo. Preste mucha atencin a los amarres o si no, no le funcionar. Tambin debe de ordenar la informacin por la columna que va a analizar.
206
Usando filtro avanzado para encontrar valores nicos. Uno puede usar filtro avanzado para sacar los registros nicos:. Antes de aplicar el filtro avanzado, debe de incluir en una celda APARTE, un encabezado correspondiente a los valores nicos.
Aunque se seleccione una sola celda, Excel expande la seleccin para incluir la regin entera de informacin como rango de lista. Active la opcin Copiar a otro lugar, para que se active la otra opcin Copiar a: Debe de indicar la celda APARTE que tiene EL MISMO ENCABEZADO de la columna que se va a evaluar. Active la casilla de verificacin correspondiente a Solo registros nicos Si as lo hace, Excel le proveer una lista nica de Documentos, ordenados en la misma secuencia de la base original.
Usando una tabla dinmica para encontrar registros nicos. Es raro que se use una tabla dinmica para hacer esta accin, ms de uno no se imagina que la tabla dinmica le puede sacar la lista de los nicos sin necesidad de voltear tanto En Excel 2003, Simplemente, seleccione una celda de la tabla. Vaya a Herramientas Datos Tablas dinmicas, siguiente siguiente finalizar. En cuanto le salga la opcin de arrastrar campos, arrastre el campo que quiere identificar como nico al rea de las filas:
207
Arrastre el campo Documento al rea de filas, o use la lista, seleccionando documento y con el botn Agregar a, al rea de filas:
En Excel 2007, siga los siguientes pasos: 1. 2. 3. 4. Seleccione una celda de la tabla de datos. En la ficha Insertar, seleccione Tabla dinmica Clic en Aceptar En la lista de tabla dinmica active la casilla Documento. (Para el caso de la imagen). La columna A contendr la lista de los documentos UNICOS como se muestra en la siguiente imagen:
208
En realidad, uno no monta ninguna tabla dinmica, pero es muy efectivo para sacar la lista de los UNICOS. Luego, puede copiar la lista y usando pegado especial solo valores, para pegar la lista y DESBARATAR la tabla dinmica. Utilizando la herramienta REMOVER DUPLICADOS en Excel 2007 para encontrar los registros UNICOS Una de las novedades del Excel 2007 es que trae un botn que nos permite ELIMINAR o REMOVER los duplicados, y suena bacanisimo, pero es un comando que se debe de usar con mucha PRECAUCION. Antes de usar la opcin, asegrese de hacer una copia de la hoja, o del rango de datos, y use el comando en la informacin copiada.
209
Para el caso, como sabemos que los duplicados estn en la columna del documento, y que el encabezado describe la columna, activamos la casilla de verificacin Mis datos tienen encabezados. Active la casilla de la columna que sabe contiene los duplicados. En cuanto haga clic en Aceptar:
210
Nota: Esta opcin es muy buena para arreglar los archivos planos del kardex del Cg1, pues estos archivos planos al bajarse a Excel, duplica las primeras lneas de los encabezados correspondientes a los bloques de inicio de un nuevo tem, la primera vez que arregl un archivo plano de kardex me encontr con esta sorpresita, pero ya sea con la formula contar.si o con remover los duplicados, podemos remover las lneas repetidas. Porque el archivo tiene estas lneas repetidas? Porque el archivo es un archivo que est destinado a impresin, NO A BAJARSE EN EXCEL. Como estaba destinado a impresin, suceda que se necesitaba IMPRIMIR EN NEGRITA, REPINTAR ESOS INICIOS DE BLOQUE. Lo que hace el sistema es HACER que la impresora de punto ESCRIBA UNA VEZ MS LA MISMA LINEA. Por eso, al bajarse el listado como archivo plano a Excel, vemos esas lneas repetidas.
211
Ms de formato condicional Duplicados Primera ocurrencia En internet hay ejemplos muy buenos que algunos Duros de Excel ponen gratis. En la pgina de David McRitchie (una de las ms viejas) un par de chicos hace MUUUCHOS aos colocaron una solucin muy buena, en esa poca estaba montada en Excel 97. En Excel 2003 es casi la misma cosa, en 2007, solo es saber la ruta por donde se introduce la frmula del formato condicional, ya lo veremos: Adems de colocar el formato condicional, anidaron la formula en una celda adyacente para que, adems de indicar que hay una duplicidad, INFORMARA en cual celda esta EL OTRO REGISTRO DUPLICADO: Es decir: en este caso se encuentra la primera ocurrencia duplicada. Si un nombre o nmero existe dos veces, no seala los dos, SOLO la primera ocurrencia y a travs de una frmula anexa indican en donde ms existe ese nmero o nombre.
Para colocar el formato condicional en Excel 2003: Selecciona B15, Formato condicional, formula, escriba =CONTAR.SI($B$15:B15;B15)>1 Preste atencin a los amarres, al posicionamiento de los signos $. Copie y pegue el formato a lo largo de la columna. La frmula del Seor Leo Hauser Ubicada en C15, es: =SI(CONTAR.SI($B$15:B15;B15)>1;"Nombre existe en la fila "&COINCIDIR(B15;$B$1:B15;0);"") La frmula del Seor Sjoblom ubicada en D15, es:
=SI(CONTAR.SI($B$15:B15;B15)>1;"Nombre existe en la celda "&DIRECCION(COINCIDIR(B15;$B$1:B15;0);COLUMNA(B15);4);"")
212
A esta TABLITA, selecciono la Celda A2. Me voy por Formato condicional Nueva regla:
213
Ingrese la formula, no olvide copiar el formato al resto de las celdas de la columna, tendr este efecto:
214
Duplicados todas las ocurrencias Aqu hay una solucin de formato condicional para cuando deseemos colocar UN COLOR para la primera ocurrencia de duplicado, y OTRO COLOR para la segunda ocurrencia de duplicado: En Excel 2003:
La primera formula es: =SI(CONTAR.SI($A$2:$A$21;$A2)>1;CONTAR.SI($A$2:$A2;$A2)=1) La segunda frmula es: =SI(CONTAR.SI($A$2:$A$21;$A2)>1;CONTAR.SI($A$2:$A2;$A2)>1) La segunda, al final no es igual, es MAYOR a 1
En Excel 2007: De manera similar al caso anterior, se va por Formato condicional Nueva regla. Escoge aplicar una formula, escribe la primera formula y le da enter.
215
Administrar reglas:
216
217
Ms de formato condicional:
Montando un Formato condicional que nos coloree la celda QUE CRUZA CON OTRA TABLA: Esta tcnica es una maravilla. Pues as como podemos hacer que Excel detecte duplicados, podemos hacer que nos muestre si un valor cruza en otro lado: El ejemplo sera el siguiente:
Aqu el formato condicional nos marca que los que estn en verde estn en la otra tabla. Para lograr esto, en Excel 2003, la frmula del formato condicional en A2, es la siguiente:
218
En Excel 2007, ya sabe como ingresar las formulas. Pero como ya estamos manejando ms de un milln de filas, NO JUSTIFICA que para un pequeo rango, pongamos a Excel a verificar la columna entera. OJO CON ESO. Es mejor que seleccione el rango. El secreto de estos formatos condicionales es saber montar las formulas, como el asunto no es nada fcil, le traigo la solucin, pues para hacer pruebas de auditora es sumamente UTIL. Como ve, Obtener lo que Cruza, para Excel es cuestin de segundos. No puedo dejar de recordarle el proverbio del ltimo gran Filsofo Griego, Epicuro (ojo con la pronunciacin! Jejeje):
"Nada produce tanto regocijo como el no cumplir muchos cometidos ni emprender asuntos engorrosos ni violentar nuestra capacidad ms all de sus fuerzas, pues todo esto provoca perturbaciones a nuestra naturaleza."
Un Viejo de verdad Sabio, sus palabras recorren a travs de los milenios.
219
Ms de formato condicional: Comparar la celda correspondiente con otra hoja Cuando ya era fantico de Excel desde hace ya bastante, alguna vez una compaera me coment que tena un informe, un cuadro en Excel que enviaba a cierta dependencia, y que esa rea, se lo devolva con cambios. Entonces me dijo que si yo saba cmo hacer que Excel colocara un colorcito en donde la celda fuera diferente .como decimos en Colombia, ME CORCH. El termino que se usa para cuando uno no sabe o no conoce. Como siempre, la pregunta no dej de MORTIFICARME hasta que una vez, en Internet, encontr una solucin, la cual adapt para el caso. Supongamos que tenemos dos hojas, aparentemente idnticas, pero para no DESGASTAR los ojitos mirando CELDA A CELDA, podemos montar una frmula que lo haga, la cosa es as: En primera instancia el formato condicional no permite hacer referencias a otras hojas. Sin embargo hay una forma y es definiendo nombres y usando la funcin =DESREF Estos dos temas definir nombres y la funcin DESREF, se trata con detenimiento en el libro, conviene que los revise si no los comprende an para que entienda mejor la solucin que se le ofrece. Tendramos esta primera tabla:
En la Hoja2 tendramos:
La formula de formato condicional que tenemos montada en la primera Hoja1, en la celda A2 es la siguiente:
220
=A2<>DESREF(comparar;COINCIDIR(A2;A$1:A$6;0)-1;COINCIDIR(A2;$A2:$D2;0)-1)
El formato se copia en el resto de celdas, la celda que sea diferente, se resaltar. Antes de ingresar la formula, tenga presente, pues aqu nos valemos de un recurso nuevo para lograr el efecto: Muchas veces tenemos una hoja original y otra que ha tenido otra persona, que a su vez nos la retorna. Por x y motivo, necesitamos saber si ambas hojas siguen siendo las mismas; un mtodo rpido es usar el formato condicional para este fin. Se sabe que en el formato condicional cuando se arma una frmula que referencia otra hoja, nos sale un mensaje que no nos permite hacerlo. Sin embargo, sabemos que si definimos una celda de otra hoja como un nombre, Excel hace el trabajo sin problemas. Primero que todo, partimos del hecho de que ambas hojas son idnticas y estn posicionadas iguales en su comienzo en cuanto a primera fila y primera columna. En la OTRA hoja "Gemela" seleccione la primera celda que da comienzo al cuadro o informe. En este caso es la celda que dice "tem 1". (En este ejemplo hemos creado una hoja anexa con el mismo nombre pero distinguindose por un numero 2). Con la celda seleccionada, En Excel 2003, vaya al cuadro de nombres a la izquierda de la barra de formulas. Si no lo ve fcilmente, se lo muestro: vaya a esta zona de su Excel y haga clic adentro -----> (Es justo arriba a la izquierda del encabezado de la columna A) Escriba un nombre para esa celda. En este ejercicio la celda que dice tem 1 en la hoja Comparar con otra hoja (2) tiene por nombre "comparar". Puede comprobarlo mirando los nombres que tiene este archivo en la siguiente imagen, entre ellos ver el nombre comparar".
221
Listo, esa es la primera parte. La segunda es volver a la hoja original, (La hoja1), ubicarse en la celda que dice tem 1, ir a Formato Formato condicional - formula, e ingresar esta frmula: Preste MUCHA atencin a los amarres. Esta es la formula en la celda A2, en la Hoja1 en la hoja2 no se mete NINGUN FORMATO CONDICIONAL
Escoger un formato. Para este ejemplo, escog el amarillo. Acto seguido, copiar y pegar el formato en el rango donde se quiere que aplique. Intencionalmente se cambiaron dos datos en la otra hoja, que son los que se pintaron AUTOMATICAMENTE, gracias al formato condicional, de amarillo. La formula lo que dice es que si la celda es diferente de la misma celda que est en la otra hoja, la pinte o coloree de amarillo. Ms concretamente, el primer argumento es la celda que tiene por nombre "comparar" que es la base del DESREF. El segundo argumento es cuantas filas. Para ubicar la fila, usamos la funcin =COINCIDIR() y le restamos 1, porque esta frmula solita nos dir 1 para tem 1, siendo que esa posicin es cero. El tercer argumento es cuantas columnas, tambin usamos =COINCIDIR() y se resta 1.
Como se monta en Excel 2007: Primero que todo, las dos hojas deben de estar en la misma ubicacin. Comenzar en la misma columna y fila. La celda superior-izquierda de la segunda hoja, la denomina comparar. Se va por formato condicional, nueva regla, escoge formula, e ingresa la formula. Copia y pega el formato al resto de las hojas:
222
Este es el resultado:
223
Ms de formato condicional Mximos en fila y en columna Este ejemplo muestra ROJO si el valor mximo est tanto en Fila como en Columna; de otra forma, VERDE si es el valor mximo en Columna, o AZUL si es mximo en Fila. Observe la siguiente tabla:
La idea es montar un formato condicional que nos seale el valor mximo de cada tienda a lo largo de los meses, y cual tienda fue la mejor por mes. Jejeje de un solo PLUMAZO resolvemos eso: La frmula que debe de ingresar en la columna B3 es la siguiente: (el color de la condicin 1 es rojo, el de la condicin 2 es verde, y el de la condicin 3 es azul)
224
En Excel 2007, ya sabe, debe de ir por la Ficha Inicio - Formato condicional nueva regla utilizar formula escribe la formula, aceptar. Vuelve y llama ADMINISTRAR REGLAS e ingresa la otra frmula, y as con la otra, al final le quedan:
225
Validacin de Datos La validacin de datos sirve para controlar que llenen la informacin de las hojas de clculo de acuerdo a parmetros correctos. Por ejemplo, nombres, valores, valores que no pueden exceder ciertos lmites, etc. Todo esto permite que cuando se trabaje con esa informacin, (por ejemplo hacer tablas dinmicas o adicionar la info recolectada a una base de datos) no se presenten inconsistencias. Por ejemplo, si usted deja que un empleado llene el campo por decir algo, "ciudad"; algunos escribirn Cali, (CaliColombia es mi ciudad natal) otros Santiago de Cali, o Cali con un espacio antes o despus... Cosas as, que al momento de usar dicha data, retrasarn la labor de anlisis porque Usted tendr que ponerse a depurar la informacin, antes de poderla trabajar. Para acceder a este recurso de Excel, en Excel 2003 usted entra por el men Datos - Validacin.
Una vez seleccionado ver la opcin Configuracin, y all hay varias opciones, cada una de las cuales vamos a ver ahora.
226
Validacin bsica Ok. Como mencionaba hace un momento, la validacin de datos sirve para controlar o restringir que los usuarios ingresen datos no deseados en las celdas. Por ejemplo, si en la celda A1 de Excel, NO QUEREMOS QUE DIGITEN NUMEROS DISTINTOS ENTRE EL UNO Y EL DIEZ, lo que podemos hacer para evitar que el usuario de la hoja de clculo lo haga es colocarle una validacin de datos. Para lograr este cometido, sobre la celda en la cual queremos colocar la restriccin, llamamos la opcin validacin de datos y en la opcin permitir, seleccionamos Nmero entero, como se ve aqu:
Y en DATOS, seleccionamos ENTRE. Valor Mnimo colocamos el 1 y en el valor mximo el 10. Tambin podemos hacer, que en cuanto el usuario ubique el cursor en la celda que contiene el formato condicional, APAREZCA UN MENSAJE INFORMATIVO, y si el usuario es TERQUITO, y nos ingresa un valor diferente al establecido, podemos hacer que aparezca un mensaje de ERROR. Ese par de mensajes se configuran en las otras dos opciones que se ven aqu: MENSAJE DE ENTRADA y MENSAJE DE ERROR.
227
228
Validacin de datos de Lista. Esta es una de las validaciones que creo que ms se usan, es la manera de hacer que en la celda, Excel coloque una pestaita que al desplegarse aparezca una lista, la cual se despliega en cuanto se hace clic en la pestaa de la lista de tal manera que podemos seleccionar una de las opciones. La lista puede estar amarrada o direccionada a un rango de datos de lista que se encuentra almacenada en alguna parte de la hoja de clculo, o tambin dicho rango puede estar en otra hoja, o incluir la lista dentro del mismo cuadro de dilogo lista: Por ejemplo, en este caso se estn colocando las opciones Si, No, quizs, separadas por una coma, as:
En este segundo caso, se indica un rango de la hoja de clculo que contiene la lista.
229
Lista desplegable desde otra hoja de clculo Normalmente Excel no permite usar la opcin LISTA desde otra hoja de clculo. Lo que normalmente se hace es tener la lista lo ms lejos posible de la zona en la cual se hacen los clculos como la extrema derecha o la extrema derecha inferior. Pero la lista ubicada en cualquier parte de la hoja puede sufrir el inconveniente de ser borrada accidentalmente. Lo mejor, para no tener que ni siquiera considerar esa posibilidad, es ubicar la lista en otra hoja de clculo y ocultar la hoja. Hay dos mtodos para traer la informacin desde otra hoja: 1: Definir un nombre para el rango de la lista que existe en la otra hoja de clculo y referenciarlo en la configuracin de la lista fuente. Para ms informacin revise el tema Asignar nombres a los rangos, celdas o rango de celdas. La cosa es sencilla, el rango que est en una hoja aparte y que contiene la lista de
nombres, lo selecciona y en el cuadro de nombres le coloca un nombre, por ejemplo Lista. Entonces, en lugar de definir el rango, llama la lista, as:
2: Colocar la fuente referenciada dentro de la funcin =INDIRECTO(). La funcin indirecto es la que nos sirve para que un nombre dado, Excel lo reconozca como una referencia de una hoja. Se escribe as:
=INDIRECTO(
"'Hoja2'!A1:A9")
En este caso, el rango se encuentra en la hoja2, que se escribe entre comillas simples, despus va el signo de admiracin, el rango para el caso es A1:A9, y todo de encierra entre dos comillas y parntesis. Observe la siguiente imagen:
230
Como puede ver, es ms sencillo el mtodo del nombre. Una doble lista desplegable. Es posible seleccionar una lista, y con base en ella seleccionar una SUBLISTA? Si, se puede. Por ejemplo, podemos tener una lista de secciones de un supermercado, tal como Frutas, Vegetales, Crnicos, y Lcteos (yo lo he usado para definir los nombres de un grupo de compaas y que a su vez me aparezca el plan de cuentas de la compaa que eleg). Primero que todo, monte Usted la informacin de manera similar a como se presenta aqu:
Por ejemplo, en lugar de categoras puede poner marcas de repuestos, y en las subcategorias, los repuestos como tal. Ahora siga estas instrucciones: 1. El rango de Categoras que se encuentra en B12 a B15 se ha marcado y se le ha definido el nombre de Categoras. (Recuerde, el tema de asignar nombres a los rangos)
231
2. Cada una de las listas Subcategoras, tambin se le ha seleccionado el rango y se le ha definido el mismo nombre de su encabezado que es ntegramente IGUAL a cada una de las categoras. 3. Una forma rpida de colocar el nombre a un rango es Seleccionarlo con todo y encabezado, luego ir al men Insertar - Nombre - Crear. Asegrese que el nombre del rango que no incluye el rtulo o encabezado, tiene ese mismo nombre del encabezado y dele clic a OK. Si el titulo encabezado estuviera compuesto por dos palabras, por ejemplo "Materiales Construccin", tendra que colocarle un smbolo "underscore" entre palabras, as: "Materiales_Construccin". Es requisito indispensable que los nombres NO DEBEN CONTENER ESPACIOS. 4. La funcin =INDIRECTO() se usa en la opcin lista para FORZAR a EXCEL a que vea cualquier texto NOMBRE DE RANGO y no como simple Texto. 5. La funcin =SUSTITUIR() tambin se utiliza en la validacin para reemplazar cualquier espacio con el Underscore (_). Veamos cmo es que queda la validacin para la categora:
232
Este y todos los dems ejemplos de validacin los puede descargar de la pagina web, en el archivo plano llamado Excel_Maquial_Validacion.xls, de una vez en Excel para que le facilite su implementacin en sus propios ejemplos.
233
234
Validacin de datos Personalizada: Este tipo de evaluacin lleva implcita una frmula que evala si los datos entrados son correctos o no. (Verdadero o Falso). De igual forma que el caso anterior, seleccione Datos - Validacin para aprender la configuracin. La formula se indica un lado para que visualice su resultado. Y una imagen del cuadro validacin que se ha configurado en el ejemplo. Recuerde que el mensaje entrante y el mensaje de error tambin deben realizarse.
235
Ejemplo 2. La informacin no puede ingresarse en las celdas a menos que est formateada como 0.00% y solo nmeros entre 0 a 100. En este caso, en la celda B43, se ha montado la formula que TAMBIEN est en la validacin de datos de las celdas B41, B42, C41 y C42.
Esta es la validacin que tambin contiene la formula que controla el fin del ejemplo 2:
Esta solucin utiliza el potencial de la funcin =Celda() que puede traer la ubicacin, el contenido o el formato. En este caso con la funcin =Y() se exigen dos cosas, el formato de celda con =CELDA() y que el numero sea mayor a 0 y menor a 1 con =ESNUMERO(). CELDA("Format";B41)="P2" ---> Esta frmula dice que "El formato de la celda B41 debe ser Porcentaje con 2 decimales"
236
Ejemplo 4: Para prevenir que se llenen los registros fuera de cada fila. Es decir, se debe ingresar un nombre y un rea de la organizacin.
La funcin es la siguiente:
=Y(CONTARA($B$95:$B95)=CONTARA($C$95:$C95);CONTAR.BLANCO($B$95:$B95)=CONTAR.BLANC O($C$95:$C95))
237
Ejemplo 5 y 6 Controlar para que ingresen solo nmeros y controlar para que ingresen solo texto
238
Ejemplo 7 Controlar que no dejen casillas en blanco entre celda y celda ingresada
Espero que estos ejemplos le permitan aprovechar esta herramienta de Excel, ya puede ver el potencial que tambin tienen. Hay muchos ms ejemplos de validacin que se pueden encontrar en Internet.
239
La informacin presentada como se ve aqu arriba, no es apropiada para montar una tabla dinmica. Los meses NO PUEDEN estar en varias columnas. La columna D contiene Cantidad, Ingreso, Costo y
240
Utilidad. Tiene celdas en blanco que SE PRESUME que son del mismo cliente de la celda A2. Excel no puede trabajar la informacin as. Si Usted tiene informacin por este estilo, vaya al rea de sistemas para ver si ellos le pueden generar la materia prima de informacin transaccional que se us para crear este resumen.
Creando un resumen con Tabla Dinmica Supongamos por ejemplo que usted tiene 500000 filas de informacin que representan las ventas de 10 aos. Las tablas dinmicas le ofrecen un increble poder de anlisis en una gran variedad de resmenes, y es la herramienta que todo Auditor y Contador TIENE que saber manejar. Entre otros, es posible conocer: Los productos que se estn vendiendo Los clientes que estn comprando productos Que productos estn siendo comprados por cuales clientes La tendencia de ventas de productos a travs del periodo.
Armando una tabla dinmica en Excel 97-2003 Tomemos un ejemplo inventado por m de unos productos ficticios. Este es el ejemplo del archivo que se puede bajar del grupo de Excel en Facebook, o la pagina web Www.ExcelMaquial.CoM Primero que todo, asegrese de que la informacin contiene una celda nica en el encabezado que describe cada columna. En el men de Excel 97-2003 vaya por Datos-Informe de tablas y grficos dinmicos.
241
En este paso, acepte la seleccin por defecto SI su informacin est en Excel y SI va a crear una tabla dinmica.
242
En el paso 3, escoga la opcin DISEO. Nota: en el Excel 97 y anteriores, el asistente TIENE 4 pasos. Excel 2003 pide que haga estos pasos en la opcin diseo. La opcin diseo le permite construir el reporte arrastrando y soltando. Puede ver que la presentacin est en blanco y que la lista de los campos est al lado derecho. Al lado izquierdo hay cuatro reas, en las cuales puede arrastrar los campos:
Si lee con atencin lo que aqu dice, ver que cada uno de los encabezados de columna de la tabla dinmica del ejemplo se ven como botones, los cuales se pueden arrastrar a cada una de las reas del reporte dinmico; es decir se pueden arrastrar los botones a las zonas donde dice "pagina", "Fila", "Columna" y "Datos". Si vamos a crear una tabla dinmica que nos d el total por producto, los botones quedarn posicionados as:
243
El producto lo llevas al rea de las filas y el Total lo llevas al rea de datos. En esta rea vas a colocar los botones que por lo general representan valores que necesitan ser resumidos, sumados, promediados o contados. Si en este momento das clic en aceptar, retornars a esta ventana:
Y aqu, cambiamos el punto negro que est en Hoja de clculo nueva a Hoja de clculo existente, Se puede ubicar en una nueva hoja, esto es discrecional. Sealaremos la Celda en la cual se posicionar la tabla dinmica. Es decir, as:
244
EN SEGUNDOS el reporte le presenta un resumen. Cuando usted selecciona una celda DENTRO de la tabla dinmica, la lista de campos de tabla dinmica aparece. Es un tanto diferente en cada versin de Excel. En las primeras versiones de Excel, formaba parte de la barra de herramientas Tabla dinmica. Despus, la dejaron como un PANEL FLOTANTE. Si la lista de campos desaparece, es porque ha seleccionado una celda FUERA de la tabla dinmica. Seleccione una celda DENTRO de la tabla dinmica para que vuelva a aparecer. Ahora, si se siente mejor, manejando el cuadro de dialogo del asistente en
245
el cual cambiaba la tabla dinmica, lo puede traer haciendo clic en la lista desplegable de la barra de herramientas tabla dinmica:
Armando la tabla dinmica en Excel 2007 Cuando sali Excel 2007, no haba manuales de Excel 2007 en nuestro medio. An en el ao 2.010, fecha en la cual sale este libro muchas reas apenas estn implementando Excel 2007. Otras siguen en la antigua Versin. Y ya Microsoft tiene listo el Office 2010 La nica salida era usar la tecla F1 de ayuda y leer. Pero la ayuda no es tan didctica como un Libro o manual Tard un momento en darme cuenta que las tablas dinmicas las haban sacado del men DATOS y las haban pasado al men INSERTAR, Junto la opcin TABLA:
246
Para crear una tabla dinmica similar en Excel 2007, siga estos pasos: Seleccione una celda en la tabla base de datos En la ficha Insertar, escoja el cono Tabla dinmica Escoja Tabla Dinmica
Al hacer clic all se tomar por defecto el rango de su tabla fuente o tabla base:
247
Como puede ver, la evolucin del asistente de tablas dinmicas es notable. De una sola vez te lleva por defecto a una nueva hoja y el panel de lista incluye los cuatro sectores, Filtro de reporte, Campos de Columna, Campos de Fila y Campos de Valor. Solo necesita seleccionar, colocando un clic en la lista de campos, Excel los lleva por defecto a la zona de filas. Aqu no se arrastra hacia la hoja de clculo. Se arrastra hacia la parte de abajo, como dice esa regin:
248
249
Cambiando la tabla dinmica usando el botn Agregar a en Excel 97-2003 Cuando sali Excel 2002, se adicion un nuevo botn a la lista de campos llamado Agregar a, de tal manera que si Usted quera mover el campo producto, hacia la parte de arriba del reporte, se pudiera hacer usando el botn Agregar A:
Para mover el campo producto, de filas a columnas, para el caso que nos ocupa en la imagen, seleccionaramos el tem producto. Luego utilice la lista desplegable para cambiarlo de rea de filas, a rea de columnas. Una vez lo haya seleccionado, en cuanto haga clic en el botn Agregar A, el reporte cambiar para mostrar los productos a travs del encabezado del reporte:
Tambin puede usar esta metodologa para adicionar nuevos campos al reporte, por ejemplo, el campo vendedor lo puede adicionar en el reporte a la zona de filas. Entonces tendr un reporte con vendedores en las filas y los productos en las columnas:
250
En Excel 2003, puede arrastrar los campos deseados desde la lista de campos hacia el rea deseada, directamente en la tabla dinmica, sin necesidad de usar el botn Agregar a.
251
Modificando la tabla dinmica en Excel 2007 En Excel 2007 los campos se pueden arrastrar directamente en la lista de campos. Para adicionar un campo simplemente haga clic en la casilla de verificacin:
Este Panel de lista de campos tambin lo puede sacar de ese lado, (seleccionndolo y arrastrndolo) y llevarlo a la zona que desee. En la imagen que vemos aqu, para pasar el campo vendedor a la zona de columnas, para que quede similar al que acabamos de armar en Excel 2003, simplemente seleccione el campo vendedor, haga clic izquierdo sostenido y mientras lo sostiene, arrstrelo a la zona que dice Rtulos de columna.
252
Cambiando las celdas que se ven en blanco por ceros Si se fija en la imagen, podr ver que por defecto, si un vendedor, como el caso de julio, no tiene productos vendidos, ver que la tabla dinmica asigna un espacio en blanco. En realidad debera haber un cero, en lugar de espacios en blanco. Excel en cada una de sus versiones tiene la opcin de poder asignar un cero en lugar de los espacios en blanco. En Excel 2003, en la barra tabla dinmica, escoja opciones de tabla. En Excel 2007, la barra tabla dinmica se activa en una nueva ficha SOLO cuando selecciona una de las celdas de la tabla dinmica, en esos casos, EMERGE de la nada una ficha, la ficha Herramientas de Tabla dinmica:
Haga clic en Opciones, y dentro de toda la gama de Opciones, seleccione, Opciones otra vez.
Esta es la imagen por donde trae las opciones de la tabla en Excel 2003:
253
En estas opciones, active la casilla de verificacin de la opcin Para celdas vacas, mostrar:
254
En el combo Formato, active la casilla de verificacin Para celdas vacas, mostrar cero, de manera similar a como se ve en Excel 2003.
Cambiando la tabla dinmica en Excel 2007 arrastrando los campos de manera similar a como lo haca en Excel 2003: Los usuarios veteranos acostumbrados a usar la tabla dinmica de Excel 2003, encontraban que era muy fcil cambiar la tabla dinmica simplemente arrastrando los campos en el reporte. Esta opcin es automtica en Excel 2007-2003, pero est oculta en Excel 2007. Para activarla en Excel 2007, vaya a Opciones de tabla dinmica, haga clic en la ficha MOSTRAR, y all, active la casilla de verificacin Diseo de tabla dinmica clsica (permite arrastrar campos en la cuadrcula). Observe la opcin en la siguiente imagen:
255
Con esta opcin activada, se pueden seleccionar directamente en la tabla dinmica los campos de tabla de color gris y arrastrarlos hacia una nueva locacin, por ejemplo, pasar campos del lado de filas a columnas, simplemente arrastrndolos. La ventaja de esto es que se puede ver como se mueve el campo al ser arrastrado, y cuando lo lleva a una interseccin de la tabla, la lnea divisoria de insercin se resalta, lo cual facilita su reubicacin.
Mostrando dos o ms campos en la zona de datos En el ejemplo que venimos trabajando, llevamos nuestra tabla dinmica as:
Vamos a mostrar la zona y la fecha. Si activ la opcin de arrastrar al viejo estilo de Excel 2003, puede llevar los campos directamente sobre la tabla dinmica, sino, simplemente llvelos en la zona del panel lista:
256
Para que el informe nos quedara as como se ve aqu los campos se trasladaron a estas reas, como se ve en el panel lista:
Ahora, si queremos quitar esos subtotales, por ejemplo esos que dicen Total Krokanticos, simplemente nos ubicamos en esa columna, damos clic derecho con el ratn y en el men emergente, DESACTIVAMOS la opcin Subtotal, como se ve en la siguiente imagen:
257
Puede colocar o quitar subtotales de la misma manera. Agrupando campos de fecha Ok. Ahora vamos a reorganizar la presentacin de nuestro reporte dinmico, primero que todo por FECHA. Para tal efecto, selecciono y arrastro el campo fecha que se encontraba en tercer lugar, al primer lugar, es decir, lo subo y lo suelto encima de todos, lo dejo as como se ve aqu:
Listo, ahora llamamos el men emergente ubicndonos SOBRE la tabla dinmica en la columna FECHA:
258
Escoja Agrupar:
Para el caso que presento aqu, solo tenemos ocho das, si lo dejo as como est que me agrupe por meses, el reporte quedara as:
259
De igual manera, puede agrupar por meses y aos. Lo invito a que ensaye y haga pruebas.
Removiendo los campos de la tabla dinmica As como arrastr los campos hacia la tabla dinmica, o los activ mediante la casilla de verificacin, de igual forma puede sacarlos o quitarlos del reporte tabla dinmica.
260
Creando un Reporte Especfico usando el cuarto elemento del panel: El filtro de Reporte En Excel 2003 se denomina rea de Pagina, en Excel 2007, Filtro de reporte. Simplemente arrastre uno de los elementos hacia esa rea del panel. Por ejemplo, podemos arrastrar el campo ZONA, y tener un reporte todava ms personalizado:
Si hago clic con el puntero del ratn en la pestaa que dice Zona (todas):
Puede seleccionar las que desee, dos o ms, usando activando la casilla de verificacin Seleccionar varios elementos, y escogiendo, por ejemplo como en este caso, dos de ellas:
261
Recuerde volver a mostrar todos los elementos que seleccion. De igual forma, puede arrastrar al filtro de reporte, mas campos.
262
Mostrando el TOP de los 10 mejores Ok, He reacomodado los campos as: haciendo clic en la pestaa vendedor,
263
Como en mi ejemplo solo tengo 6 vendedores, pues digamos que quiero ver los tres mejores:
La tabla dinmica me muestra los tres mejores, (sin necesidad de desgastar mis ojos, mirando manualmente quienes son los tres mejores) me queda as:
264
Tenemos la misma tabla dinmica, esta vez en Excel 2003, entonces, vamos por la barra de herramientas tabla dinmica, desplegamos la lista desplegable o la pestaa que dice tabla dinmica. All, escogemos la opcin Ordenar y las 10 mejores.
265
Recuerde que para que le salga ACTIVA la opcin DEBE de estar POSICIONADO sobre la tabla dinmica en uno de los campos del AREA DE FILAS. Cuando haga clic en Ordenar y las 10 mejores, le saldr esta ventana:
Observe que ya le cuadr las opciones que necesito: Auto Ordenar Descendente, en diez mejores, Activadas y que me muestre las 3 superiores. Entonces, al dar aceptar, la tabla queda as:
Como lo ordenamos por el campo valor, pues ese es el criterio que finalmente nos queda. Si se fija, no queda ninguna seal de filtro, cosa que mejoraron en Excel 2007:
266
Ordenar y Filtrar en Excel 2007 es todava ms fcil. La misma configuracin en Excel 2007 se ve as, y en el panel lateral, podemos ver un embudo, cono utilizado para indicar que el campo tiene un filtro:
Si hace clic en vendedor en donde est el embudito, ver que le aparece una opcin:
Si hace clic all, llega a la lista que ya nos es familiar en Excel 2003:
Pero es ms fcil llegar a esta opcin si simplemente hace clic en el embudito de la tabla dinmica.
267
268
Extractando informacin detallada de los campos de la tabla dinmica (Drilling Down) Drill down es una palabra tcnica que usan los creadores de Excel para describir la operacin, la accin y el efecto que se produce en la tabla dinmica cuando sobre uno de los campos de valor, del rea de datos, se hace un doble clic. Cuando esto sucede, Excel recolecta, extrae y posiciona en una nueva hoja de clculo los datos de la hoja base que conforman dicho resultado que se observa en la tabla dinmica. La palabra Drill Down en su traduccin ms apropiada se refiere como El acto de usar un taladro o de taladrar; material extrado o excavado por un taladro. Por su parte el famoso traductor Babylon indica que Drill down es "Cambio rpido", la posibilidad de pasar rpidamente entre diferentes programas de carpetas secundarias Y en efecto, estas dos situaciones son las que ocurren, como le mencionaba en el comienzo de este tema. Por ejemplo, cuando uno se encuentra analizando la informacin de la tabla dinmica, en algn momento puede ocurrir que un resultado se vea sospechoso, o llame nuestra atencin, y queramos ver en detalle QUE RAYOS es lo que compone dicho valor.
Por ejemplo, en esta tabla ficticia, llama la atencin el producto MegaAcido, este producto, con 576 mil en ventas, quisiramos verlo en detalle que es lo que lo conforma. Pues bien, solo con hacer DOBLE CLIC en esos 576000, Excel crea una nueva hoja SOLO con los datos que conforman la sumatoria del producto MegaAcido:
Lo cual como se podr dar cuenta, es sencillamente ESPECTACULAR. Pues con esta DATA en una nueva hoja, se puede volver a analizar la info haciendo otra tabla dinmica, o montar unos subtotales o hacer los clculos que a bien tengamos.
269
Tablas dinmicas y el recalculo de informacin. Debe tener en cuenta que si se cambian los valores en la base de datos que es la fuente de la tabla dinmica, la tabla dinmica NO SE ACTUALIZA. Esto sucede porque Excel copia la base fuente en memoria (el famoso Pvot cach) cach: zona de almacenamiento que incluye datos que el ordenador computador- necesitar en poco tiempo, es un mecanismo de almacenaje de alta velocidad con el fin de permitir que la tabla, al reorganizar los campos pueda calcular SUPER RPIDO. Entonces, si usted hace cambios en la fuente de informacin, debe de FORZAR a que Excel los Re-lea otra vez, esto se hace en Excel 2003, usando en la barra de herramientas Tabla dinmica el botoncito que es un signo de exclamacin rojo:
270
Limitaciones de las tablas dinmicas Las tablas dinmicas son un REPORTEADOR que nos ayudan TREMENDAMENTE analizando informacin. Sin embargo tiene algunas limitaciones; por ejemplo, no se pueden insertar filas o columnas en la mitad de una tabla dinmica. Si lo trata de hacer, le saldr este mensaje:
Esto puede ser un inconveniente, pues muchas veces quisiramos quedarnos con esa informacin y poder trabajarla, por lo tanto, la informacin debe volverse de dinmica, esttica, solo valores. La solucin es seleccionar TODA la tabla dinmica, sino se deja tomar, seleccione INCLUIDAS LAS CELDAS ADYACENTES QUE LA CONTIENEN, copiarla con Control + C, y pegarla en otro lado con la opcin PEGAR VALORES:
Pero supongamos que quisiramos que el reporte de la tabla dinmica pegada sea otra vez una tabla de datos. Entonces, pegue la info pero primero qutele los subtotales (que ya sabe cmo hacerlo), y recuerde la tcnica de rellenar celdas en blanco que le expliqu en los temas del principio. (Ir a especial celdas en blanco, + la celda de arriba y Control + Enter)
271
Ms de tablas dinmicas: Operaciones diferentes a Suma Es posible volver a arrastrar el campo de valor, y hacer que la tabla dinmica en lugar de sumar, nos saque un promedio, o haga un conteo: En Excel 2003, lo haramos, ya sea usando el panel o arrastrando OTRA VEZ, el campo Valor total al rea de DATOS:
En Excel 2007, simplemente arrastre en el panel a la zona de datos, nuevamente el Valor total. O si activ la opcin de arrastrar al estilo de Excel 2003, arrstrelo dentro de la misma tabla dinmica:
272
En Excel 2003, debe de reubicar Valor Total 2 al rea de columnas, (Excel 2007 lo acomoda de una vez.) Arrastre el botn Datos al rea de columnas, de tal manera que le quede as:
En Excel 2003 vaya al asistente de tablas dinmicas, vaya por la opcin de diseo:
273
Ver que en este segundo botn, puede cambiar la operacin de suma, por CUENTA. Seleccione Cuenta y a continuacin, Aceptar, Aceptar y Finalizar. La tabla dinmica le quedar as:
Mirando con detalle, este Cuenta de valor total2, para el caso, vienen a ser como la cantidad de negocios que efectu la SALES FORCE (fuerza de ventas): (Fjese que en la tabla base, Julio hizo dos negocios):
274
Y hace doble clic en Cuenta de valor total, puede cambiar el nombre de ese campo:
Aceptar, Aceptar y finalizar. A la tabla dinmica le cambiar el nombre por el que le haya personalizado:
Ahora, si se fija, en la ventana objeto que se refiere al campo de la tabla dinmica, puede ver que hay ms opciones, una de ellas es Nmero. A travs de Esta opcin, puede darle Formato al mismo.
275
En Excel 2007, la esta accin se hace en el panel lista, campo valores, despliega la lista desplegable o la pestaa, tal como se ve aqu. Le saldr un men y en l, haga clic en Configuracin de campo de Valor.
Seleccione la operacin CUENTA. All abajo puede ver que est el botn FORMATO de NMERO. Por all puede cambiar el formato. Clic en Aceptar.
276
Puede ver que YO LE formati el numero de negocios y le puse decimales.(que bruto Je). Ya sabe como corregir ese error, nuevamente vaya por la opcin Configuracin de campo de valor, Formato de Nmero, Aceptar y Listo.
Llevando ms campos a la tabla dinmica: Este reporte se puede enriquecer arrastrando ms campos, al rea que deseemos. Es bueno probar que pasa si lo lleva a la zona de columnas, o de filtro de reporte, para que observe el efecto y cul de ellos es el que visualmente tiene mejor presentacin. Por ejemplo, llevando el campo PRODUCTO al campo de filas, el reporte nos queda as: En Excel 2007: En Excel 2003:
277
Como vimos, el ejemplo tiene datos por das, revisemos cuales fueron los das en los que se vendi menos:
En Excel 2003, reorganice la info as: En Excel 2007, as:
Ok, las tablas en ambos sistemas, le quedarn como le muestro a continuacin en la siguiente pgina:
278
Excel 2003:
Excel 2007:
Podemos cuadrar el formato de fecha PERSONALIZADO, para poder ver el da de la semana, colocando dddd;@ as:
279
Excel 2003:
Excel 2007:
Podemos ver que el da ms malo fue el mircoles. Elimine el campo Zona, y con esa info, resultante hacer un grfico, solo llame el botn de grficos y seale el rea comprendida entre los das en letras y los totales. La siguiente imagen es en Excel 2003:
280
Escoja el estilo que desee, aqu, voy a escoger Columna; En cuanto escoja el tipo de grafico de columna, aparecer dentro de las barras de herramientas, una nueva, Herramientas de Grfico:
281
Si en la tabla dinmica, en Excel 2007, llevamos el campo Zona, podemos ver que:
El nico distrito que vendi el mircoles fue el SUR. Como puede ver, las tablas dinmicas nos ayudan a ver rpidamente situaciones que sin ellas tendramos ms dificultad.
282
Ms de tablas dinmicas: Porcentajes de Participacin Vamos a sacar el porcentaje de participacin de cada vendedor respecto del total: Para esto, vuelva y arrastre el campo Vr total, de manera similar a como ya lo hicimos hace un rato, pero en esta ocasin, vamos a usar una opcin que est por all y que no hemos explorado todava:
En Excel 2007, vamos por configuracin de campo de valor en el campo Suma de Vr Total2:
Escoja la ficha Mostrar valores como, despliegue las opciones y con la barra de desplazamiento vertical, baje y busque la que dice % del Total.
En Excel 2003, por diseo, escoja dentro del rea DATOS, Suma de Vr total2 y haga doble clic. Llegar a esta ventana objeto, similar a la que acabamos de ver:
283
Haga clic en Opciones para que se despliegue la parte inferior que se ve aqu y escoja la opcin % del total. Haga clic en Aceptar. La cosa queda en cada versin as: En Excel 2003: En Excel 2007:
Recuerde que esos nombres feos que se ven all, (no me refiero a los de los vendedores, me refiero a esos nombres Suma de Vr Total y Suma de Vr Total2) se pueden cambiar configurando el campo, como le mostraba ms arriba.
284
Ms de tablas dinmicas: Acumulados Continuando con el ejemplo de la base ficticia que venimos ilustrando, vamos a usar la tcnica de acumulados para sacar los totales diarios, pero tambin poder ver la acumulacin de los mismos en el da a da. Para esto vamos a meternos por LA MISMA OPCIN, solo que en lugar de escoger % del Total, vamos a escoger Total en y escogemos como campo base, fecha.
En Excel 2007, la opcin es por ac:
Recuerde que debe llamar la opcin diseo, dar doble clic en Suma de Vr Total2:
Ok. La tabla dinmica nos queda en cada una de las versiones as:
285
En Excel 2003:
En Excel 2007:
Participacin porcentual Esta opcin nos permite conocer el porcentaje de participacin con relacin al producto en el da a da y al total general. Sale cuando escoges % de la fila, as, si en el ejemplo anterior, hacemos el cambio respectivo obtenemos este resultado:
En Excel 2003: En Excel 2007:
Vemos que no nos dice nada. Pero si le arrastras el campo fecha al rea de columnas, y le quitas la suma de valor total (ojo, lo quito solo para propsitos de que se pueda visualizar el efecto en un pequeo grfico, pero se pueden dejar los dos, no faltaba ms) sucede esto: Voy a ensear cmo queda en 2007, ya sabe que en 2003 queda parecido:
286
Crecimiento en Valor y en Porcentaje Para ver el crecimiento o decrecimiento de un da respecto al anterior por producto, tendramos que sacar la diferencia entre ambos. Esta opcin tambin est all, seleccione, en lugar de % de la fila, Diferencia de. La cosa queda as. Por espacio, solo muestro una porcin de das, y edit el nombre de los campos:
Puede ver que el GUTIS decreci 40.000. Si en lugar de Diferencia de, escoge Porcentaje de la diferencia de, obtendr el crecimiento porcentual.
La tabla dinmica tambin nos puede efectuar la diferencia entre los dos aos. Estos aos pueden ser el ao real vs el presupuesto, o la variacin de los saldos de balance de un ao a otro. Esto se realiza con la ayuda de un campo calculado, que haga la resta de un campo a otro.
287
Realice los pasos conocidos de tabla dinmica, en el campo diseo, organice la info as:
Ahora, UBICADO en el rea de los TOTALES, vaya por la barra tabla dinmica, formulas, campo calculado:
288
El nombre que le ponga, es el que le saldr en la tabla dinmica. Ahora, para la formula, escoja ltimo ao, clic en insertar campo, coloca el signo menos en formula, selecciona el campo Ao anterior, y le da SUMAR: Cuando le d sumar, el campo calculado quedar junto con los dems campos:
289
Listo. Ya tiene la variacin. Estas formulas son simples, no las confunda con las funciones de Excel.
290
Ahora vamos a ver como es el asunto en Excel 2007: Armamos la tabla dinmica:
Ahora nos vamos por Opciones de Herramientas de tabla dinmica, Formulas, Campo calculado:
291
Llegamos a la misma ventana que acabamos de Explicar en Excel 2003. Como ver, es la misma cosa. Clic en aceptar y listo:
As se hacen los campos calculados. Lo invito a que experimente y arme sus campos calculados, se pueden armar formulitas mas complejitas, si mal no recuerdo hace aos, efectuaba la diferencia entre un presupuesto versus el real, para obtener el cumplimiento del presupuesto en valores, a su vez dividido por el ao anterior para obtener el porcentaje, bueno, la idea es esa Igual eso est en los libros o en el todopoderoso Google.
292
Ms de Tablas Dinmicas: Elementos Calculados La diferencia entre el elemento calculado y el campo calculado, reside en que el campo calculado acta sobre los campos que se llevan al rea de datos en el cual se harn las operaciones, mientras que el elemento calculado acta sobre los campos que se ubican en las otras reas tales como el rea de filas y de columnas. En el caso que veamos anteriormente, si quisiramos armar un elemento calculado, no podramos,
Sencillamente porque los elementos calculados no estn disponibles en los campos del rea de datos, los campos que estn siendo sumariados no pueden usarse para hacer elementos calculados, solo para CAMPOS calculados.
Pero fjese que si selecciona una celda del rea de las filas, S se activa ELEMENTOS CALCULADOS, y esta opcin es muy til si quisiramos sacar la diferencia entre dos elementos, por ejemplo, en la imagen por decir algo, obtener la diferencia entre el rea de Auditora y Direccin administrativa.
De manera similar, primero ubique y seleccione una celda de la regin de las filas, esto es cualquiera de las reas. Ver que el elemento calculado aparece ACTIVADO. En la ventana objeto, de manera similar a como mont la formula en campo calculado, dele un nombre al elemento, y seleccione los elementos. Por ejemplo, aqu voy a hacer la diferencia entre Auditora y Direccin administrativa:
293
Ok, una vez armada la frmula, haga clic en sumar, y luego en aceptar, ver como le aparece al final de la tabla dinmica. Solo le falta que seleccione el campo y lo ubique debajo de Auditora y Direccin administrativa:
Los elementos calculados tambin son tiles para obtener la diferencia entre el ltimo ao y el ao anterior, cuando la informacin NO NOS LA PASAN de esa manera, sino que Digamos que nos la pasan as:
294
Que es como el caso ms comn. En este caso, arme la tabla dinmica as:
Nota: Acurdese que para sacar la diferencia entre los aos no necesita hacer un elemento calculado, lo puede hacer con la opcin Diferencia de, que vimos en el apartado anterior.
Entonces, ahora ubquense en la regin de filas, sobre una de las reas, llame la ventana objeto de Elementos calculados, seleccione el campo ao, y ver que tiene disponibles los elementos Ao Anterior y Ultimo ao. Con ellos, arme la formula, as:
295
Ahora, si da clic en Sumar, TE SALDR que Excel no puede hacer la frmula con esos elementos, porque
Y si se fija, en la tabla dinmica el campo AO, est quedando dentro del AREA DATOS. Entonces, QUE HACER ?
Pues ayudarle a Excel, creando un nuevo elemento dentro de la tabla, que se pueda usar en el rea de las filas, tendrs que editarla, as:
296
297
OJO SI VAS A HACER UN ELEMENTO CALCULADO TIENES QUE ESTAR UBICADO EN LA TABLA DINAMICA SOBRE EL ELEMENTO. YO DESEO HACER UN ELEMENTO CALCULADO EN EL ELEMENTO GRUPO, LUEGO ME UBICO EN ESA CELDA ANTES DE LLAMAR LA VENTANA (ESTA) EN LA CUAL CONFIGURO LA FORMULA. No hacer bien el paso puede generar mensajes de error de Excel con lo cual al tercer intento, perdemos la paciencia, dejamos la cosa as y no logramos crear el elemento calculado.
298
Ahora, si llevo el campo Ao, al rea de columnas, tendr la informacin visiblemente ms amigable:
299
Me puedo quedar con el dato solo de la diferencia: Finalmente, si nos pasan la info as:
300
301
Ms de tablas dinmicas: Cruces de informacin. Auditora o Contabilidad, Costos, Produccin o cualquier profesional que necesite comparar dos bases, siempre tendr necesidad de cruzar informacin. Los elementos y campos calculados nos pueden ayudar con esta tarea, sin embargo, es m deber comentarle que es una gran ayuda tener un nuevo Excel con capacidad para manejar ms de un milln de registros pero, cuando usted monta elementos o campos calculados en un par de bases que le midan ms de 500 mil registros, el Excel de su mquina, se le puede quedar literalmente MUERTO. Esto es debido al enorme esfuerzo que comienza a efectuar el aplicativo haciendo la operacin campo por campo. Incluso con un Computador con las mejores especificaciones pasa. Qu hacer entonces? Pues ayudarle a Excel evitando que se esfuerce tanto. Cmo? NO utilizando ni campos ni elementos calculados. Lo que Excel si hace MUY RAPIDAMENTE, es la Suma total, por filas y por columnas. Entonces, el truco radica en cambiar el signo al campo valor en una de las bases o una de las tablas. Supongamos que tenemos un Extracto bancario, que lo hemos podido descargar de internet, gracias a los servicios del banco. Este puede ser un ejemplo:
Para el caso, sirve. (Es un ejemplo inventado por m, el propsito es transmitirle la idea). Ahora, en otra hoja de clculo Usted tiene el libro auxiliar en archivo plano, y ya lo ha logrado depurar, esto es Limpiarle la basura de los encabezados, o a lo mejor su aplicativo contable exporta los datos de una sola vez a Excel, y digamos que tiene la info as:
302
Para cruzar la informacin, lo que le sugiero es: 1. Unifique las dos bases de datos, una debajo de la otra. 2. Identifquelas. Esto es, coloque un nombre en la columna A, a cada una de las tablas, cosa que le permita a Excel distinguir que la tabla de arriba es el Extracto y la tabla de abajo es la contabilidad. 3. Si puede identificar ms cosas en comn, inserte una nueva columna y coloque el mismo nombre. Por ejemplo, por decir algo, las transferencias recibidas pueden ser equivalentes a las consignaciones. Entonces, a esos dos conceptos, transferencias y consignaciones, llmelos de la misma manera. 4. Cmbiele el signo a una de las tablas, en una nueva columna de Valor.
Mire que aqu, en la columna A, e identificado que el bloque superior es el extracto bancario y el inferior el libro auxiliar de contabilidad. Tambin, en la columna REF2, unifiqu el criterio de que lo que es similar en ambas tablas. Finalmente, dupliqu la columna de Valor en Valor2, y le cambi el signo a la tabla de arriba. Con la informacin organizada de esta manera, Excel no tiene que calcular nada, salvo hacer la operacin de suma. La idea de esto es, que si existen 100 pesos en una de las tablas, y esos 100 pesos existen en la otra tabla, pero negativos (porque le cambiamos el signo), Excel sumar +100 -100 = 0. Entonces, TOOODO lo que nos d CERO, significar que est cuadrado. (Ojo, En principio, pues te puede ocurrir que hayan varios valores de 100!!). Organice la tabla dinmica as:
303
Como puede ver, aqu est la conciliacin. Hay unos casos que le llegan a uno en los cuales a veces es muy difcil hacer un match (match = coincidencia), y no hay una llave (campo clave) sobre el cual efectuar la conciliacin. Entonces, una salida, puede ser, CRUZAR EL MISMO VALOR. Como los valores son positivos en ambas BASES, pues vamos a rastrear o cruzar a nivel del mismo valor, ASI:
304
Obtenemos esto:
Podemos ver que en los abonos y en los pagos hay dos valores que cuadran. Y que la diferencia total de 3.033 viene de 330 pesos en abonos y 2703 en pagos, y cada uno de ellos, son de una inconsistencia en valores, por ejemplo, el auxiliar dice tener 801.980,37 y el extracto dice que tiene 801.680. Un error de digitar un 980 en lugar de un 680, adems de otros dos casos.
305
Cruzar la informacin de esta manera es sumamente VELOZ para Excel, mientras que si lo pones a hacer campos o elementos calculados, tu computadora se esfuerza ms. Ms de Tablas dinmicas: Desactivar la opcin GETPIVOTDATA. Estoy seguro, que habr notado que cuando se desean hacer clculos u operaciones sobre los datos de la tabla dinmica, Excel crea una formula RARISIMA, incluso para una SIMPLE DIFERENCIA DE CELDAS. Hagamos nuevamente un ejemplo con cruces de informacin. Supongamos que tenemos un par de rangos, cada uno de ellos con el Forecast por cliente de la semana actual versus la semana anterior.
Bueno, de manera similar a como se acaba de explicar, se unen las dos tablas y en una nueva columna se identifica cada una de ellas, as:
306
Con la INFO organizada, comienza a construir la tabla dinmica y dispone los campos as:
Por la opcin Diseo de tabla dinmica, desactiva los totales de columna, as:
307
Ver como se quita ese total. Ahora viene el problemita que le comentaba: Si se quisiera restar la columna Forecast Esta semana MENOS Forecast semana pasada, nos sale una frmula que nada tiene que ver con la tradicional, adems, si probamos a copiarla, veremos cmo NO FUNCIONA:
Como QUITAR esto? ASI: En Excel 2007, Vaya por el cono de Office en el extremo superior izquierdo:
308
En opciones de Excel, escoja PERSONALIZAR, y en comandos ms utilizados, escoja TODOS LOS COMANDOS, y en ellos, d Adjuntar el botn GENERAR GETPIVOTDATA:
309
310
Como activar la opcin en Excel 2003: Vaya por la opcin Herramientas Personalizar:
En la ventana, seleccione la ficha Comandos, y dentro de ella, DATOS, Generar GetPivotData. Arrastre el botn hacia la barra de herramientas:
Ok, es una forma que incluso es ms sencilla que ponerse a cambiar el signo a una de las tablas fuente. A veces es mejor ser prctico que sofisticado. No lo cree?
311
Armando tablas dinmicas que leen ms de 1.048.576 filas En varias partes del libro he mencionado que, pasar de 65 mil filas al milln y pico de filas en el nuevo Excel me hizo muy feliz, y es verdad, pero cada vez que te enfrentas a mayores retos, te puedes encontrar que incluso el milln de filas puede no ser suficiente. Ya me ha pasado. Tuve que analizar Kardex demasiado grandes y te cuento que la cosa se me complic un poco. Hasta que me acord de la aplicacin hermanita de Excel: El Todopoderoso Access. La cosa fue as: baje el kardex de todo un ao en archivo plano. La idea era cruzarlo con el auxiliar de la cuenta de inventarios y en un dos por tres saber cules eran las transacciones problema. Lo abr en Excel 2007. Qu pas? Excel NO LO ABRIO COMPLETAMENTE. Como le mencionaba en los primeros temas del libro, en el apartado relacionado con arreglar los archivos planos con la opcin Ordenar los datos, el 1.048.576 filas de Excel corresponde a una hoja de papel VIRTUAL de 5 kilmetros de largo. Por eso, en principio, se me hace difcil creer que haya un volumen mayor de datos pero, como se dice, De todo se ve en la via del Seor. Entonces, pues nada, gener el listado en bloques de 6 meses, lo cual pues tambin es aceptable, los volv base de datos e intent unirlos. Y qu pas? No pude! Al unirlos, sobrepasaban el 1.048.576 filas. RAYOS. Entonces? Necesitaba presentar la conciliacin que contuviera un ao. No me serva presentar 6 meses. Solucin? Utilizando Microsoft Access para crear una sola base de datos. Lo que hice fue UNIFICAR los dos archivos en uno solo, con la ayuda de Microsoft Access. Cmo? As: 1) Usted ya tiene los dos archivos que corresponden a las dos bases de datos en Excel. Ojo, Deben ser IDENTICOS EN ESTRUCTURA. 2) Abre el Access.
3) Abre una nueva base de datos en blanco, clic en crear. 4) Clic en Ficha, datos Externos, Excel:
312
6) En el botn examinar, que es una especie de EXPLORADOR, busque la primera de las bases de datos EXCEL:
313
7) Seleccione uno de los archivos que corresponden a la primera parte de uno de los aos del kardex, y haga clic en abrir. Regresar al momento anterior que veamos en Access, (la imagen anterior a esta) clic en aceptar. Access comenzar a importar el archivo. Al finalizar tendr algo as:
8) Siga las instrucciones, acepte las sugerencias de Access hasta llegar a la opcin finalizar:
314
9) En el ltimo paso, clic en cerrar. Nuevamente importe la otra tabla cuidando que quede formando parte de la tabla que acab de importar:
10) Cuando ya tenga ambas tablas unidas, guarde el archivo en Access. Es decir, como un archivo Access o sea un archivo con extensin .accdb 11) Cierre la aplicacin Access y abra Excel. 12) En un libro nuevo, vaya por la ficha insertar y escoja tabla dinmica:
315
13) En crear tabla dinmica, vaya por la opcin Elegir fuente de datos externa:
316
15) Clic en Examinar en busca de mas y busque el archivo que unific con la ayuda de Access, dele Abrir:
317
La tabla dinmica comenzar a leer los datos, podr ver como supera sin problema el 1.048.576 filas, y podr armar la tabla dinmica a su conveniencia:
Tenga en cuenta que est manejando una cantidad impresionante de datos, as que tenga paciencia si su equipo se pone RELENTO. Paciencia, mientras se compra un equipo de cmputo mejor.
318
Ahora, si quiere hacer el cruce de informacin, del kardex y el auxiliar, acurdese de cmo realizar el cruce de informacin que le explique en uno de los temas de tablas dinmicas, concretamente como organizar las dos tablas y nalas en un archivo MADRE con la ayuda de Access. En cuanto comience a montar la tabla dinmica, ver que cuenta con el campo origen, que es el que identifica cada una de las bases unidas y tendr que la tabla dinmica le har la SUPERCONCILIACION, basada en el archivo externo de Access. De manera similar, la tabla dinmica puede leer cualquier fuente de datos, Oracle, SQL, Fox Pro, etc. No necesita cargar en Excel la supertabla o base entera, puede hacer que Excel la lea de manera Externa, y de esta manera no se ver detenido por la limitante del 1.048.576 filas. Si tiene dificultades, pdale ayuda al Ingeniero de sistemas, ellos estn muy familiarizados con el manejo de tablas en SQL, Oracle, Fox o an el viejo Dbase.
319
Automatizando las tareas con Excel VBA No est de ms recordarle que el Excel 2007 trae ms de UN MILLON CUARENTA MIL FILAS. Le cuento, por experiencia propia, que hasta movimientos contables mensuales de empresas grandes se pueden manejar con este nuevo Excel. Es que uno siempre quedaba limitado por las viejas 65 mil filas de Excel 2003, solo con esta mejora, me hicieron muy feliz. Ya sabe, si ley el tema anterior, que incluso Excel puede trabajar directamente en las bases de datos con lo cual puede trascender el lmite del milln cuarenta mil filas En nmeros: Diferencias entre Excel 2003 versus Excel 2007: 2003 2007
Numero de Filas Numero de Columnas Cantidad de memoria usada Numero de colores Numero de formatos condicionales por celda Numero de niveles al ordenar Numero de niveles para deshacer Numero de tems que se muestran en el autofiltro Numero de caracteres que se puede mostrar en una celda Numero de estilos nicos en un libro Mximo nmero de caracteres en una formula Numero de anidaciones en una formula Numero mximo de argumentos en una formula 65.536 256 1 Giga 256 3 3 16 1.000 1.000 4.000 1.000 7 30 1.048.576 16.384 El Limite es fijado por Windows 4.3 Billones Ilimitados 64 100 10.000 32.000 64.000 8.000 64 255
El tema de las macros es pletrico. Esta parte pretende ensearle lo mnimo necesario para que pueda crear macros por lo menos funcionales. Pero muchos temas se quedan por fuera, si le gusta el tema, deber comprar libros especializados en el tema. Si despus de esto, le coge gusto, estoy seguro que no ser tan difcil abordar libros tcnicos especializados. Yo creo que, si Usted ley el tema relacionado con como rellenar los espacios en blanco, all tuvo que ver como con una pequea macro, nos podemos deshacer de una gran cantidad de trabajo EN SEGUNDOS!!! Es una cosa INCREIBLE, MONTAAS de trabajo pueden ser evacuadas EN SEGUNDOS!!! Razn ms que suficiente para aprender el tema. Quiero que sea consiente de como en este siglo XXI, el concepto angular de la dificultad se vuelve al revs. Por el momento es al nivel Informtico de Bytes. Pronto tambin ser realidad a nivel atmico y con ello me refiero a los tremendos adelantos que se llevan a cabo en la manufactura molecular. El planeta avanza a pasos agigantados, no pierda de vista los adelantos y no se resista al desarrollo tecnolgico, o ser arrasado de la arena profesional. una palanca y mover al mundo, deca aquel sabio griego.
320
Otorgando el permiso necesario para que el cdigo de las macros corran o se ejecuten en su computadora El primer paso antes de usar macros es activar el Visual Basic en el Excel de su mquina computadora. En Excel 2000-2003, utilice la ruta Herramientas Macro Seguridad y ajuste la seguridad a MEDIO.
Ok. Ahora, en Excel 2007, vaya por el icono de Office que se encuentra en el extremo superior izquierdo:
321
Aqu, hace clic en Opciones de Excel, y all, en centro de confianza. Llegar aqu:
322
323
Deber llegar a la ventana que le acabo de mostrar, all, escoja la opcin Deshabilitar todas las macros con notificacin. Recuerde que si est usando macros en Excel 2007 deber guardar los libros como libro habilitado para macros, con extensin .xlsm
324
Insertando el modulo VBA en su libro de trabajo Las macros normalmente se escriben en un modulo VBA de su libro de trabajo. Un libro puede contener muchas hojas de calculo as como hojas de grficos, tambin puede contener muchos mdulos VBA. En un proyecto complejo, es recomendable colocar las macros que crean reportes en un modulo y las que se refieren a seguridad o captura de info en otro modulo. Cada mdulo puede contener muchas macros. Pero macros pequeas y sencillas se pueden guardar en un solo mdulo. En la macro copiar vimos un poco de esto, pero no est de mas recordar la ruta para insertar un modulo: Ficha programador Visual basic. Una vez all, Men insertar mdulo.
En Excel 2003 la cosa es muy similar: Herramientas Macro - Visual basic Editor. Una vez all, Men insertar mdulo.
325
Escribiendo y corriendo una macro Una vez que inserte el modulo, ver un panel blanco al lado derecho, el cual se llama Panel de Cdigo. All es en donde se escriben las macros. Para comenzar a escribir una macro, escriba la palabra Sub, un espacio, un nombre para la macro y un par de parntesis, uno que abre y otro que cierra. Por ejemplo: Sub Probando() Cuando escriba esta lnea, presione ENTER. Excel crea una nueva macro llamada Probando. Visual Basic adiciona una lnea en blanco, y la lnea final de la macro con la palabra End Sub. Cualquier instruccin que escriba entre las lneas Sub y End Sub se ejecutan cuando usted corre la macro. Haga clic en la lnea en blanco entre Sub y End Sub, y escriba esta lnea: Msgbox Esta es una prueba
Haga clic en el cono de Excel y regrese a la hoja de clculo de Excel. Si est siguiendo estas instrucciones paso a paso, ahora va a probar si la macro funciona. Una manera de correr una macro es llamar las macros disponibles, lo cual puede hacer presionando Alt+F8 en cualquier versin de Excel. En Excel 2007 las puede llamar a travs de la ficha programador. En las versiones anteriores, yendo por el men Herramientas Macro Macros. Tal como se muestra en la siguiente imagen, el cuadro de dialogo de las macros lista todas las macros disponibles en su libro. Haga clic en la macro y presione el botn ejecutar:
326
Puede no ser muy efectivo tener que traer la ventana de las macros, sobretodo si se tiene que ejecutar peridicamente. Es mejor asignar la macro a un atajo de teclado, una combinacin de letras que al oprimirlas simultneamente, ejecuten la macro. Para asignar una combinacin de letras que sirva para correr la macro, haga lo siguiente: 1. 2. 3. 4. Llame las macros. Haga clic en una de las macros. Escoja el botn Opciones En la ventana de las opciones de macro, escriba una combinacin de teclas. Ctrl+J y Ctrl+K son buenas opciones, pues no hay comandos de Excel asignados a esta combinacin de teclas.
327
5. Haga clic en Aceptar para cerrar la ventana opciones de macro. (esta que ve aqu) 6. Clic en Cancelar para cerrar LA OTRA ventana de Macros. Ahora puede correr la macro si presiona Ctrl+J al mismo tiempo.
328
Una macro que recorra todos los registros de la hoja de Excel Por lo general, una macro sigue la siguiente estructura: Comienza en el primer rengln de informacin de la hoja de clculo. Examina un valor en una de las columnas. Basado en este valor, decide hacer algo. Se mueve al siguiente rengln en el rango de datos y repite. Para crear esta estructura de macro siga los siguientes pasos: 1. En su Excel, identifique la primera fila con informacin. Tambin identifique la ltima fila de informacin. 2. Llame el Editor de Visual Basic con Alt+F11 3. Si no est listo el modulo en el cual escribir la macro, insrtelo usando el men InsertarModulo. 4. Escriba la palabra Sub, dele un nombre a su macro y despus un doble parntesis de estos: (). En este ejemplo estoy denominando la macro as: Sub EjemploRecorrido() 5. El comando para un recorrido es la palabra For seguido de un nombre variable. Los nombres variables pueden ser I o X, o nombres tales como This row (Esta fila) Usted debe especificar la primera y la ultima fila del recorrido, para el ejemplo el recorrido ser especificado as: (Para EstaFila = 2 a 59, saltando de a uno) For ThisRow = 2 to 59 Step 1 6. En la siguiente lnea o rengln escriba un apostrofo y las palabras Hacer algo 7. En la siguiente lnea, finalice el recorrido o Loop con el comando Next ThisRow.
Esta macro recorrer todos los registros de informacin de su hoja de calculo Step 1 (paso 1) significa que la macro revisar cada fila. Si se usa Step 2 revisar la segunda fila distinta a la actual. En este momento, la macro no har nada aparte de recorrer la hoja de clculo, pues la instruccin se indica en donde colocamos el comentario del apostrofo Hacer algo. Seguidamente le diremos que haga o ejecute alguna cosa, con lo cual le dar una idea de lo que la macro puede hacer.
329
Como referenciar las celdas en el recorrido Uno puede referirse a una celda de una fila y columna particular usando el comando CELLS(Row, Column) quiere decir CELDA(Fila, Columna) Por ejemplo, la celda J2 esta en la segunda fila y la dcima columna (si verifica que numero de columna es la columna J, se dar cuenta que es la nmero 10), entonces CELLS(2,10) se refiere a la celda J2. Nota: Es importante indicar que el grabador de macros generara en lugar de Cells(2,10), la celda J2, esta otra notacin que es igualmente vlida, aunque fija, lo cual es una desventaja como veremos a continuacin: Range(J2).Select Lo bueno de referirse a las celdas mediante la tcnica CELLS(Fila,Columna), es que las coordenadas de la celda pueden ser una variable, o sea, no tienen que definirse fijamente sino que pueden ser cambiantes. Por ejemplo, para referirnos a la columna D en la fila corriente de la hoja de clculo, puede utilizar CELLS(ThisRow, 4). Para referirse a la columna A en la fila corriente de la hoja de calculo, puede usar CELLS(ThisRow, 1). Para referirse a la columna E en la fila anterior de la hoja de calculo, puede utilizar CELLS(ThisRow -1, 5). Referenciar la fila completa usando CELLS En algunas ocasiones, mientras la macro hace el recorrido uno puede necesitar referirse a la fila entera de la hoja de clculo. Por ejemplo, ocultarla o colorearla. Utilice el comando .EntireRow (Fila entera). Cualquiera de estos comandos ocultarn la fila corriente en el recorrido: CELLS(ThisRow, 5)EntireRow.Visible = False CELLS(ThisRow, 1)EntireRow.Visible = False
330
Referenciar un rango rectangular usando CELLS Si quisiramos aplicar un color o un formato negrita, podemos hacerlo a un rango. Podemos hacerlo por ejemplo, a 6 columnas, no a la fila entera. El comando .RESIZE(#Rows,#Columns) hace que el comando CELLS que se refiere a una sola celda, se refiera a un rango rectangular comenzando por la Celda como el comienzo de la esquina superior izquierda.
Nota: Resize significa cambiar la medida o cambiar el tamao Rows Filas, Columns Columnas
Por ejemplo, para referirse a un rango de una fila por seis columnas, puede usar: CELLS(ThisRow, 1).RESIZE(1, 6) Este otro comando colorea las columnas A hasta la F en la fila actual en rojo: CELLS(ThisRow, 1).RESIZE(1, 6).Interior.ColorIndex = 3
Macro que nos colorea cada tercera fila de rojo Bueno, con lo visto anteriormente ya podemos montar una macro que recorra nuestra hoja de calculo, y cambiando el comando STEP para que haga el paso cada tercera fila. En la macro que estbamos escribiendo, en lugar del Hacer Algo vamos a cambiar el color de las primeras seis columnas en esa fila a rojo. La macro que se muestra a continuacin corre un pocos segundos (o milisegundos) y es mucho mas rpida que si se creara un nuevo estilo de tabla o formato condicional.
331
Tomando decisiones basados en los valores hallados en la fila Avanzando un poco mas en las tcnicas vistas, podemos hacer que dependiendo del valor de la celda, se ejecute una accin o no. Si Usted conoce la funcin Si, esta estructura le ser mas fcil de entender. Se puede hacer que una macro tome una accin o decisin con la estructura IF..THEN.ELSE.END IF (S Talcosa.Entonces, Sin, FinSi) Por ejemplo, este cdigo revisa cada registro de la columna E. Si esta columna contiene la palabra Servicios, entonces el valor de la columna F se copia a la columna G y de una vez, la fila la podemos colorear de verde. En caso contrario, haremos que la pinte de color rojo. Recuerde que se pueden comentar los pasos de la macro anteponiendo un apstrofo Sub SeparandoServicios() Esta macro mueve los ingresos por servicios de la columna F a la G Pinta las filas de los ingresos por servicios de Verde Pinta las filas de los ingresos por productos de Rojo For ThisRow = 2 To 16171 Step 1 If Cells(ThisRow, 5) = Servicios Then Movemos el valor de la columna 6 a la columna 7 Cells(ThisRow, 7).Value = Cells(ThisRow, 6).Value Ponemos un Cero en la columna 6 Cells(ThisRow, 6).Value = 0 Coloreamos la fila de Verde Cells(ThisRow, 1).Resize(1, 7).Interior.ColorIndex = 4 Else Ponemos un cero en la columna 7 Cells(ThisRow, 7).Value = 0 Pintamos la fila de rojo Cells(ThisRow, 1).Resize(1, 7).Interior.ColorIndex = 3 End If Next ThisRow End Sub
En SEGUNDOS, esta macro analiza ms de 16 mil registros en Excel, reorganiza los valores, y les aplica un color como se muestra en la siguiente imagen
332
Ojo, bajo esta tcnica CELLS tenga cuidado cuando se eliminen filas Bueno, y que si queremos en lugar de copiar una celda, eliminar la fila completa? Pues aqu hay una ocurrencia extraa que pasa cuando en un recorrido (Loop) se elimina la fila. La fila que esta abajo y se elimina no se evala. Supongamos que tenemos una macro que recorre desde la fila 1 a la 10 Digamos que de acuerdo al contenido de la celda, la cuarta fila se borra. Segn lo que hemos visto, se hara con este cdigo de macro: Cells(ThisRow, 1).EntireRow.Delete
Resulta que al eliminar la fila 4 en Excel, toda la informacin de la fila 5 se mueve y pasa a ser la fila 4. Sin embargo, en el prximo registro revisar la fila 5, que era la 6. Como el tema se enreda, lo importante es que se soluciona haciendo que la macro corra de atrs para adelante. O mejor dicho, desde abajo hacia arriba, empezando por el ltimo registro. Esto se hara reversando el orden de las
333
filas en la declaracin FOR, y especificando que el Paso (Step) es -1. Recuerde que con Step 1, va bajando de a un registro. Pues con Step -1, va subiendo de a un registro. El Cdigo podra ser: Sub BorrarFilasQueNoMegustan() Borro las filas que contienen Q4 For ThisRow = 16171 To 2 Step -1 If Cells(ThisRow, 4) = Q4 Then Cells(ThisRow, 1).EntireRow.Delete End If Next ThisRow End Sub
Trabajando con un nmero desconocido de Filas Resulta que no todas las veces el archivo sobre el cual corre la macro tiene la misma cantidad de filas. Seria muy de buenas.. en la realidad, esto no ocurre. Por lo general los reportes varan en cantidad de registros, y tener que estar cambiando el cdigo For ThisRow = 2 To 16171 Step 1 Hasta la fila To 25645, por decir algo, seria una cosa muy aburridora, adems de que no tiene presentacin ni sentido. Hay un truquito que se puede usar para trabajar en diferentes cantidades de registros segn los archivos. Imagine que usted va hasta la ltima fila de la columna A. Es decir, si est en Excel 2003, se ubicara en la celda A65536. Si est en 2007 se ubicara en la celda A1048576. Estando all, Presione la tecla END, y luego la flecha hacia arriba. Excel sale disparado y se estrella contra el ltimo registro. Esta accin se puede grabar en una macro de varias formas, y la ltima celda hacer que Excel La tenga presente, es decir, Que no la olvide, guardando la direccin de esa ultima celda en una variable, as: En Excel 2003 podra usar: UltimaFila = Cells(65536, 1).End(xlUp).Row En Excel 2007 podra usar: UltimaFila = Cells(1048576, 1).End(xlUp).Row Si no sabe en que versin de Excel correr la macro, puede colocar este cdigo: UltimaFila = Cells(Application.Rows.Count, 1)End(xlUp).Row
334
Trabajando con Otras Hojas de Clculo Por lo general las macros corren sobre una hoja de clculo activa; sin embargo, algunas veces se necesita mover informacin desde la hoja de clculo activa hacia otra hoja.
Digamos que usted tiene cuatro hojas de clculo adicionales en las cuales quiere guardar la informacin por trimestres, en hojas separadas, que se llaman Trim1, Trim2, Trim3, Trim4. Si se quiere revisar cada registro de la hoja activa y copiarlo hacia la hoja del trimestre correspondiente. Para referirse a la celda J2 en una hoja llamada hoja3, puede utilizar: Worksheets(hoja3).Cells(2, 10) Si el nombre de su hoja, est guardada en una variable llamada ThisTrim, puede utilizar algo as como esto: Worksheets(ThisTrim).Cells(2, 10) Ok. La siguiente macro revisar cada registro de la cuarta columna y chequear a que trimestre corresponde. Le asigna el periodo a una variable llamada ThisTrim. La macro buscar en la siguiente fila en la hoja del trimestre apropiada y copiar el registro en esa hoja.
335
Sub CopiandoHaciaOtrasHojas() FinalRow = Cells(Application.Rows.Count, 1).End(xlUp).Row For ThisRow = 2 To FinalRow Step 1 ThisTrim = Cells(ThisRow, 4) NextRow = Worksheets(ThisTrim).Cells(65536, 1).End(xlUp).Row + 1 Cells(ThisRow, 1).Resize(1, 6).Copy Destination:=Worksheets(ThisTrim).Cells(NextRow, 1) Next ThisRow End Sub
Recorriendo todas las hojas de clculo Hay una clase especial de recorrido o Loop conocida como For Each Un libro por lo general tiene una coleccin de hojas. Una hoja contiene una coleccin de filas. Las filas pueden contener una coleccin de cuentas. Para recorrer todos los objetos de la coleccin, puede usar algo como esto: For Each VariableName in Collection Hacer algo Next VariableName Por ejemplo, si le queremos aplicar un formato a las filas de todas las hojas de clculo, rojo, blanco, blanco, del libro podra usarse un cdigo como este: Sub ColoreandoTodasLasHojas() For Each ws In ActiveWorkbook.Worksheets ws.Select FinalRow = Cells(65536, 1).End(xlUp).Row For ThisRow = 2 To FinalRow Step 3 Cells(ThisRow, 1).Resize(1, 6).Interior.ColorIndex = 3 Next ThisRow Next ws End Sub
336
Usando el grabador de macros para aprender otro cdigo Hemos visto como colorear las filas de verde o de rojo.Pero y si se quisiera pintar las celdas de azul, ponerle negrilla, tipo de letra tahoma, de tamao 14? Yo no conozco el cdigo para hacer eso. Usted tampoco. La mayora de los programadores tampoco lo conoce! Pero como se hace? Prenda el grabador de macros, en Excel, dele el formato deseado a una celda. Detenga la grabacin de la macro, y examine el cdigo Haga lo siguiente: 1. Ya sabe que si se encuentra en Excel 2003 va por el men Herramientas Macro grabar nueva macro. Si es 2007, Ficha Programador Cdigo Grabar Macro. 2. La ventana de dilogo de la macro le pedir un nombre, una combinacin de letras y descripcin. Para lo que buscamos, no hace falta, porque no estamos armando una macro como tal, solo queremos que el grabador de macros escriba el cdigo que no conocemos y que necesitamos ver. 3. Use los comandos de formato para cambiar la celda corriente en negrilla, azul, tahoma, 14. 4. Detenga el grabador de macros. En Excel 97-2003: Presione el botn Stop en la mini barra flotante. En Excel 2007: Haga clic en la barra de estatus o detngala con el botn Stop Recording en la ficha Programador. 5. Llame el editor de Visual Basic con Alt + F11 6. Excel siempre coloca el cdigo en un modulo nuevo. En el panel de proyectos, ver un nuevo modulo, de doble clic all para abrir el panel de cdigo. All ver que un cdigo de la macro similar a esto:
337
Ahora que conoce el cdigo de la macro grabada, puede cortar y pegar esta seccin e incorporarla en la macro que est armando.
Algo que debe tener en cuenta es que el grabador de macros siempre trabaja haciendo una seleccin fija de cada celda. En la vida real las macros corren mucho ms rpido si no las obliga a seleccionar cada fila. Cambie la Seleccin de la sintaxis del comando CELLS, como se muestra a continuacin:
338
Sub PintandoAzulNegrillaTahoma() For ThisRow = 2 To 16171 Step 1 If Cells(ThisRow, 4) = "Trim1" Then Cells(ThisRow, 1).Resize(1, 6).Font.Bold = True With Cells(ThisRow, 1).Resize(1, 6).Font .Name = "Tahoma" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -65536 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With End If Next ThisRow End Sub
Lo que hay que tener en cuenta del grabador de macros El grabador de macros es muy til para ver como es que se escribe el cdigo que necesitamos. Sin embargo, la cosa tampoco es cuestin de prender el grabador de macros, hacer todo lo que se suele
339
hacer en la hoja de clculo, apagar el grabador, abrir un archivo en donde queremos repetir todo otra vez, ejecutar la macro grabada y esperar que todo salga bien. Como se le indicaba hace un momento, (en el apartado anterior), cuando usted selecciona, por ejemplo, la ultima celda en su hoja de calculo, el Visual Basic graba que seleccion esa celda de manera fija, (por ejemplo la ultima celda de la columna A en un archivo puede ser la A22356, y en otro archivo puede estar mas abajo, en la celda A34750) y usted probablemente necesite es que se vaya hasta la ultima celda, PERO de la hoja actual, de la hoja en la cual est corriendo la macro, no del archivo sobre el cual grab la macro. Ir hasta la ltima celda con informacin: Lo que tiene que tener presente es, que siempre que necesite ubicarse en la ltima celda de su hoja, utilice el cdigo que se le ense en el apartado anterior For Next: UltimaFila = Cells(Application.Rows.Count, 1).End(xlUp).Row En este caso, de una vez, se le dice a Excel que tenga en cuenta, que la ultima fila es la que va a encontrar si se va hasta la ultima fila de la primera columna, esto es, la 65536 si est en Excel 2003 o la 1048576 si est en 2007 y suba, hasta que se estrelle con la ultima celda que contenga datos. As, cada vez que necesite que la macro vaya a la ltima fila, pues refirase a la variable UltimaFila. Para entender esto mas fcilmente suponga que si se grabara, con el grabador de macros, la operacin de ir hasta la ultima celda de la columna A, de Excel, (esta operacin la haramos con la ficha Inicio el botn de buscar y seleccionar, Ir A, se le escribe A1048576 y luego con la tecla Fin + flecha arriba), subir hasta la ultima celda con datos, quedara grabado esto:
O podramos seleccionar la ltima celda directamente y luego subir, quedara grabado esto:
340
Cualquiera de las dos formas, da lo mismo. Ahora, el grabador de macros tiende a ser muy redundante, y si le quitamos tanta redundancia, podemos hacer que la macro, al ser mas corta, pues se tarde menos. (Aunque a veces no se nota) Una regla que se deduce es que no hay necesidad de obligar a Excel de que vaya hasta las celdas seleccionndolas, por ejemplo, para ir hasta la ultima celda de nuestra hoja de calculo, NO LA ULTIMA CELDA DE EXCEL, pues no hay necesidad de seleccionar la ultima celda de Excel y hacerlo subir. Lo que grab el grabador de macros, se puede editar, es decir, corregirle la escritura (el cdigo) y dejarlo as:
Si se fija, podr darse cuenta que estas dos sentencias o palabritas, Select y Selection, las seleccion y luego las elimin:
341
Y si se fija, ver que all hay una redundancia y no hay necesidad de que Excel vaya hasta la ltima celda del Excel, para ir hasta la ltima celda de informacin. Ok. Debe saber que mejorando el cdigo ni siquiera hace falta que Excel seleccione la ltima fila de su reporte, como se indicaba anteriormente, esta instruccin no obliga a Excel a ir hasta la ltima celda, simplemente solo se necesita referenciarla: UltimaFila = Cells(Application.Rows.Count, 1).End(xlUp).Row Puede ver que este ejemplo por ninguna parte aparece el Select. Esto se traduce en mucha velocidad de ejecucin. La instruccin Application.Rows.Count sirve independientemente de que tipo de Excel, 2003 o 2007 est usando. Desplazarnos a partir de una celda sin necesidad de seleccionarla: Como le mencionaba hace un momento, cuando grabamos con el grabador de macros, pues est el problema que cada vez que seleccionamos una celda en Excel, pues en el cdigo queda seleccionada esa celda de manera fija, y eso es un problema, pues en ocasiones necesitamos ubicarnos en cierta posicin y a partir de all movernos hacia arriba, hacia abajo, hacia alguno de los lados de esa celda, pero al quedar seleccionado, pues no nos queda bien, por la razn de que la ubicacin en otro archivo similar, quedar en otra posicin y, si la macro graba que la posicin es una posicin fija, pues grave, pues correr mal. Por ejemplo, ya sabemos como ir hasta la ultima celda con datos de nuestro archivo, haciendo que Excel tome por referencia la ltima celda de la hoja de clculo, pero, Y si queremos que una vez posicionados en esa ultima celda, desplazarnos hacia la derecha, izquierda, arriba, o abajo? Por ejemplo, si queremos ir hasta la ultima celda SIN informacin de nuestro archivo, necesitamos bajar a la fila que est abajo, pues la ultima celda tiene informacin, y no queremos hacerle nada, solo hacer otra cosa pero en la celda de abajo que sabemos que est limpia, sin datos, lo haramos con esta instruccin: ActiveCell.offset(1,0).Select (Que significara literalmente algo as como CeldaActiva.Desvese(1,0).Seleccione) Y pegando esta instruccin al cdigo de seleccionar la ltima celda con informacin pero bajar a la siguiente fila que sabemos que est en blanco, quedara as:
342
Ahora, nuevamente se puede pegarle una depuradita al cdigo, pues nuevamente, tampoco hay necesidad de hacer que Excel seleccione la ultima fila, y luego que seleccione -otra vez- la que est una fila abajo. Podemos direccionarlo de una sola vez, hasta la celda destino que queremos, y el cdigo depurado quedara as:
Como se puede depurar o mejorar el cdigo escrito? Con la prctica. Probando, ensayando, observando, compenetrndose ms con el cdigo Visual Basic. Leyendo ms libros avanzados sobre el tema. Pero que esto no constituya un desaliento, por el contrario una motivacin ms: Debe saber que igual, Excel es muy rpido, y lo importante es que su macro funcione. Poco a poco, con el tiempo, ir mejorando sus macros. Por ejemplo, recuerde el problema que se le puede presentar si en una macro monta un buscarV, y la base de datos es demasiado grande, use ndice con Coincidir, como explico en el anexo correspondiente de La falencia del BuscarV. Una situacin que le representar a Usted una mejora en la escritura de sus macros, ser cuando advierta que no hay necesidad de hacer que Excel seleccione las celdas. Por ejemplo, imagnese que yo le digo a usted que vaya al sur de la ciudad y para eso lo hago ir al polo sur del planeta, y luego que suba hasta que se encuentre con su ciudad. Si le digo que es subiendo por el sur hasta su ciudad, usted ya no tendr necesidad de ir, solo VER desde la distancia, para llegar al sur. As, se ahorra TODA ESA VUELTA.
343
Eso mismo es lo que se debe propender por hacer al escribir las macros, para que le queden mas legibles, dinmicas, y rpidas. La seleccin se debe procurar hacer solo cuando realmente se necesite y a veces ni eso es necesario, o solo en el punto de llegada, o cuando necesite almacenar una variable. Una razn de peso para evitar escribir macros as, es que cuando otras personas ven el cdigo de las macros, al ejecutarlas paso a paso entienden que hacen, pues la celda en la hoja de calculo se va moviendo paso a paso, va delatando que hace su macro. Caso contrario ocurre si logra escribir su cdigo sin seleccionar las celdas, as, cuando chismoseen el cdigo de sus macros. Tendrn algunos problemas para entender como corre y que hace la macro que Usted escribi. Por ejemplo Volvamos a la primera macro que vimos cuando explicamos el truco de Rellenar Celdas en blanco: El cdigo era as: Sub Copiar() Do Until ActiveCell = "Fin" If ActiveCell = "" Then Selection.FillDown End If ActiveCell.Offset(1, 0).Select Loop End Sub Por ejemplo, si en lugar de hacer el Do Until quisiramos escribirla al estilo de For Next, que vimos al inicio de las macros, la principal mejora es que Excel no necesita seleccionar paso a paso la celda e irse desplazando. El cdigo, cuando se tiene clara cual es la columna que se debe copiar, quedara as: Al ejecutarla paso a paso, solo ver como se mueven las celdas, pero por ninguna parte ver que se seleccionan. Sub Copiar2() Finish = Cells(Application.Rows.Count, 1).End(xlUp).Row For ThisRow = 2 To Finish Step 1 If Cells(ThisRow, 1) = "" Then Cells(ThisRow, 1).FillDown End If Next ThisRow End Sub
344
Algo ms sobre la instruccin ActiveCell.Offset Tenga en cuenta que cuando se hace un desvo se hace desde la celda activa, la celda activa no es ms que la celda por donde se est moviendo o se va ubicando la celda a medida que se desarrollan los pasos. Como puede ver en el ejemplo, moverse una celda abajo desde la celda activa se hace con esta instruccin: ActiveCell.offset(1,0).Select Dos celdas abajo, en lugar del UNO, le pones un DOS: ( y as sucesivamente, tres, cuatro, veinte, las que necesites) ActiveCell.offset(2,0).Select Una columna a la derecha pero sin bajar de fila: ActiveCell.offset(0,1).Select Dos celdas a la derecha, en lugar del UNO, le pones un DOS: ( y as sucesivamente, tres, cuatro, veinte, cincuenta, las que necesites) ActiveCell.offset(0,2).Select Conociendo ya el truquito, ya puede moverse por donde quiera, una celda abajo y una a la derecha: ActiveCell.offset(1,1).Select Para ir a, una celda arriba, y una a la izquierda, desde la celda activa, le metes un MENOS UNO (-1): ActiveCell.offset(-1,-1).Select
Ojo, si estas en la columna A, te saldr un error, pues Excel no podr moverse otra columna a la izquierda, PUES NO HAY a donde mas moverse. Lo mismo aplica para la ltima fila, la primera fila o ultima columna.
345
Una ancdota personal: Cuando conoc estas dos instrucciones, posicionarme en la ltima celda, y moverme sin necesidad de seleccionar las celdas, ME LIBER DE LAS LIMITACIONES DEL GRABADOR DE MACROS y pude ir un poco mas all haciendo que mis macros trabajaran hasta el final deseado, pues todas las dems transformaciones de mis archivos, cuadros o reportes, lo poda hacer con el grabador. Formulas, copiar, pegar, borrar, eliminar columnas, filas, poner formatos, ya todo lo dems lo haca el grabador de macros. Solo tenia que entrar y ejecutar la macro paso a paso, y revisar, Con lupa si en un nuevo archivo mi macro trabajaba bien.
Ejecutar una macro paso a paso Resulta que lo que yo hacia, porque no sabia, (pues la mayora de los que nos metemos en este cuento no tenemos formacin de Ingenieros de Sistemas, por lo cual la cosa se dificulta un poco), era correr la macro y cuando surga un error, la macro se detena y Excel me sacaba un mensaje de error y una de las opciones del mensaje era Depurar. Entonces, yo le daba clic all y Excel abra el Visual Basic en donde haba grabado la macro y me llevaba al punto en el cual la macro se toteaba. (Es decir, el punto en el cual la macro no quera seguir ejecutndose). Entraba y revisaba que era lo que pasaba, de manera muy intuitiva, hacia mi mejor esfuerzo, trataba de analizar porque no quera seguir corriendo, y por lo general eran instrucciones que Excel era incapaz de realizar, por ejemplo, le deca que se desviara dos columnas a la izquierda, y resulta que era imposible pues solo se poda desplazar solo una columna, y cosas as por el estilo errores pueriles de este tipo, que no me da pena contar, pues en este mundo nadie nace aprendido, pero la voluntad de querer es la voluntad del poder, que genera la observacin, la aprehensin y con ello la construccin del nuevo conocimiento. Luego observando el men del visual basic, vi que al lado de estas opciones que eran las nicas que yo manejaba, estas:
346
Y, OH SORPRESA! haba algo que deca Paso a paso por instrucciones --- F8 y Ejecutar hasta el cursor Ctrl+F8 Resulta que, si Usted DIVIDE la pantalla de su computador en DOS, en uno de los lados coloca Excel, abre el Visual Basic, y lo acomoda en el otro lado, (o se va por esta opcin:
Y escoge Mosaico horizontal o vertical, la pantalla se le divide en las ventanas que tenga activas) Podr visualizar Excel y el Visual basic al mismo tiempo, y si una de sus macros en lugar de ejecutarla, va oprimiendo la tecla F8 de su computador, ver como se van ejecutando las instrucciones, tal como se indica all, paso a paso, instruccin por instruccin y por ende, las podr analizar, estudiar y mejorar.
347
Ejemplo, aqu puede ver como al dar F8 en la macro1, puedo ver como en Excel el cursor baj hasta la ltima celda y se resalta en amarillo la siguiente instruccin que se ejecutar. De esta manera, se puede ir analizando si lo que programamos en Excel funciona correctamente, o podemos depurar o mejorar el programa o instrucciones de nuestra macro.
Las variables. Ok. Con las anteriores cositas, tales como hacer que Excel ubique la ltima celda y desplazarme sin necesidad de seleccionar las celdas pude hacer macros por lo menos funcionales, pero hubo un momento en que tuve necesidad de grabar una formula, y esta tomaba un rango que dependiendo del nuevo archivo en el que trabajara, poda variar de tamao, ser de 10, 15 50, 200 filas. Entonces me encontr con ese problemita no sabia como hacerlo. Entonces, investigando y asesorndome, preguntando a mis amigos ms sabiondos, supe que la solucin era usar una variable, que para que Usted me entienda, es ms o menos como decirle a Excel que ojo, tenga en cuenta la celda TAL, que mas adelante que arme una suma, tendr que ir desde tal celda, hasta la celda TAL. Hace un momento, vimos el ejemplo de como definir mediante variable la ltima celda de Excel, esta instruccin: UltimaFila = Cells(Application.Rows.Count, 1).End(xlUp).Row Tcnicamente hablando, las variables se usan en todos los lenguajes de programacin para almacenar datos en un espacio de la memoria temporal del sistema de la computadora. El dato que se almacena se usa mientras se ejecuta la macro.
348
Ejemplo: Supongamos que estamos en una hoja1 y en cierto lugar, queremos sumar el rango de la columna A, de la hoja2:
Pero resulta que la hoja2, en otro archivo que nos enven, puede contener ms o menos valores, ser ms o menos larga si grabramos con el grabador de macros, el cdigo nos quedara as:
349
Pero si corriramos la macro en un nuevo archivo en donde el rango no es de 15 filas sino de cincuenta. GRAVE, pues la macro qued con el rango Fijo de 15 filas R[15] (Row-fila 15, es decir, 15 filas). Lo que podemos hacer es definir en una variable la ltima celda de la hoja2. Para esto, me sirvo del grabador de macros para que haga por m, una parte del cdigo que necesito, y luego lo AFINO: Entonces: Prendo el grabador de macros, selecciono la hoja2, selecciono la celda A1, oprimo la celda FIN + flecha abajo. Excel selecciona la ltima celda. Detengo la macro. Esto es lo que queda grabado:
En este punto LE METO LA MANO (es decir, edito el cdigo por mi mismo) al cdigo, y le digo que ESA ULTIMA CELDA EN LA QUE ME DETUVE ME LA TENGA EN CUENTA COMO LA ULTIMA CELDA:
350
Recuerde que cuando le mete un apostrofo, puede hacer comentarios para que recuerde mejor que es lo que hace la siguiente instruccin. Cuando lo hace, Excel automticamente le da color verde. Ojo, Aprndase esa palabrita ActiveCell.Row (CeldaActiva.Fila) Listo, ahora la formula que escribi en la otra macro, la Sub Macro1(), la puede escribir dicindole, NO que se vaya hasta la fila 15, SINO que se vaya hasta la ultima fila activa, que hemos llamado ULTIMACELDA: Prendo nuevamente el grabador de macros, me posiciono en donde quiero que quede mi formula, y escribo la formula con el grabador de macros, (luego la arreglo), as:
Entonces, en lugar de R[15] le ponemos esto: " & ULTIMACELDA & " (Recuerde que ULTIMACELDA es la variable que esta almacenada como la ultima celda activa de la fila)
351
Listo, esta macro5, la uno con la macro2 que acab de hacer, selecciono lo de la mitad que dice End Sub JUNTO con lo que dice Sub Macro5() y borro ese pedazo:
Me queda as:
Entonces la comienzo a probar. Con la depuracin paso a paso, partiendo la pantalla de tal forma que pueda ver mi macro paso a paso y al lado lo que pasa en mi hoja de Excel. En la hoja1 en Excel, borro la formula y comienzo a correrla paso a paso oprimiendo F8, para ver si todo va bien. Al llegar al paso ULTIMACELDA = ActiveCell.Row,
352
Me doy cuenta que Excel se dispone a MONTAR LA FORMULA en la misma HOJA2, Y ESO NO PUEDE SER!! TIENE QUE SER EN LA HOJA1, ASI QUE COPIO COMO SE SELECCIONA LA HOJA2, (lo que dice Sheets(Hoja2).Select) Y PEGO EL RENGLON, PERO DICIENDOLE QUE SELECCIONE LA HOJA1, ASI:
Echo la macro a ANDAR, y veo que corre perfecto. LOGICAMENTE EL CODIGO SE PUEDE DEPURAR, aunque notar que sin depurarlo igualmente Excel es SUPERRAPIDO. Una depurada puede dejarlo as:
Todava se puede depurar un poco mas, recuerde como definimos la ultima celda en apartados anteriores, con lo cual esos tres primeros renglones nos quedaran convertidos en solo uno. Si quiere que la variable ULTIMACELDA Excel la tenga presente en TODA la macro, pues puede que la necesite usar despus en otros pasos, deber declararla al principio de la macro, pero si quiere que funcione solo en ESE PEDACITO o rango, no hay necesidad de declararla.
353
Declarar con DIM es decirle a Excel que reserve un espacio de memoria para almacenar el dato. En este caso, estamos armando una cadena de caracteres que se referir a la ultima celda de la hoja2, que vendr a ser lo que anteriormente era la instruccin fija R[15], Que reemplazamos por " & ULTIMACELDA & " Si se fija ver que con el operador AMPERSAND (&) entre comillas, que por lo general est encima de la tecla numero 6 del teclado numrico en lnea, concatenamos una cadena de caracteres, que nos armar el rango con la ultima fila de un rango mas grande, de mas o menos filas. Aqu le estoy resaltando y aumentando el tamao al pedazo de la frmula en donde monto la cadena con la variable: Sub Macro2() Dim ULTIMACELDA As String Sheets("Hoja2").Select Range("A1").End(xlDown).Select 'Esta celda la defino como variable: ULTIMACELDA = ActiveCell.Row 'Ojo, hay que regresar a la hoja1! Sheets("Hoja1").Select Range("A1") = "=SUM(Hoja2!RC:R" & End Sub
Entonces, ya sabe, que CUALQUIER FORMULA que grabe con el grabador de macros, la edita y la organiza con este mismo procedimiento de variable, para que la pueda ejecutar sin problemas en otros archivos que sean diferentes en extensin, pero parecidos en estructura. En este caso se defini el final del rango, pero tambin se puede definir el inicio del rango con variable, para el caso en que el rango no empiece en la primera fila. Tambin se puede meter dentro de un Loop o un recorrido, pero primero quiero mostrarle otro procedimiento muy til de recorrido: Veamos al principio del tema de las macros que por lo general, una macro sigue la siguiente estructura: Comienza en el primer rengln de informacin de la hoja de clculo. Examina un valor en una de las columnas.
354
Basado en este valor, decide hacer algo. Se mueve al siguiente rengln en el rango de datos y repite. Y vimos el procedimiento For Next. Ahora vamos a ver o retomar otro que vimos mas arriba y que tambin es muy bueno y muy parecido, el procedimiento DO UNTIL, que significa, Ejecute hasta que El procedimiento DO UNTIL Ok. Recuerde que Do, en el ingls del colegio es el verbo hacer. Y Until, significa Hasta-que. Recuerda que cuando le expliqu como solucionar el tema de Rellenar las celdas que estn en blanco, le mostr como hacerlo con una macro? Esa macro utiliza el procedimiento Do Until, y en esa seccin, expliqu lo necesario para que entendiera esa estructura de recorrido. Ahora que ya conoce la estructura FOR NEXT, comprender que esta opcin tambin es buena, tambin puede ver que Do Until puede incluir la estructura IF-THEN-ELSE (Si tal cosa, entonces, sino...) igual a como lo hicimos en la macro copiar: Sub Copiar() Do Until ActiveCell = "Fin" If ActiveCell = "" Then Selection.FillDown End If ActiveCell.Offset(1, 0).Select Loop End Sub Aqu, debajo del DO Until est la instruccin que dice que SI la celda est vaca, ENTONCES rellene. El SIN, (ELSE) no hay necesidad, pero siendo Ortodoxos, debera haberse puesto as: Sub Copiar() Do Until ActiveCell = "fin" If ActiveCell = "" Then Selection.FillDown Else ActiveCell.Offset(1, 0).Select End If Loop End Sub Le cuento que, cuando conoc esta macro, me d cuenta que en lugar de la accin Selection.FillDown Poda hacer OTRAS COSAS QUE NECESITARA, pues no todo es rellenar, poda insertar filas, o cortar una celda y moverla para otro lado, o copiarla y pegarla en otro lado, meterle formato y regresar a la columna en donde estaban los datos que quera trabajar, ya sea vuelvo y repito, rellenar, copiar, cortar, y finalmente poda regresar al punto en donde deba continuar evaluando la celda activa con la instruccin ActiveCell.Offset Entonces, ya depende de Usted que comience a crear sus macros, el cdigo que le haga falta y que no conozca, ya sabe que puede usar el grabador de macros, usar el procedimiento Cells en lugar del
355
Select, y luego, intente escribirlas sin necesidad de seleccionar las celdas, as como esta macro copiar la escribimos en estilo For Next. Tambin puede comenzar a profundizar en este maravilloso mundo de las macros y conseguir libros mas avanzados, o buscar en Internet.
Haciendo Un DO UNTIL combinado con variables temporales que nos montan una formula tal como =SUMA() Ok. A Este punto quera llegar, pues alguna vez me ocurri, que tuve necesidad de crear un reporte el cual hice con una tabla dinmica, pero la presentacin de la tabla dinmica, es una presentacin que aunque sea muy bonita, no nos gusta a quienes estamos en el rollo contable, pues la fuerza de la costumbre ha creado ciertas normas de presentacin de informes, tales como el subrayado, la negrilla, la fuente, la sangra, etc. Adems nos gusta siempre poder constatar viendo la sumatoria, la funcin suma de los diferentes rangos, y la tabla dinmica no los pone. Pero si nos podemos valer de ella para armar el reporte. Supongamos que tenemos una base de datos que ya tenemos organizada en Excel. Recuerde que este ejemplo puede ser otra cosa, como una base de datos de un balance de comprobacin por terceros, o un Kardex, etc. La idea es mostrarle UNA de tantas maneras para crear el reporte. Observe la siguiente informacin:
356
Prendo el grabador de macros y lo primero que hago es definir que la ultima celda es la variable ULTIMAFILA. Este cdigo es el mismo para todos. Podemos ir desde la ultima fila de Excel hacia arriba, o desde la primera celda hacia abajo. Detengo la grabacin de la macro, abro Visual Basic y reviso el cdigo:
Esto ya lo sabe hacer, pero para efectos de repaso lo volvemos a ensear, para que le quede claro el asunto. Edito la macro y le defino que la ultima celda es la variable UltimaCelda:
Listo, vuelvo y prendo el grabador de macros y hago otra macro, esta vez, voy a crear una tabla dinmica sobre la hoja ejemplo que le he mostrado:
357
Elimino la hoja y pruebo la macro. En teora solo es correrla y ya, pero si me est siguiendo, En vivo, podr comprobar que Excel 2007 saca un error.
358
Me parece Fabuloso que halla ocurrido este error, para de una vez explicarle que las tablas dinmicas en Excel2007 que se graban con el grabador de macros, deberan correr sin problema como lo hacan en el Excel 2003, pero no, aqu fallan, y este problema me pas una vez y lo tuve que solucionar estudiando el asunto de las tablas dinmicas en Macro. Este punto es de alta prioridad, pues la tabla dinmica es un poderoso reporteador que prcticamente nos arma el informe como lo queramos, as que es MORTAL que no nos corra la macro de una tabla dinmica.
359
EL grabador de macros usa el procedimiento Add de la coleccin PivotCaches para crear una hoja nueva que pasa a ser la hoja activa. Fjese que toma el rango del cuadro de nuestro ejemplo, "Hoja1!R1C1:R20C4", quiere decir, Hoja1,Fila1Columna1 hasta la Fila20Columna4 Siguiendo, podemos ver que lo que sigue es que se usa el mtodo .CreatePivotTable para crear la tabla dinmica, y la tabla destino es la "Hoja6!R3C1" Pareciera que el problema est aqu, pues el grabador de macros defini que la hoja destino siempre ser la hoja6, pero si se borra la hoja de la tabla dinmica, o volvemos a correr la macro, no ser la hoja6, ni la hoja1 o 2, Excel crear la siguiente hoja, si yo volviera a correr la macro, Excel adicionara la Hoja7, y por eso es que se totea la macro.
[Nota: una solucin es, en lugar de crear la tabla en una hoja diferente pues hacerla en una columna a la derecha de la base de datos dentro de la misma hoja, ah si, correra sin problema]
La tabla dinmica arranca en esta hoja6 en la celda de la tercera fila y la primera columna, dejando renglones para ubicar los campos de columna de la tabla dinmica. Los campos Cuenta, Nombre de la cuenta, Vendedor, se definen como campos de fila. Finalmente el campo Valor queda definido como campo de informacin (AddDataField), lo cual significa que aparecer en el cuerpo de la tabla donde ser sumado. Como se puede ver, el cdigo es muy inflexible, adiciona una nueva hoja y asume que se llamar hoja1, u hoja6. Le asigna el nombre TablaDinamica2 o TablaDinamica1 y depende del nombre del cdigo siguiente. El cdigo se puede organizar as:
360
Sub CreaTablaDinamicaConTabla() Dim wks As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable Range("A1").End(xlDown).Select ultima = ActiveCell.Row ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:D" & ultima & ""), xlYes).Name = _ "Tabla1" 'Adiciona una Nueva hoja Set wks = Worksheets.Add 'Se crea el PivotCache Set pvc = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:="Tabla1") 'Se Crea la Tabla Dinmica Set pvt = pvc.CreatePivotTable(TableDestination:=wks.Range("A3"), _ DefaultVersion:=xlPivotTableVersion12) 'Se Definen los campos en la Tabla dinmica With pvt With .PivotFields("Cuenta") .Orientation = xlRowField .Position = 1 End With With .PivotFields("Nombre de la Cuenta") .Orientation = xlRowField .Position = 2 .Subtotals = Array(False, False, False, False, _ False, False) End With With .PivotFields("Vendedor") .Orientation = xlRowField .Position = 3 End With .RowAxisLayout xlTabularRow .AddDataField .PivotFields("Valor"), "Suma de Valor", xlSum End With End Sub
False,
False,
False, False,
False,
False,
Ok. Primero que todo, declaro las variables Worksheet, PivotCach y PivotTable
Dim wks As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable
El paso siguiente lo realic con el grabador de macros, mi tabla, la convierto en tabla de Excel, usando la opcin de la ficha Insertar, Tabla. Luego el rango lo edito y arreglo que se vaya a mi variable Ultima, como le ense a hacerlo en el apartado anterior:
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:D" & ultima & ""), xlYes).Name = _ "Tabla1"
361
Ahora mediante la instruccin SET, (esta palabra en ingls tiene muchos significados pero el mas idneo puede ser como Fijar o establecer que)
'Adiciona una Nueva hoja Set wks = Worksheets.Add 'Se crea el PivotCache Set pvc = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:="Tabla1") 'Se Crea la Tabla Dinmica Set pvt = pvc.CreatePivotTable(TableDestination:=wks.Range("A3"), _ DefaultVersion:=xlPivotTableVersion12)
Si se fija todos estos SET van estableciendo una igualdad, como indicando que wks, pvc y pvt, corresponden a las acciones y atributos definidos. Todo esto es similar en todas las tablas dinmicas, as que cuando monte la suya, puede guiarse por toda esta parte. Ahora vienen los campos de la tabla dinmica:
'Se Definen los campos en la Tabla dinmica With pvt With .PivotFields("Cuenta") .Orientation = xlRowField .Position = 1 End With With .PivotFields("Nombre de la Cuenta") .Orientation = xlRowField .Position = 2 .Subtotals = Array(False, False, False, False, _ False, False) End With With .PivotFields("Vendedor") .Orientation = xlRowField .Position = 3 End With .RowAxisLayout xlTabularRow .AddDataField .PivotFields("Valor"), "Suma de Valor", xlSum End With End Sub
False,
False,
False, False,
False,
False,
Si se fija, por cada uno de los campos que he llevado a la tabla dinmica se monta una instruccin With-End_With. En el campo tabla dinmica le he adicionado que NO ME HAGA SUBTOTAL POR ALL. (.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)) Despus del tercer campo, Vendedor, defino que el estilo de la tabla dinmica sea Tabular, que es el estilo de tabla dinmica de Excel 2003 al que estamos acostumbrados, que nos totalice por abajo, ya que las nuevas tablas dinmicas de Excel 2007 por defecto dejan el estilo ESQUEMA. Por Ultimo, el campo que tiene la suma de los totales, el campo valor, es esta lnea:
.AddDataField .PivotFields("Valor"), "Suma de Valor", xlSum
Ok. Esta es una manera de solucionar el asunto de la tabla dinmica, mucho mas flexible y al convertir la tabla de datos en Tabla de Excel, le facilita a Excel su aprehensin. Por supuesto que no es la nica, es posible que despus de leer esta manera se la halla ocurrido otra mejor, lo cual me parece fantstico, pues significar que ya se meti de lleno en el tema.
362
Hay otras maneras de montar la tabla dinmica, pero esta sirve para el propsito. Cuando monte SU TABLA DINAMICA, solo fjese como van los campos en fila y columna, y haga los ajustes necesarios. Si prueba la macro, elimina la tabla dinmica y vuelve y la corre, ver como funciona perfectamente. Acurdese de convertir la tabla fuente nuevamente en rango, y de transcribir CORRECTAMENTE el cdigo que le suministro.
Ok, habiendo construido la tabla dinmica mediante macro, podemos retomar el tema que venamos tratando: Convertir este informe en uno con ms presentacin. La idea es: Que el nombre de la cuenta, esas que me he inventado que se llaman Uno A, Dos B y Tres C, trasladarla a la columna C, en un nuevo rengln que hemos de Insertar y, Hacer que los totales nos queden con la formula Suma. Ponerles un formato a los nmeros
363
Haciendo que la macro que nos haga el recorrido con las variables de los rangos de inicio y final de cada bloque de valores de cada una de las cuentas. Ok. Lo otro es prender el grabador de macros y Desbaratar la tabla dinmica, haciendo un copiar y all mismo pegar solo valores:
Nota: Recuerde que puede mejorar el cdigo seleccionando solo el rango a copiar. Listo, despus de esto nos va quedando as:
Ok. Lo bueno de esta tabla dinmica es que siempre termina con la palabra Total general, as que la podemos usar para hacer un DO hasta que la celda sea igual a Total general. Bueno, ya hicimos una buena parte de la macro, que es crear la tabla dinmica, desbaratarla y luego prendo el grabador de macros otra vez y elimino la fila 3. Luego me ubico en la Celda C1. La cosa me queda as:
364
Despus puede depurar un poco el cdigo, no se preocupe por eso ahora. Ahora si, voy a meter una macro escrita, (guindome por la macro copiar) que, Haga o Ejecute Hasta que la celda de la columna A sea igual a Total general; que SI la celda est en blanco, que baje una celda, SINO, indico que ese campo es la variable inicio, con End + flechita hacia abajo voy al final del rango y declaro que ese campo es la variable final, luego me desvo una celda a la derecha y una celda abajo, y monto la funcin suma, con las dos variables, inicio y final. Y como decimos en Colombia, LISTO EL POLLO. Tonces, o Tonz, como escriben los muchachos ahora en los chats, la macro nos queda as:
Quiero decirle que esto cuando se le va cogiendo el tiro, a fuerza de tanto repetirlo uno hasta se lo va aprendiendo, pero a veces lo que uno no sabe, pues se ayuda con el grabador de macros. Por ejemplo, en este caso no me acordaba como escribir el cdigo de la funcin suma, as que PRENDI el grabador de macros y grabe una macro solo con la suma, as:
Luego, lo que est entre los corchetes [] le meto cada una de las variables inicio y final:
365
Prueba la macro paso a paso a ver si funciona bien, y listo. Otra cosa que se debe propender por hacer, y esto es muy importante, es hacer un solo recorrido y en l ir haciendo todo de una vez. Por ejemplo, nosotros quisiramos FORMATEAR los nmeros de una vez.
Que hice: prend el grabador de macros, escog la ltima celda de la columnaB. Oprim FIN + flecha arriba y me estrelle con la ultima celda de mi hoja de clculo. Ahora Oprimo SHIFT + Fin + Flecha Arriba para seleccionar el rango. Una vez que me qued seleccionado hago clic en el botn izquierdo del ratn y en el men emergente le doy la opcin seleccionar formato de celdas, y le cuadro el formato que quiero. Detengo la macro y lo que me qued fue esto que le enseo aqu. Este cdigo se puede depurar, las primeras dos lneas las podemos dejar en una sola:
(Incluso el primer Range(D1048576).end(xlUp) se podra meter en lugar del Selection del segundo Range, pero puede ser mejor hacer que Excel se detenga en el primer punto del rango.) Listo, despus de esto, ya tenemos las macros que nos hacen las sumas correctas y los formatos. Pero, en el recorrido en el cual hacemos la sumatoria, podemos meterle un formato a la celda de la suma con una raya arriba y una raya gruesa abajo. Entonces, Prenda nuevamente el grabador de macros, coja una celda en las cuales hay un total, mtale el formato, detenga la macro y copiemos ese cdigo y pegumoslo en la macro que hace las sumas. Este es el cdigo que nos hace la raya y la doble raya:
366
Como se puede dar cuenta, un par de infelices rayas generan todo este cdigo y casi todo dice NONE. Ninguno. Todos esos NONES, se los podemos quitar, y (por lo menos a m) me sigue funcionando: (pruebe si sigue funcionando al quitar los valores en Cero, aqu la lnea importante es la que define el peso o intensidad de la lnea)
Ok, este cdigo lo voy a cortar y pegar en el cdigo que hace la suma, debajo de la operacin de la suma:
367
Listo. Se coloca antes de que regrese a la columna en la cual realiza el recorrido. Ok, tambin necesitamos cortar el nombre de la cuenta (las que he llamado UnoA, DosB, TresC), insertar una fila y trasladar la celda cortada como ttulo, y ponerle negrita y subrayado. (O en lugar de cortarla, copiarla) Como est en el rengln o fila en el cual inicia la variable de la suma, podemos ah mismo hacer este pedazo.
Entonces, La misma cosa, me ubico en la celda en donde comienza la variable de la suma, que es la misma en la cual est el nombre de la cuenta, PRENDO el grabador de macros, y hago lo que necesito: Inserto una fila, corto lo el nombre de la cuenta, lo traslado a donde necesito, le coloco el formato negrita, subrayado y le subo al tamao. Apago el grabador y me queda esto:
368
Fjese que nos toca editar todas esa celdas que quedaron seleccionadas, las (Range("B4").Select) y (Range("C3").Select) Esto es lo que le comentaba que nos hace el grabador de macros y que hay que arreglar con la tcnica del ActiveCell.Offset. Creo que ahora me comprende bien la importancia, dado que la macro hace una seleccin fija y no se seguira moviendo. Ese par de celdas, se edita as:
Lo que acabo de editar, lo pruebo corrindolo paso a paso, pues esos OFFSET tienden a enredarlo a veces a uno, pero uno corrige al ejecutar paso a paso. Ok, si est bien, ahora a buscarle el punto apropiado en el cual insertar este cdigo dentro del que nos hace las sumas:
369
Sub prueba() Do Until ActiveCell.Offset(0, -2) = "Total general" If ActiveCell = "" Then ActiveCell.Offset(1, 0).Select Else Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove 'Range("B4").Select 'Me muevo una celda abajo y una a la izquierda ActiveCell.Offset(1, -1).Select Selection.Cut 'Range("C3").Select 'El corte lo subo una celda arriba y una celda a la derecha: ActiveCell.Offset(-1, 1).Select ActiveSheet.Paste Selection.Font.Bold = True Selection.Font.Underline = xlUnderlineStyleSingle Selection.Font.Size = 11 ActiveCell.Offset(1, 0).Select inicio = ActiveCell.Row Selection.End(xlDown).Select final = ActiveCell.Row ActiveCell.Offset(1, 1).Select ActiveCell.Formula = "=SUM(R" & inicio & "C:R" & final & "C)" With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With ActiveCell.Offset(0, -1).Select End If Loop End Sub OK. Fjese que la macro que nos hizo las sumas parciales, se ha enriquecido para que en el primer repaso se haga lo necesario, para no tener que volver a hacer el recorrido. Esta macro, la podemos unir debajo de las otras que ya hicimos: La que nos arm la tabla dinmica. La que nos arregl los valores
Todo Junto, nuevamente se prueba paso a paso para ver que nos queda faltando, o en donde falla. Solo falta eliminar las dos primeras columnas, y en la ltima columna colocar un gran total. Eliminar las columnas, ya sabe como hacerlo con el grabador de macros:
370
Listo, en la celda B27, podemos colocar un total que nos sume las sumas parciales. Es repetir, de otra forma, lo que le expliqu acerca de cmo montar una frmula con variables: En este caso necesitaramos tomar el punto donde comienza el rango, la celda B4, y la ultima, La B26. Este rango lo podemos usar en una funcin =Sumar.Si(). Si se fija, al lado de los totales, en la columna A, hay una celda en Blanco, entonces, podemos hacer que un Sumar.Si de todo lo que se halle en blanco en ese rango en la columna A.
371
Entonces, necesito encontrar los puntos que sern las variables de mi funcin. Prendo el grabador, al primer punto del rango llego escogiendo la columna B1 y oprimiendo Fin+Flecha abajo. El otro punto, lo encuentro subiendo desde la parte de abajo de la hoja de clculo y oprimiendo Fin+Flecha Arriba. Luego edito un poco lo que me grab la macro. Esto es lo que hizo el grabador de macros:
Editando los puntos indicando las variables primerpunto y segundopunto, y borrando el valor total que nos dej la tabla dinmica, queda as:
Ok, ahora nos falta colocar la funcin =Sumar.Si, justo al final del rango. Prendo el grabador de macros y realizo la operacin de subir por la parte inferior y escribir la funcin Sumar.Si, (De una vez se le coloca el formato deseado) (luego la arreglo metindole las variables) esto es lo que nos queda:
372
ActiveCell.FormulaR1C1 = _ "=SUMIF(R" & primerpunto & "C[-1]:R" & segundopunto & "C[1],"""",R" & primerpunto & "C:R" & segundopunto & "C)"
Ojo, "C[-1] VA PEGADO DEL &, lo que pasa es que el Word donde he hecho el manuscrito del libro me lo desplaza un rengln abajo, pero todo va JUNTO, como se ve en la imagen. Fjese que de una vez le met el formato, y le puse negrita. Ahora hay que unir esta macro con la que define las variables, as:
Como siempre, les puse el apostrofo para que queden como comentario y as saber en donde comenzaba las macros, recuerde que cuando se le coloca un apostrofo, la lnea de cdigo queda sin efecto, y nos ayuda para que mientras entendemos el tema, cuando volvamos a ver esta macro sepamos que hace cada bloque de cdigo. Cualquier funcin, anidada, matricial, la puede hacer con el grabador de macros y luego le acomoda los puntos de los rangos con las variables, as, si el archivo es mas o menos largo, la funcin NO LE FALLAR. Si lo desea, puede pasarse a la celda de al lado en la columna A, y colocar algo as como Gran Total Tambin puede insertar unas filas en la parte superior y colocar el titulo de su reporte. Esto ya lo puede hacer por su cuenta, recuerde desviarse con ActiveCell.Offset
373
En esta imagen puede ver como la funcin que nos mont la macro, est operando bien. Finalmente todo nos quedara as: (Para efectos didcticos, voy a ponerle un APOSTROFO en donde iban los Sub y End sub, para anularlos pero poder ver en donde comenzaban esas macros parciales): Recuerde que solo puede quedar un SUB al inicio y otro END SUB al final. Al cortar y pegar los bloques, revise que no le queden sobrando, o la macro no le correr completamente, o le sacar un mensaje de error: (Recuerde que si va a probar toda la macro, tiene que volver a convertir la TABLA fuente en RANGO)
Sub CreaTablaDinamicaConTabla() Dim wks As Worksheet Dim pvc As PivotCache Dim pvt As PivotTable Range("A1").End(xlDown).Select ultima = ActiveCell.Row ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1:D" & ultima & ""), xlYes).Name = _ "Tabla1" 'Adiciona una Nueva hoja Set wks = Worksheets.Add
374
'Se crea el PivotCache Set pvc = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:="Tabla1") 'Se Crea la Tabla Dinmica Set pvt = pvc.CreatePivotTable(TableDestination:=wks.Range("A3"), _ DefaultVersion:=xlPivotTableVersion12) 'Se Definen los campos en la Tabla dinmica With pvt With .PivotFields("Cuenta") .Orientation = xlRowField .Position = 1 End With With .PivotFields("Nombre de la Cuenta") .Orientation = xlRowField .Position = 2 .Subtotals = Array(False, False, False, False, _ False, False) End With With .PivotFields("Vendedor") .Orientation = xlRowField .Position = 3 End With .RowAxisLayout xlTabularRow .AddDataField .PivotFields("Valor"), "Suma de Valor", xlSum End With 'End Sub 'Sub Macro6() Columns("A:D").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select (esto ya es innecesario)
False,
False,
False, False,
False,
False,
'
'End Sub 'Sub Macro8() Rows("3:3").Select Selection.Delete Shift:=xlUp Range("C1").Select (ya no hace falta)
'
'End Sub 'Sub Macro12() Range("D1048576").Select Selection.End(xlUp).Select Range(Selection, Selection.End(xlUp)).Select Selection.NumberFormat = "#,##0_);(#,##0)" 'End Sub 'Sub prueba() 'Esta instruccin se tuvo que poner, pues el Do iba a comenzar en _ donde finaliz la anterior, y es un error que comience el Loop all. Range("C1").Select Do Until ActiveCell.Offset(0, -2) = "Total general" If ActiveCell = "" Then ActiveCell.Offset(1, 0).Select
375
Else Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove 'Range("B4").Select 'Me muevo una celda abajo y una a la izquierda ActiveCell.Offset(1, -1).Select Selection.Cut 'Range("C3").Select 'El corte lo subo una celda arriba y una celda a la derecha: ActiveCell.Offset(-1, 1).Select ActiveSheet.Paste Selection.Font.Bold = True Selection.Font.Underline = xlUnderlineStyleSingle Selection.Font.Size = 11 ActiveCell.Offset(1, 0).Select inicio = ActiveCell.Row Selection.End(xlDown).Select final = ActiveCell.Row ActiveCell.Offset(1, 1).Select ActiveCell.Formula = "=SUM(R" & inicio & "C:R" & final & "C)" With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With ActiveCell.Offset(0, -1).Select End If Loop 'Sub Macro18() Columns("A:B").Delete Shift:=xlToLeft 'End Sub 'Sub Macro19() Range("B1").Select Selection.End(xlDown).Select primerpunto = ActiveCell.Row Application.Goto Reference:="R1048576C2" Selection.End(xlUp).Select Selection.ClearContents ActiveCell.Offset(-1, 0).Select segundopunto = ActiveCell.Row 'End Sub 'Sub Macro21() Range("B1048576").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select 'Range("B27").Select 'ActiveCell.FormulaR1C1 = "=SUMIF(R[-23]C[-1]:R[-1]C[-1],"""",R[-23]C:R[-1]C)" ActiveCell.FormulaR1C1 = _ "=SUMIF(R" & primerpunto & "C[-1]:R" & segundopunto & "C[-1],"""",R" & primerpunto & "C:R" & segundopunto & "C)" Selection.Font.Bold = True Selection.NumberFormat = "#,##0.00_);[Red](#,##0.00)" End Sub
376
Ok. Creo que qued suficientemente claro, como conociendo estos trucos: Saber ir hasta el final de la informacin de Excel Almacenar los puntos como variables Hacer los recorridos Con For Next o Do Until Usar el grabador de macros
Ya es mucho lo que puede hacer por su cuenta. Si se fija, cualquier reporte que le haga falta, puede programarlo POR USTED MISMO, un reporte de produccin, un reporte gerencial, notas a los Estados financieros, Los mismos Estados Financieros, Cedulas Sumarias, hacer cruces de informacin, etc. Las bases ya las tiene aqu. Solo me resta mostrarle algunas tcnicas para convertir los archivos planos en Bases de Datos, que es una recopilacin de las tcnicas vistas en este libro. Punto importante pues un Auditor, un Contador o un Administrador, normalmente encuentra clientes o trabajo con diversos software, y no todos tienen soluciones que exporten la informacin limpia a Excel, y si las tuvieran, aun as necesitaran saber algo de macros para maximizar el rendimiento de esas aplicaciones. En este punto, si encuentra que le gusta el tema, puede continuar investigando por su cuenta, buscar en otros libros, o internet y poco a poco, volverse todo un GUR o una GUR del Excel.
377
Algunas tcnicas para depurar los archivos planos Ok. Algunos programas contables como el Cg1, uno de los mas populares en Colombia, estn hechos en Cobol, y para suplir la necesidad de la exportacin a Excel, se han creado por all algunas herramientas que se incorporan como complemento de Excel. Un ejemplo es el aplicativo llamado BIABLE. EL Biable no Exporta del sistema Cg1 a Excel, sino todo lo contrario, hace que Excel penetre en una base de datos que contiene la informacin contable y Excel toma los datos de all. Osea, que se debe de correr previamente un proceso desde del sistema CG1 que carga los datos del programa Cobol, del CG1 al Biable, que est hecho en Oracle. Si no se hace esta actualizacin o cargue de informacin, El complemento leer datos desactualizados, o en el peor de los casos, si est mal parametrizado el cargue de informacin, no los leer. El Biable es un buen soft, aunque tengo las siguientes observaciones: El complemento se instala por mquina, con lo cual, por lo general se instala en la computadora del Contador o Gerente o Financiero. Al estar centralizado en la computadora del Contador, es una excusa que usan las dems reas para delegarle algunas tareas extra al Contador, con lo cual, tras de que mantiene escaso de tiempo, pues debe sacar tiempo para atender los requerimientos de los dems. El costo no facilita que todos los usuarios (mas que todo las pequeas empresas) tengan el complemento BIABLE. Si tienes un pap con la posibilidad, pdele que le coloque Biable no solo a ti, sino al Gerente administrativo y a quien le haga falta. La operacin de cargue de datos, directamente de la base a Excel, hace que se consuman recursos de memoria y procesador por lo cual, si no se tiene una buena computadora, el Excel se puede quedar un tiempo no pequeo, calculando y cargando la informacin. Si tienes otros programas abiertos, el cargue de informacin ser mas lento an. Sabemos que un Contador no se puede dar el lujo de tener que soportar procesos lentos. Es para volverse loco en pleno cierre contable.
De todas formas, si el Contador no maneja buen Excel, no explotar las bondades del BIABLE. Por otra parte el Auditor no tiene acceso (tampoco debe de contar con que se la van a dar) a tener la informacin directamente del BIABLE. El Biable trabaja con Funciones propias, que para que operen, debe de estar habilitada la conexin a la base de datos, y si te llevas una hoja de clculo en una memoria USB, en cuanto abras tu hoja de clculo, vers una gran cantidad de errores de Excel de tipo #NOMBRE?, que es el tipo de error que muestra Excel cuando no reconoce el texto de la frmula:
Y es lgico, pues son funciones propias del programa que se ejecutan en donde est el programa instalado. La solucin es pedir que le hagan una copia de la hoja de clculo pero con solo valores. De todas formas, el auditor debe de estar SEGURO de que las cifras que le estn mostrando son ciertas o n. Es por esto que lo mejor, en mi opinin es pedir los listados impresos, por lo menos la primera y la ltima hoja si son muy voluminosos, y pedir ese mismo listado como archivo plano, para que lo pueda trabajar posteriormente en Excel. Asi que es posible, mediante los archivos planos, transformar la informacin del archivo en una base de datos, mediante algunas tcnicas de Excel, muchas de las cuales ya hemos visto en este libro. Ahora las veremos en un ejemplo como todas las tcnicas trabajan
378
para este fin: depurar la informacin de los archivos planos y ya con ellos organizados, comenzar a verificar cositas de inters. El Biable no puede ser una objecin para no aprender buen Excel. Finalmente tendr que hacerlo algn da.
Depurando un balance de comprobacin por terceros. Bueno, este libro le sugiere una manera de trabajar la informacin. No es algo de lo cual se deba pegar al pi de la letra de manera ortodoxa, en Excel cada uno puede matar sus pulgas de la mejor manera que estime conveniente. Una vez que se muestra una manera, es posible que se ilumine nuestro maravilloso pensamiento y se encuentre una manera alternativa, la mayora de las veces mejor, de hacer las cosas. Incluso a mi mismo me sucede cada cierto periodo de tiempo, en ocasiones me doy cuenta que he podido hacer tal o cual tarea de una manera mas eficiente. (A veces me doy cuenta que la puedo hacer de otra manera y me cuesta un poco romper el hbito de trabajarla a la vieja usanza. Esto es porque el cerebro es el rgano que ms energa consume, as que siempre opta por la opcin ms barata: la rutina que ya ha mecanizado). Pero es debido al conocimiento de nuevas tcnicas, y las mismas son incorporadas a los viejos procedimientos, hacindolos mucho mas rpidos. Es la misma evolucin del KnowHow en accin. En la apertura de los archivos planos, lo que he recomendado es que, en cuanto se abra el archivo plano con Excel, veremos que Excel abre el asistente de importacin, y lo que indico es que se incorpore todo en una sola columna. Esto, en mi opinin, facilitar limpiarle toda la basura que no es informacin transaccional de manera muy rpida. Este tipo de reporte, por lo general tiene por nombre en el sistema CG1 version 5, CG03013.P01. Pues bien, solicite un listado Balance de comprobacin por terceros con totales por abajo. El listado con totales por arriba le presenta el inconveniente de que le duplica alguna informacin, y esto es as, porque como lo que usted tiene es un LISTADO que estaba destinado a IMPRIMIRSE, pues en las impresoras de punto, las clases, grupos y subgrupos se muestran en negrilla, y lo que hace el sistema es hacer que la impresora REPITA la impresin, colocando los registros DOS VECES. Por esto es que es mejor pedir este listado con totales por abajo, as no tendremos que eliminar los datos repetidos en el procedimiento, ahorrndonos un pasito. Cuando el listado CG03013 lo genere en el sistema CG1, y lo est viendo por pantalla, no lo imprima ni lo mande como hoja Excel. Envelo por la opcin DISCO. Y tome nota del nombre del archivo. Debe llamarse CG03013.P01 o P02, la extensin la puede definir el usuario, y por lo general se cambia la extensin P01 por P02, si otro usuario est mirando por pantalla el mismo reporte en otra computadora terminal. Estos listados por lo general quedan almacenados en una carpeta del programa, por lo general es la PRT (PRT es la abreviatura de Printer - Impresora). Si no lo ubica fcilmente, haga lo siguiente: Use el Buscar archivos o carpetas de Windows y ponga a que el sistema le ubique en donde est. Tenga en cuenta que si el programa est alojado en un servidor, es decir en otro computador y si solo busca en los discos duros de su computadora, no los encontrar. Si es as, busque en el Computador Host que comnmente llaman Servidor, en el cual se encuentra instalado el programa contable CG1. Una vez que Windows lo encuentre, verifique que sea, mirando por la opcin detalles de archivo, que el archivo sea el que se gener en la hora y fecha en que Usted lo pidi, es importante pues a veces hay ms de un archivo, y se puede confundir de archivo. (Ojo con eso), los detalles quedan asociados a todos los archivos, y al seleccionar la opcin Detalles, puede ver ese tipo de informacin, tambin llamada Meta Datos. Bien. Una vez haya encontrado el archivo, si es auditor, pida que se lo graben a una Memoria USB para que lo pueda trabajar posteriormente, si es el Contador, (y no tiene BIABLE), haga una copia y colquelo en sus documentos, o en donde considere apropiado. Seguidamente, vaya a Excel, Abra
379
Excel, y con el botn ABRIR, busque el archivo plano. Asegrese de que puede ver TODOS LOS ARCHIVOS. Por lo general Excel le muestra TODOS LOS ARCHIVOS DE EXCEL. Pero como est abriendo un archivo plano, deber cambiar la opcin (Ojo con eso):
380
Hago clic en Delimitados, y clic en Siguiente. Desactivo la casilla de verificacin del tipo de Separador:
Clic en siguiente.
381
382
Justifico la columna A:
Puede ver que el archivo plano qued Empaquetado en una sola columna. Esto me permitir: Usar la opcin de seleccionar las celdas en blanco para eliminarlas de una sola vez. Usar los filtros para depurar los encabezados del listado. Si el listado es demasiado grande, y Excel se niega a eliminar la seleccin del filtro, usar: La opcin de ordenar la informacin y all si, eliminarla rpidamente.
Despus de abrir el archivo, coloco un titulo cualquiera a la celda A1, pues voy a colocar (ojo todava no) un filtro. OJO: DADO que es posible que existan filas en BLANCO, si coloca el Filtro en este paso, el filtro NO TOMAR todo el compendio de informacin, no tomar todo el archivo plano, sino, solo un rango, por eso, debe hacer el siguiente paso: Siguiente Paso: tomar el rango COMPLETO del archivo plano. Como? Me paso a la celda B1. Oprimo la tecla del computador FIN una sola vez. Cuando se activa la celda FIN, en Excel 2007 ver que abajo a la izquierda dice Modo Final si est en Excel 2003, ver un FIN que se activa en la extrema derecha inferior: Excel 2007:
Excel 2003
OK. Recuerde que debe de oprimir FIN UNA SOLA VEZ. Si la oprime una segunda vez, YA NO VER Modo Final, ni FIN. Se desactivarn. Y necesitamos activar la opcin para IR en un solo instante al FINAL DE LA HOJA DE CALCULO. Una vez all, nos pasamos de nuevo a la columna A, oprimimos FIN
383
otra vez, y oprimimos la tecla Flecha Arriba. Con esto, estaremos en la parte final del archivo plano, y
ya podremos tener la seguridad de que lo vamos a Seleccionar Completamente.
Entonces: le ilustro todo lo anterior paso a paso: 1. Que pasa cuando me paso a la celda B1:
2. Que pasa cuando hago FIN y luego oprimo la flecha hacia ABAJO:
Excel se Estrella con la parte final del listado. 5. Ahora, desde aqu, TOMAREMOS TODO EL RANGO QUE CONFORMA EL ARCHIVO PLANO: Como? Oprimiendo SIMULTANEAMENTE desde este punto las teclas Control + Shift + Inicio Pasar que se seleccionar TODO el rango del archivo plano:
384
NOTA: Porque no simplemente selecciono la columna A y coloco el filtro? Todo esto que le he dicho se ahorra con solo seleccionar la columna A y hacer el filtro. PERO. Recuerde que Excel 2007 ya no maneja las viejas 65 mil celdas. Maneja UN MILLON CUARENTA Y OCHO MIL Y PUNTA de celdas, entonces, sern ms de UN MILLON CINCUENTA MIL CELDAS EN BLANCO que Excel Cargar en la memoria, con lo cual le DISMINUIR TREMENDAMENTE LOS RECURSOS DE MEMORIA A LA COMPUTADORA. No obstante, lo anterior, puede hacerlo y ver como es el rendimiento de su computadora. Si encuentra que no es significativo, pues seleccione la columna entera. SIN, ya sabe cmo seleccionar solo el rango y as su computadora lentica NO SUFRIRA! Que la computadora no sea un pretexto que torpedee tu labor. 6. Ahora si, Con la regin SELECCIONADA, voy por el men INICIO, seccin de la derecha modificar y ACTIVO el filtro:
385
Ok, ahora, si, comenzamos a usar los filtros para limpiar la basura de los encabezados. Primero que todo me deshago de esos encabezados que contienen una raya vertical: |
(Recuerde que esta rayita tipo palito vertical ya vimos como eliminarla detenidamente en el tema de los filtros.) Doy aceptar, selecciono las filas desde la que aparece debajo del ttulo hasta el final y las borro.
386
Ahora, cuando se eliminen, NO SE PREOCUPE SI NO VE NADA, el resto de la informacin sigue all, solo debe de ir nuevamente al filtro y seguir seleccionando la basura de los encabezados que no nos sirve:
En Excel 2003 solo podas seleccionar 2 filtros aqu si la tabla no es gigante, puedes filtrar bastantes:
Toda esta basura la eliminas. Luego vamos por el total generalaunque son pocas lneas las podemos eliminarde una vez.
387
Viene el trabajito de deshacernos de esos asteriscos. Los asteriscos pueden ser un problema, pues si se fija, para Excel un asterisco puede ser cualquier carcter, as que si escoge eliminar *** tres asteriscos, Excel le eliminar todo lo que haya por all (todo es TODO). Para deshacernos de ellos, lo que hago es copiar toda la columna A en la columna B, y usar la opcin texto en columnas, as:
(En el tema siguiente, cuando todo esto lo grabemos en una macro, haremos este paso de otra forma, hay muchas formas de hacer las mismas cosas en Excel, no lo olvide!)
388
Con la columna B marcada, voy a la herramienta texto en columnas, opcin de ancho fijo y solo divido la parte en donde se encuentran los asteriscos, el resto de info de la columna B, elimino las rayas para dejar el resto en un solo bloque y en el paso siguiente, la primera parte le pondr tipo texto y a la segunda parte le pondr NO IMPORTAR:
Recuerde que debe desplazarse con la barra horizontal a la derecha Y ELIMINAR esas rayas, de lo contrario Excel las traer y las colocar en columnas, y no las queremos, pues no olvide que por ahora queremos deshacernos de las lneas que tienen asteriscos:
389
Ahora, colocamos los filtros nuevamente, y por la columna b, llamamos todos los asteriscos y los eliminamos, tal y como hemos hecho con el resto de la basura que queremos borrar.
390
No se confunda con la imagen, aqu escog el filtro de la columna B, y escog todos los asteriscos:
Fjese que aparece el smbolo del EMBUDITO en la columna B. Esto es porque hice el filtro en la columna B. Elimina todas esas filas y vuelve a seleccionar todo, para que vea todos los registro, y as, ver que otra basura hacer falta borrar:
Esa columna B, ya no la necesitamos. Tambin quitamos el filtro. Despus de eliminar la columna B, procedemos a partir (dividir) con la herramienta texto en columnas, la columna principal, esto es, la
391
columna A: Marco o selecciono toda la columna A y llamo nuevamente la herramienta texto en columnas:
OJO Esta parte es delicada, pues si partes o divides mal las columnas Saldo inicial, dbitos, crditos y saldo final, tendrs que volver a empezar, a menos que quieras copiar nuevamente la columna A en B, y partir la columna B. Es recomendable, para no perder todo lo hecho hasta el momento. Tenga en cuenta que la opcin deshacer en la herramienta TEXTO EN COLUMNAS NO FUNCIONA CORRECTAMENTE. Tambin se debe tener en cuenta que este archivo, a los valores crdito les pone un texto CR, que tambin hay que separar. La particin queda as, para la primera parte:
392
As queda para la segunda parte: (ojo que aqu solo se ven debito, crdito y saldo final. Asegrese de separar el CR de Saldo inicial, que aqu no se ve, as como quedaron las dos rayitas de la parte final, en donde est el saldo final):
Fjese en la regleta que aparece all. En el saldo inicial coloque un par de rayas en la posicin 73 y 75. Ahora, todos los campos los defino como texto. Si se conoce bien el comportamiento de su equipo en el separador de miles y de decimales, puede usar la opcin avanzadas:
393
En esta opcin se coloca el separador de miles y de decimales que tiene el archivo plano, para que Excel lo convierta en el que maneja el computador, que por lo general en estos archivos es al revs. Sigamos: Tenga en cuenta que este es un listado balance de comprobacin por terceros, y los terceros estn en la misma columna que las cuentas:
La cuenta DEBE estar en la misma Lnea de la transaccin, que ya tiene el cdigo y el nombre del tercero, tenemos que REUBICARLA en esa misma lnea. Cmo? Fjese que en la figura se ve una situacin constante: en donde hay cuentas no hay valores saldos inicial, dbitos, crditos y saldo final. Estn en blanco. Por all las podemos detectar: Entonces, en la columna I1, concatenamos o unimos las celdas con un ampersand &, las celdas C,E,F y G:
Para qu? Para detectar lo que REALMENTE ESTA EN BLANCO, y lo que una vez unido, quede en blanco, indudablemente sern las lneas de los nmero de las cuentas. Esta frmula similar a
394
=Concatenar() se copia hasta el final del archivo plano, luego se desbarata la funcin que nos concaten todo con un copiar, pegado especial, solo valores. Entonces, recapitulando: Dado que los NITS o Cdigos, o terceros estn en la misma columna que las cuentas, hace falta separar las cuentas, colocarlas en columnas aparte, pues necesitamos esos dos datos por aparte, en la misma fila de las transacciones. Como ya detectamos que en donde estn las cuentas no hay saldos sino celdas en blanco, y ya las tenemos ubicadas con el concatenar, entonces las podemos separar fcilmente, ordenando la informacin por esta nueva columna I que hemos creado. Pero para no perder el orden original, insertamos una columna en A, y colocamos un nmero serial. Es la tcnica para depurar la informacin con ordenar que le ense al principio del libro. Si no hacemos esto, podemos perder la informacin pues no sabramos como es que estaba ordenada originalmente:
Insertamos otras dos columnas en B y C. les colocamos cualquier cosa como encabezado para que Excel las integre en la regin corriente de la tabla. En estas dos columnas que hemos ABIERTO, que hemos INSERTADO, TRASLADAREMOS las cuentas y los nombres de las cuentas, as:
Ahora, despus de haber insertado el par de columnas, colocamos cualquier cosa como encabezado de columna en B1 y C1, y ordenaremos todo por la columna de las celdas que identificamos que realmente estn vacas, recuerda? Fjese que sea la columna en donde montamos la funcin concatenar con el & Ampersand, la columna en donde unimos las celdas de los
395
saldos, dbitos y crditos. Tenga presente que como se acab de insertar un par de celdas en B y C, esa columna se desplaz de J a L : A la pregunta:
Dele Ordenar por separado los nmeros almacenados como texto. Ojo, la segunda opcin, no la que se ve aqu en la imagen. As, las celdas vacas quedaran arriba, y con ellas, si se fija, las cuentas de las columnas D y E!:
Ahora, seleccione todas las cuentas que aparezcan en el rango D y E, CORTELAS y PASELAS a la B y la C:
396
Vuelva y ordene por el numero serial. Ese era el fin de hacer ese serial, para retornar al orden original:
Ahora fjese como las cuentas ya quedaron en SU columna aparte. Ahora, a las transacciones que tienen en su misma fila, su NIT, solo les falta tener esta cuenta copiada al lado de estos, Verdad? Y esto lo haremos con la tcnica de rellenar celdas en blanco que vimos al principio del libro. Por eso no me voy a detener en imgenes paso a paso para esta parte. Una vez rellenadas, nos quedan as: Bingo! Ya tenemos la informacin transaccional con todo lo necesario! En la misma lnea la Cuenta, descripcin, cdigo de tercero, nombre de tercero, saldo inicial, debito, crdito y saldo final.
Ok, ahora nos deshacemos de las cuentas que copiamos, las que ahora NO tienen informacin transaccional (las amarillas B y C) pues como ya las copiamos al lado de los Nits, con la tcnica de rellenar, y sabemos en donde estn gracias a la columna L, pues simplemente filtramos las vacas y las eliminamos:
397
Si ve alguna otra basura en el filtro elimnela tambin. Elimine la columna L pues ya no la necesitamos y desaparezca el filtro. El archivo ya le deber quedar depurado as:
Fjese que el archivo ya parece una base de datos. Ahora solo le falta arreglar esos CR que indican que la cuenta es saldo CREDITO. Esta parte tambin la coment ms arriba, en la primera parte del libro: mediante un Si condicional, colocamos que en donde aparezca un CR, multiplique la celda por -1, sino deje la misma celda. Recuerda? Esa formula la pondra aqu en la columna L2, despus de eliminar la que contena las celdas concatenadas:
Copia la formula hacia abajo, copia nuevamente todo el rango y le da pegado especial solo valores:
Esta columna ya puede reemplazar la F. Como saldo final se conforma del saldo inicial mas dbitos menos crditos, mediante una formulita simple, organiza la columna J:
398
Elimina las columnas G y K, que contienen esos CR, y ya la informacin le queda en forma de base de datos. Se puede hacer una macro en lugar de hacer todo esto manualmente? Puede ver que este proceso es muy repetitivo, que aunque le he mostrado como hacerlo paso a paso, y que parece TEDIOSO de hacer, con la prctica se hace bastante rpido, en menos de 5 minutos. Pero como es repetitivo, siempre y cuando el archivo sea SIEMPRE el mismo formato (totales por abajo, y mismo nivel, sin poner valores de moneda extranjera) se puede grabar como una macro, y la macro lo organiza en menos de 5 segundos. (Por supuesto que totales por arriba tambin se puede hacer, solo hay que tener en cuenta las lneas duplicadas y consecutivas y eliminarlas mediante macro). Ahora, veremos cmo hacer la macro que nos haga todo esto que hicimos sin necesidad de volverlo a hacer manualmente. Solo deber pedir el listado del CG1, colocarlo en el escritorio y correr la macro. (Incluso puede generar el archivo CG03013 y dejarlo en la carpeta PRT y comenzar a grabar la macro desde el momento que va y lo busca all con el explorador Abrir archivo de Excel). Casi todo se hace con el grabador de macros, no necesita ser un experto programador para hacer una macro que haga esta tarea. Los conceptos clave ya se los ense en el tema de macros y depuracin de archivos planos. La macro tambin se puede mejorar todo lo que se quiera, y escribir de varias maneras. Yo me voy a servir del grabador de macros de Excel y en lo mnimo evitar EDITAR el cdigo de la macro, salvo las tcnicas tiles que hemos visto en detalle en la seccin de macros, como la variable ULTIMAFILA. Recuerda? para que vea que no es difcil. Si es necesario recorrer los registros, usar Do Until en lugar de For Next, para que cuando la corra paso a paso, pueda ver por dnde se va moviendo la celda activa. As se dar cuenta que casi todo se puede hacer con el grabador de macros, y es posible defenderse bastante bien y hacer macros por lo menos efectivas. Poco a poco, mejorar sus macros, e intentar escribirlas, como le he enseado en el tema de MACROS, sin seleccionar las celdas. Despus de depurar con macro el archivo plano de balance de comprobacin por terceros, puede, tambin mediante macro, hacer una tabla dinmica y construir un balance general y un estado de resultados. Eliminar la tabla dinmica y organizar los totales de cuenta como le ense. Ahora si le gusta, puede hacer usted mismo el reporte que quiera o que le haga falta. La mayora de los archivos planos del CG1 se arreglan de esta manera: Cartera por edades, listado auxiliar de cuentas, etc. Una vez que tenga sus macros para los mismos archivos planos clave, no tendr que volver a matarse y ver como, despus del cierre contable, si el gerente le ordena meter un ajuste de ltima hora habiendo ya Usted elaborado el Balance y el PyG., como podr contabilizar el ajuste, generar el archivo plano, correr la macro y
399
tendr en segundos nuevamente su Balance y PyG. As que es verdad cuando le digo que Excel es su mejor asistente, su mano derecha en su da a da.
400
Creando la macro que depura el balance de comprobacin por terceros Ok, en esta macro vamos a sintetizar todo lo que hemos aprendido sobre depurar archivos planos. Le aconsejo que si no ha ledo el tema anterior vaya y se lo lea, pues mucho de lo que aqu viene es un resumen de lo visto ms en detalle. Paso 1: Abrimos Excel, prendemos el grabador de macros,
Le colocamos el nombre que creamos es el ms IDONEO para nuestro archivo, lo colocaremos en el libro de macros personal, o en este libro, luego abriremos con Archivo-Abrir de Excel, el archivo plano CG03013, que en mi caso estar ubicado en el escritorio, (o desktop), (ojo, para ver el archivo plano no olvide ver TODOS LOS ARCHIVOS), NO LO SEPARAREMOS, todo quedar empaquetado en una sola columna, los datos sern tipo Texto, y justificaremos la columna A. No es necesario para Excel pero para nosotros s. Esta justificacin luego se podra quitar, pues al ser una lnea de cdigo mas, pues es mejor si son lneas de cdigo menos. Justificamos pues necesitamos por el momento, visualizar el contenido del archivo plano en una sola columna. En cuanto hagamos eso, DETENEMOS LA MACRO, quedaremos en este momento y en el Editor de Visual Basic se generar el siguiente cdigo:
401
Ok. Volvemos y prendemos el grabador de macros. (Podemos dejar esa macro en Este libro, es decir en el archivo CG03013.P01) cuando grabemos lo que le dir a continuacin y detengamos la macro, podemos cortar el cdigo grabado que se gener en uno de los mdulos del proyecto CG03013, pasarnos al modulo de la macro principal es decir, pegarlo debajo de la macro EjemploLibroDepuracinCG03013, o en la macro principal en donde estamos pegando todas las acciones grabadas. Continuemos: Estando prendido el grabador de macros, en la hoja de clculo selecciono la celda A1 que en este archivo plano est VACA y coloco cualquier palabra, como la palabra Titulo. Al escribir Titulo, NO doy enter, sino que escojo el CHULITO DE VISTO BUENO QUE DICE INTRODUCIR:
Porque? Si oprimes ENTER, quedar seleccionada la celda A2, Y NO DESEO SELECCIONAR A2 pues no voy a hacer nada en esa celda, y menos an quiero que me quede grabada esa accin en mi macro. Para que no quede seleccionada A2, pues haces clic en el CHULITO en lugar de dar ENTER. Esta palabra Ttulo la coloco, porque ms adelante voy a colocar un filtro. Si no denominara esa primera celda en blanco con un nombre, quedara incluida cuando filtre los datos, pues uno de los filtros que haremos ser deshacernos de las celdas en blanco... Y si eliminamos HASTA la celda que contiene el filtro, pues tendremos que volver a montar el filtro. Para eso, le colocamos un ttulo cualquiera, pues a partir de l es que me voy a deshacer de toda la basura que est en el archivo plano. Selecciono toda la columna A, es decir, la columna A entera, Completamente seleccionada, y activo los filtros. Le comentaba cuando depuramos manualmente el archivo, que si el archivo es MUY GRANDE, seleccionara el rango de los datos, si ese es su caso, siga esos mismos pasos mientras graba la macro.
402
Los balances de comprobacin por terceros varan en cantidad de filas, algunos no son muy grandes, y se puede seleccionar toda la columna. Una vez realizado lo anterior, podemos detener la macro, vamos y la buscamos en el editor de visual basic, la cortamos y la pegamos debajo del cdigo que vimos hace un momento, con lo que se ampla a esto:
El archivo y el cdigo no han cambiado mucho, pues solo se ha colocado la palabra titulo, se ha seleccionado toda la columna y se han activado los filtros. Continuamos con una tercera macro. En esta siguiente macro, con un filtro personalizado tipo Contiene, selecciono todo lo que tiene una barrita vertical. En cuanto queda filtrado, selecciono, desde la segunda fila visible, oprimo FIN + Flecha hacia abajo y borro todas las filas filtradas que contienen la barra vertical. Luego selecciono el filtro nuevamente y esta vez, hago un filtro de mltiple seleccin y me deshago de todo el resto de basura: rayas tipo guin: ------------; dobles rayas guion =====, signos ms con guiones: +-----, y todo lo que estamos seguros que es basura, pero ojo, que estamos seguros que es informacin COMUN en todos estos archivos planos de este tipo. Una vez filtrada toda la basura, seleccionas desde la segunda fila visible, oprimes Fin + Flecha abajo y eliminas todas esas FILA BASURA. Cuando terminas, le das clic al botn DETENER GRABACION. El archivo debe de quedar as:
403
Las instrucciones que seleccion, que se ven en color azul, se pueden eliminar, pues no hacen falta. Como esta macro, qued directamente debajo de la otra, pues las unimos, seleccionando y quitando esta parte, as:
Puede ver que estoy quitando desde donde dice END Sub, que es el final de la macro parcial que grabamos primero y SUB MACRO8(), y de una vez lo que le comentaba hace un momento. As quedan unidos los dos cdigos bajo el nombre de la macro original. Puede probar a ejecutarla y ver como ya hace todo en un INSTANTE. Pero al hacerlo, no olvide cerrar el archivo plano CG03013 SIN GUARDAR CAMBIOS. Ojo con eso. Ya estamos en la parte de eliminar los asteriscos que son subtotales y que son basurita tambin. Como sabemos que no podemos escoger todo lo que contenga asterisco, pues para Excel un asterisco puede ser cualquier carcter, lo que podemos hacer es, Grabar otra macro mediante la cual en la columna B, colocarle por ttulo Asteriscos, y en la celda B2, colocar la funcin =IZQUIERDA(), que nos saque una copia de los primeros caracteres de la parte Izquierda de cada fila de la columna A. Si no comprende bien que hace la funcin =Izquierda(), vaya a la seccin de este libro en donde se explica bien esa funcin.
404
Entonces, haga lo siguiente: Ubicado en el archivo CG03013, Prenda el grabador de macros. Seleccione la celda B1. Escriba Asteriscos. Psese a la celda B2. Escriba la formula =Izquierda(A2;8) e introducir formula (OJO, NO ENTER). Copia la formula. Con Fin + flecha Abajo, se va hasta el final de la hoja de clculo. Se pasa a la columna A. Otra vez, oprime Fin + flecha arriba. Se pasa a la celda de al lado, la B. Luego para seleccionar todo el rango en el cual debe quedar ingresada la formula izquierda, desde all oprime Shift + Fin + Flecha Arriba, y da enter. La formula debe quedar copiada enteramente. Seguidamente, como tiene todo el rango seleccionado, desbaratamos la formula con Copiar, y All mismo, pega la copia pero con Pegado especial Solo valores. Procedo a mostrarle IMAGEN POR IMAGEN LO QUE HICE:
Estoy en la celda B2, escribo la formula, y hago Control C para copiarla. Luego, oprimo Fin + flecha abajo: llego a la ltima fila de Excel:
Otra vez, oprimo Fin + Flecha hacia Arriba: Me estrello con la parte final del archivo plano:
405
Oprimo Shift + Fin + flecha arriba para seleccionar todo el rango en donde quiero copiar la formula y oprimo ENTER para pegar la formula a lo largo de todo ese rango:
Puede ver que qued AL LADO, a todo lo largo de nuestro archivo plano, y que est extrayendo los asteriscos. Las dos ltimas filas, ya veremos cmo quitarlas, pues son basura pero en todos los archivos son diferentes totales, pero como siempre estn de ltimas, se pueden eliminar fcilmente, mas adelante lo haremos. Sigamos. Sobre ese mismo RANGO, en el cual introdujimos la funcin izquierda, hacemos un copiar pegado especial solo valores y desbaratamos la formula Izquierda. Todo este Paso a paso gener el siguiente cdigo, que debemos depurar despus, pues se puede ver que la lnea que le sealo aqu, es una seleccin FIJA, y lo que habr que decirle a Excel es que se desplace con ActiveCell.Offset una celda a la derecha, y corregido el problema. Sobre esta instruccin en la seccin de macros me detuve MUCHO, para que le quedara clara su utilidad. (Mas adelante depuraremos esas cositas):
Nota: Si el fragmento de macro, le queda grabado dentro del modulo del otro archivo, el CG03013:
406
No se preocupe, bralo, corte la macro, y pguela debajo de las dems macros del modulo1 del archivo en el cual est guardando las macros parciales que estamos uniendo, que en este caso, es el archivo EjemploMacroDepurarCG03013.xlsm. Sigamos. Volvemos a grabar otra macro. En ella, ahora seleccionamos las columnas A y B, colocamos un filtro y con un filtro mltiple en la columna ASTERISCOS seleccionamos todos los asteriscos, el de un asterisco, el de dos asteriscos, todos, y los eliminamos. (Hay archivos en donde aparecen ms asteriscos, este trae hasta 5 *****, a veces mas, para tener en cuenta si quiere montar una macro que le corra en todos los casos)
407
Seleccionamos desde la segunda, hasta el final y eliminamos todas las filas, seguidamente desactivamos el filtro, eliminamos la columna B, y seleccionamos la celda A1. Una vez realizado lo anterior, el grabador de macros nos genera este cdigo:
El nico problema verdaderamente serio del cdigo anterior, es la seleccin del rango, el cual es fijo. Ms adelante arreglaremos esto, pues no todos los archivos tendrn la misma cantidad de registros. El archivo ya nos va quedando as:
Ok, asteriscos Fuera. Ya podemos ver que la informacin ya comienza a parecer una base de datos,
408
Ya estamos cerca del final. Ahora, Con otra macro, tal como lo hicimos manualmente, con mucho cuidado, con la herramienta texto en columnas, Seleccionamos la columna a, activamos la herramienta texto en columnas y vamos a partir el archivo plano. El archivo visualmente nos queda as:
En la primera imagen puede ver que el ttulo, que nos ayudaba en el filtro, qued en la columna A, y que las dems columnas les hace falta un rtulo de columna o encabezado o ttulo. Ahora, en la siguiente MACRO, a las dems columnas les colocamos un encabezado de ttulo temporal, puede ser cualquier cosa, para que se REACTIVE la regin corriente y Excel SEPA que corresponde a una TABLA. Adems, en la columna I, colocaremos una frmula que concatene, uniremos las celdas C, E, F y G con un & Ampersand que nos ayude a identificar las cuentas, para poderlas separar a un lado. Tal como hicimos en la parte manual. Seguidamente, colocaremos un nmero serial, que nos permita regresar al orden original, pues vamos a ordenar todo esto por la nueva columna I, que es la columna en la cual detectaremos las cuentas. Una vez realizadas estas dos acciones, el archivo queda as:
En la imagen seleccion el rango I2 I5, para que vea que el concatenar, A LA FIJA, nos DICE cuales son las filas que SIN TEMOR A EQUIVOCARNOS, SON CUENTAS y NO TERCEROS, valindonos de la consistencia que se observa, la cual es, que cuando en la fila hay una cuenta, No hay valores transaccionales.
409
Coloque unos ttulos cualquiera, y en la celda I2, coloqu la funcin que concatena las celdas C, E, F y G, tal como lo hicimos en el ejercicio anterior en el cual depuramos el archivo manualmente y mostramos como era la funcin. Seguidamente se copia la funcin de I2 a todo lo largo del archivo plano, me voy hasta el final, estando all abajo me paso a la celda de la columna G, subo hasta estrellarme con la parte final del archivo plano, y me paso nuevamente a la columna I. Estando en esa posicin, selecciono TODO el rango que recorre a todo lo largo del archivo plano con toda seguridad, y pego la columna que quiero copiar. Una vez copiada, SOBRE EL MISMO RANGO, hago un nuevo Copiar, y ALLI MISMO, EN ESE MISMO RANGO, SIN MOVERME, HAGO UN PEGAR, PEGADO ESPECIAL SOLO VALORES. El grabador de macros con estas acciones, que nos dejaron el archivo plano como se ve en la imagen, gener el siguiente cdigo:
Se ve un poco largo, pero lo que lo hace largo son esas lneas con las cuales se bautizan los encabezados de columna. Intencionalmente he marcado la lnea Range(I2753).Select, que es el nico problema serio, el resto del cdigo se puede depurar, y mucho, pero no hacerlo si bien no es indispensable, si es importante. Ms adelante, cuando hagamos una revisin del cdigo, arreglamos eso. Ahora sigue colocar en una columna A un nmero serial. Porque? Porque vamos a ORDENAR por esta columna I, en la cual hicimos el concatenar, para DEJAR JUNTICAS TODAS LAS CUENTAS Y PODERLAS PASAR A UNAS COLUMNAS APARTE, PARA SEPARARLAS DE LOS NITS. Recuerde que las cuentas estn
410
en la misma columna de los Nits, y esto, para una base de datos, NO PUEDE SER. La columna o Es campo Cdigo de tercero o Campo Cuenta, pero no pueden ser los dos. Lo que hicimos para solucionarlo, fue que las tamizamos, las seleccionamos, las identificamos mediante el principio de que cuando hay una cuenta no hay valores transaccionales, y lo hicimos con el concatenar en la columna I. Ok, espero que me vaya siguiendo. Sigamos. En otra macro, voy a montar el serial en la columna A. Es la leccin que le ense al depurar la informacin Ordenando los datos. ESO MISMO: Inserto UNA COLUMNA NUEVA EN LA COLUMNA A. Coloco en A1 el ttulo Serial, en A2 el numero 1, y en A3, el numero 3. Selecciono las dos primeras casillas y arrastro hasta el final del archivo plano. Al realizar esta operacin se genera el siguiente cdigo:
Recuerde que si la macro le queda grabada en el archivo CG03013, debe recortarla y pegarla debajo del resto de macros que luego uniremos, y esas las estamos colocando todas, una debajo de la otra en el modulo1 del archivo EjemploMacroDepurarCG03013.xlsm
Ahora, en la siguiente macro ordenamos toda la informacin por la columna J, que es la columna en donde hicimos el join, es decir, en donde unimos las celdas de los valores para detectar las filas que
411
realmente estn en blanco, y que indudablemente corresponden a las cuentas. Grabamos la macros y ordenamos por esa fila:
Ante la pregunta:
Le damos Ordenar por separado los nmeros almacenados como texto. De esta manera, las cuentas nos quedaran en donde queremos, arriba:
V? Ya tenemos las cuentas TODAS JUNTAS, REUNIDAS en donde queremos tenerlas. Insertamos dos nuevas columnas en B y en C, en estas columnas colocaremos las cuentas:
412
Como nos quedaron juntas, solo nos resta BAJAR por la columna E, hasta que lleguemos al final de todas las cuentas. Cmo? Seleccionando D1 o D2 y con fin mas flechita hacia abajo, llegas a la ultima cuenta. All, junto a esa ltima celda, la ultima cuenta, seleccionas tambin la descripcin de esa ltima cuenta, y luego desde abajo seleccionas todo el rango equivalente a las cuentas, con Control + Shift + Flecha arriba: En la imagen, descend hasta la ltima cuenta:
Luego, oprimir, desde aqu, control + shift + flecha arriba, para tomar todo el rango correspondiente a las cuentas:
413
la paso a B y C:
Ahora, necesitamos de nuevo colocar unos encabezados en D y E, pues nos quedaron VACIOS, as Excel nuevamente reconocer la regin activa de todo el archivo plano. Es necesario porque vamos a ordenas nuevamente por la columna Serial.
He puesto cualquier cosa, pues todava no son los encabezados definitivos. Ahora ordeno por la columna A, la del serial:
414
Fjese que logramos separar las cuentas de los nits y los nombres de nits!!! Sabe que es lo nico que falta? Grabar en la siguiente macro la tcnica de rellenar los espacios que le he enseado, y luego eliminar las celdas de las cuentas, pues ya sabemos en donde estn!! En este punto, al detener la macro, encontramos que se ha grabado el siguiente cdigo:
415
Seguidamente, prendemos nuevamente el grabador de macros, nos ubicamos en la celda A1,bajamos hasta la ltima, nos pasamos a las celdas de al lado, y desde all seleccionamos el rango, hasta A1: Estando en A1, bajo hasta la ltima:
Desde aqu, oprimo simultneamente, con control + shift + inicio AGARRO todo el rango hasta A1:
416
Listo, ahora voy por la ficha inicio, buscar y reemplazar, ir a especial, celdas en blanco. Escribimos la formula + la celda de arriba y en lugar de Enter, hago Control+Enter, para copiar en los rellenos la informacin que est en la celda de arriba de las celdas en blanco:
Seguidamente, marco las columnas B y C, y hago un copiar, pegado especial, solo valores.
417
Aqu estoy sealando el Range(C2721).Select, porque ese pedacito habr que arreglarlo despus, y decirle que, habiendo bajado a la ultima celda con el comando Selection.End(xlDown).Select, SE DESPLACE DOS CELDAS a la derecha DESDE LA CELDA ACTIVA, que es la ultima que qued seleccionada. Estas dos instrucciones que siguen, tambin se pueden quitar: Windows("EjemploMacroDepurarCG03013.xlsm").Activate Windows("CG03013.xlsx").Activate Sobran, pues la maquina sabe que est trabajando en el libro activo Al final se le PELUQUEAN esos comandos un tanto redundantes. Es que cualquier accin incluso las que no agregan valor, quedan grabadas. Entonces, ya hicimos el relleno colocando una frmula que no es ms que decirle a las celdas vacas que JALEN el dato que est arriba de ellas. +Celda arriba. Antes de continuar, esa frmula hay que desbaratarla con el viejo y conocido mtodo de copiar las dos columnas y pegarlas ALLI MISMO, pero con la opcin, pegar valores. Como al final de esta secuencia, las hemos dejado seleccionadas, solo nos resta hacer la macro de copiar, y luego dar pegado especial valores:
Recuerde que TIENE que seleccionar las dos columnas en las cuales qued el relleno. Mire que estn las dos columnas seleccionadas, y hago clic derecho para que salga el men emergente, y hago clic en Copiar.
418
Al hacer clic all, me saldr una ventana que me dice QUE COSA EN ESPECIAL QUIERE QUE PEGUE: Activo la casilla SOLO VALORES, y listo, detengo la macro.
Despus de dar ACEPTAR, con el teclado del computador oprimo la tecla Escape para que se me DESAPAREZCAN esas lneas INTERMITENTES que me estn seleccionando el rango de las dos columnas que COPIE y PEGUE ESPECIALMENTE. Es lo que se conoce como desactivar el Clipboard, pues si deseara pegarlo en otro lado, lo podra hacer, pues Excel lo ha guardado en memoria. Como no lo quiero ms, lo desactivo dando escape.
419
Cuando DI ESCAPE CON EL TECLADO, se quita la intermitencia del rango, y corresponde a la instruccin Application.CutCopyMode = False Esta macrito que acabo de hacer, el numero que sea, que se gener en el libro CG03013, la corto y la pego en donde estoy pegando todas las macros.
Este archivo ya est cerca de finalizarse. Ya hemos logrado: 1. Limpiarle la basura de los encabezados del listado. 2. Detectar las filas que corresponden a las cuentas (con los blancos de la columna de la derecha) 3. Insertar dos columnas y lograr desplazar los cdigos de las cuentas y sus nombres a un lado izquierdo, aparte de los cdigos de los terceros, pues compartan la misma columna y para una base de datos esto es inadmisible. 4. Rellenar, debajo de las cuentas desplazadas (no por la violencia), los datos de esas mismas cuentas y nombres de cuentas. Que sigue? O, que nos falta para acabar? 1. Ahora s, aprovechar las celdas que estn en blanco FRUTO de la funcin concatenar que hicimos, recuerde que unimos el contenido de todas las celdas para detectar en donde haba CUENTAS y en donde NO, para desplazarlas y rellenar ESA informacin al lado de los terceros. Como ya hicimos el relleno, estas celdas ahora ya no las necesitamos y antes por el contrario, ahora nos sobran, pues la meta es convertir eso en forma de base de datos. Entonces: Paso siguiente: Deshacernos de todas las celdas de la columna de la extrema derecha que quedaron en blanco. Aqu le pego una imagen para que observe:
420
La que pint de grisecito de la derecha, es la que vamos a USAR para deshacernos de las filas que ya nos sobran. Para mayor claridad, en esta siguiente imagen, le estoy mostrando cuales son las filas que ya no nos sirven y que hay que borrar, pues para que la informacin sea trabajable debe ser en forma de base de datos. Esta imagen que le presento es la misma que esta de arriba, en esta le estoy sealando las filas que vamos a proceder a borrar:
Si se fija en esta imagen, las filas que YA NO NECESITAMOS CORRESPONDEN CON EL HECHO, DE QUE EN LA COLUMNA L ESTAN VACIAS O ESTAN EN BLANCO. Ahora, NO NOS VAMOS A PONER A ELIMINAR ESTAS FILAS UNA A UNA, NOOOO. Las vamos a eliminar con la tcnica que hemos venido indicando en el libro, con un filtro. Entonces: Vamos a grabar la siguiente macro que nos eliminar estas filas que ya no queremos: Encienda nuevamente el grabador de macros por la opcin ficha programador, grabar macro, en este libro. No se preocupe si el libro no es el mismo en el cual esta guardando todas las macros, luego con el editor de visual basic, va a la macro grabada en ese libro, la corta como cuando corta texto en Microsoft Word, se pasa EN EL VISUAL BASIC al mdulo del archivo en donde est acumulando todas las macros parciales, que en este caso es EjemploMacroDepurarCG03013.xlsm y la pega debajo de las dems. Entonces, recapitulando: prende el grabador de macros, y pone un filtro. Dado que el archivo ya tiene ttulos en los encabezados de columna, y tiene un nmero serial para todas las filas, Excel reconocer TODA la tabla, o regin corriente sin necesidad de seleccionar todo el rango. Entonces, recapitulando: prende el grabador de macros y pone un filtro. VA A SELECCIONAR EL FILTRO DE LA COLUMNA QUE ESTA EN GRIS, que en mi caso se llama reterdvfvx. Recuerde que he puesto encabezados solo para efectos de que los filtros trabajen. Ms adelante le identificaremos correctamente los encabezados. No los identifico an, porque estas columnas NO SON CON LAS QUE NOS VAMOS A QUEDAR. Pues tambin hay que arreglar los valores, y eso ya hemos visto como hacerlo en otras partes de este libro. Entonces, vuelvo y recapitulo que es lo que vamos a hacer: Prende el grabador de macros, pone un filtro, selecciona la columna donde estn los blancos, y DES-selecciona TODO, busca las que estn en BLANCO y las selecciona. Que ocurrir? Que Excel NOS DEJAR JUNTICAS TODAS LAS CELDAS QUE YA NO NECESITAMOS. TENIENDOLAS JUNTAS, PROCEDEMOS A ELIMINAR TODAS LAS FILAS. Entonces: Le muestro en imgenes todo lo anterior: Paso 1: GRABA ESCENA MACRO SIGUENTE (como en las pelculas), Pongo el filtro:
421
UBICADO EN EL FILTRO, Desactivo la casilla de verificacin Donde dice Seleccionar todo, Bajo con la barrita de desplazamiento DEL FILTRO hasta la ltima parte, esta: y ACTIVO LAS VACIAS, ASI:
422
En cuanto LO HAGA, suceder que Excel solo nos dejar, Las vacas: (Que valga la redundancia).
Puede darse cuenta, como el filtro nos hace la tareta en un segundo, y lo mejor de todo, es que NADA DE TODO ESTO TENDREMOS QUE VOLVERLO A HACER PORQUE ESTAMOS GRABANDO TODOS LOS PASOS EN UNA MACRO. Sigue: Selecciona todas las filas, desde la segunda visible, hasta la ltima:
423
424
425
Lo ve? Aqu le hago otro ZOOM: ESTE que se ve a la derecha con una flechita hacia abajo:
Cada vez que una hoja tenga filtros, FIJESE EN DONDE ESTAN LOS EMBUDITOS, as sabr que esas columnas Estn filtrando algn dato, dado algn criterio del usuario. En este caso, nuestro criterio fue que nos seleccionara todas las celdas en blanco, Como las acabamos de eliminar, pues ya no nos muestra nada. Lo que tenemos que hacer, es Hacer clic all y darle clic a Seleccionar todo y Aceptar:
426
Esta operacin de eliminar las filas que no nos interesan, nos gener el siguiente cdigo:
Aqu le estoy sealando el nmero 2721, que corresponde a la ltima fila del archivo. Esa Celda, esa instruccin habr que corregirla, pues seguramente otro archivo podra tener ms o menos filas. Eso lo arreglaremos con una variable, la variable UltimaFila que en la seccin de macros aprendimos a hacer. Recuerda? Espero que s, si no, le agradezco retorne a la seccin de macros y repase. Ok. Mire como queda todo despus de haber eliminado las filas que nos sobraban: Fjese que la columna L, la de la derecha, que tanta utilidad nos ha dado, sigue all, ya no tiene celdas en blanco.
Le muestro esta otra imagen para que vea ms claramente como este archivo plano ya se va pareciendo ms a una base de datos:
Ok, esa columna L, que tanto nos sirvi, ahora ya no la necesitamos. Prenda el grabador de macros, seleccione esa columna y elimnela. Al hacerlo, se generar este pequeo cdigo:
La macrito generada, al igual que las dems, crtela y pguela debajo de las otras.
427
Que falta? Muy Poco. Qu? Queda un problemita por resolver. Fjese como se presentan los valores crdito en este archivo plano:
Tienen una columna adyacente en la cual, en los casos en los que son valores Crdito, pone un CR. Este balance, como cualquier otro, al final debe de darnos CERO, prueba IMPAJARITABLE (Agradezco sepa excusar mis modismos), de que el balance esta cuadrado o ms que eso, de que a nosotros nos ha quedado Bien depurado. Aunque en la prctica, casos se ven en donde DE UNA se pillan balances descuadrados, aunque el mismo archivo plano, si se fija, por lo general al final muestra unos totales generales, y cuando un balance est descuadrado, all se puede ver, que en las columnas saldo inicial y final, no estn en ceros. Por otra parte, si el archivo plano reporta cuanto suman los dbitos y los crditos totales, a ese valor deberemos llegar y as sabremos que el archivo, por lo menos en cuanto valores generales, nos ha quedado correcto. Otra situacin con la que me he encontrado es que, dado que en esta depuracin nos estamos quedando con informacin de las cuentas a nivel de terceros, y al analizarla e irla mayorizando por clase, grupo, subgrupo, cuenta, en ocasiones no corresponde con las sumatorias a nivel de terceros. Es una prueba que podra uno llamar de Integralidad de la informacin, en la cual se detectan inconsistencias en la acumulacin de los saldos del mismo sistema. Eso se puede revisar, y podramos cruzar, rpidamente con una tabla dinmica, contra los totales que nos mostraban los asteriscos al comienzo, en el archivo plano, pues por lo general, en estos archivos del CG1, un asterisco son los totales por clase, dos asteriscos totales por grupo, etc. Ok. Nos falta el cdigo que nos arregle los valores. Vamos a grabarlo: ya sabemos que nos podemos servir de las columnas en donde estn los CR y aparte, en una nueva columna colocar una funcin =Si(), y copiarla a todo lo largo del rango. Es una manera, de solucionarlo, que a m me gusta pues resulta ser ms rpida que si me pusiera a recorrer la columna y en donde aparezca el CR multiplicar por menos uno o algo as. Crame que hacer la funcin Si() en una columna adyacente, a la derecha, y copiar las formulas hacia abajo es muchsimo ms rpido que obligar Excel a que recorra cada columna arreglando los valores uno a uno. Ok. En Excel, nos ubicamos en el archivo plano. Prendo nuevamente el grabador de macros. Me ubico en la celda en la cual voy a montar la funcin =SI(), que en este caso ser la L2, y en ella introduciremos la siguiente funcin: =SI(G2="CR";-VALOR(F2);VALOR(F2)) La cosa es que, cada vez que aparece un CR, el valor es crdito, es decir, NEGATIVO, por eso, lo que hacemos es traer el valor negativo, utilizo la funcin valor, POR SI DE PRONTO sigue apareciendo algn numero que Excel lo est tomando como Texto. De esta manera me REASEGURO de que definitivamente quede negativo. En caso de que no haya un CR, solo traer el valor de la celda, usando tambin, la funcin Valor. En M2 introduciremos : =VALOR(H2) que corresponde a los dbitos del archivo plano En N2 introduciremos : =VALOR(I2) son los crditos del archivo plano
428
En O2 introduciremos : =L2+M2-N2 el saldo final, podemos optar por sumar las funciones anteriores. Detenemos la macro. Ahora, antes de ver el cdigo que gener Excel, veamos grficamente la introduccin de la funcin =Si():
Esa es la funcin que est en L2, que en este caso devuelve un cero. Si en L2 le damos F2 Editar, podemos ver las celdas que est tomando, o ver mejor como est montada la formula:
Ok. Despus de haber ingresado esas funciones y haber detenido la macro, este es el cdigo que se gener:
Ok, ahora en la siguiente macro que grabaremos, vamos a tomar estas cuatro celdas, copiarlas y pegarlas a todo lo largo del rango del archivo plano. Una manera de hacerlo, puede ser: 1. Seleccionar las celdas, copiarlas, pasarnos a la celda A1 o a2, con el comando FIN mas flecha hacia abajo, iremos hasta la ltima fila del archivo, nuevamente con FIN mas flecha a la derecha iremos a la esquina inferior derecha, nos desplazaremos una casilla mas a la derecha, y en ese punto, ya estaremos ubicados en el punto del rango final. Desde este punto final
429
estaremos correctamente ubicados y seleccionando, desde este punto final, hacia arriba, tomaremos todo el rango de celdas que queremos pegar. El inconveniente es que, si nos pasamos a A1 o A2, para que la tcnica del FIN + flechita de direccin, funcione, deben de existir datos a todo lo largo de la direccin sobre la que nos estamos moviendo. Si llegara a haber un espacio en blanco, Fin + Flechita podra detenerse a mitad de camino, y es lo que suceder en este caso, pues el archivo tiene muchas celdas en blanco, como es el caso de la columna G, columna que contiene o no los caracteres CR, y sobre ella pasaremos cuando al final demos Fin + flechita a la derecha. 2. Otra manera es, en lugar de pasarnos a la celda A1 y bajar hasta el final, pasarnos solo hasta la columna J, que representa el saldo final, y deslizarnos hasta el final por all, luego nos desplazamos dos celdas a la derecha y ya tendremos el punto final del rango sobre el cual pegaremos estas cuatro celdas con sus formulas. El inconveniente? Igualmente no podemos arriesgarnos a que haya un espacio en blanco que es poco probable que lo haya, pero puede existir incluso por error, y podra detenerse a mitad de camino. Entonces, tampoco. Busquemos otra opcin: 3. Considero que la mejor opcin es, arrancar desde la ltima celda, en la columna A, de la hoja de clculo, la 65.536 si es Excel 2003 o la 1.048.576 si estamos en Excel 2007. En la seccin de macros aprendimos un comando que sirve para ambos casos, pero en este caso queremos hacerlo usando el grabador de macros, por lo que debemos de saber con certeza en que versin de Excel estamos trabajando. As pues, la mejor opcin, para encontrar la ltima fila, es ir hasta la ltima celda de Excel, y subir hasta estrellarnos con el ltimo dato de la regin corriente, por la columna A. Porque la A y no la J la columna del saldo final? Respuesta: Porque hay casos en que las dems columnas no tienen la misma longitud que la primer columna, y queremos estar exentos de error. Luego, INEVITABLEMENTE tendremos que escribir MANUALMENTE el cdigo que desplaza la celda activa hasta la columna L. Recuerde que comenzamos a escribir la funcin =SI() en L2, as que la columna L-Ultima fila, ser el punto final del rango sobre el cual pegaremos la funcin que estamos copiando. Vamos a hacerlo: Prendemos otra vez el grabador de macros. Selecciono las cuatro celdas que contienen las formulas:
Las copio:
Me voy por la ficha INICIO Buscar y seleccionar Ir a (puede ver que hay un short-cut o atajo de teclado que Excel nos est diciendo que tambin podemos usar para evitar esos Clic adicionales de ratn, control + I)
430
En cuanto salga la ventana, escribiremos las coordenadas o referencia de la ltima celda en la columna A, esto es A1.048.576:
Clic en Aceptar. Una vez que lleguemos a la ultima celda, oprimiremos FIN + celda hacia arriba:
431
Puede ver que al lado de Listo dice Modo Final, quiere decir que ya oprim la tecla FIN y solo flat oprimir la flecha hacia arriba para salir disparado y estrellarme sin lugar a dudas con la ultima celda:
No se fije en el nmero de macro por la que voy, dado que como estoy escribiendo el libro mientras hago las macros, y grabo las imgenes, no me estn quedando en secuencia, pero eso no es problema, solo pegue la macro, que est correcta. Observe el cdigo, mire que todo eso a lo que le hemos botado corriente sobre como copiar y pegarlo en el rango correcto sin error, queda reducido esas cuatro lneas. Este pequeo cdigo ya tiene la instruccin de copiar e ir hasta la ltima celda de la columna A, del archivo plano. Solo necesitamos que se SELECCIONE la columna L. La columna L es la columna nmero 12, o la letra numero 12, si cuenta desde A, hasta L. La instruccin que debe escribir, debajo de esta macro, es la instruccin ActiveCell.Offset que se explic ampliamente en la parte terica. Solo se necesita escribir esta lnea: ActiveCell.Offset(0, 11).Select Porque escribo 11 si la columna L es la columna 12? Porque si se mueve, desde A, doce veces, quedar ubicado en la columna M, en lugar de L. Cuando usted camina y comienza a contar pasos, NO CUENTA el punto inicial, cuenta desde el primer paso, el paso que lo llevar a la posicin o punto 2. Entonces es lo mismo aqu, es cuestin de cuantos pasos o celdas se debe mover Excel. Cero filas, 11 columnas a la derecha.
432
Recuerde que las MINIMACROS como esta, se pueden probar, ejecutar paso a paso, as que si se equivoca en la cantidad de posiciones, pues rectifique, hasta que encuentre la referencia o coordenada de desplazamiento correcta. Es imprescindible que para una mejor comprensin de esta parte haya ledo la parte terica que haca referencia al tema de Activecell.Offset en el libro. Una vez incorporada la lnea en el cdigo, y comprobada queda as:
Este es, en la prctica, de las pocas cositas en las cuales se debe meterle la mano al cdigo. Ok, ahora, desde este punto podemos seguir usando el grabador de macros, para la parte que nos falta. Entonces, esta macro la corremos, y cuando termina fjese que nos est pidiendo que seleccionemos el destino y que peguemos. Ubicados aqu, en donde nos deja, grabaremos el pedazo de macro que nos falta.
Ubicados en el punto final del rango, prendemos el grabador de macros y lo que hacemos es oprimir las teclas Shift + FIN + flecha arriba. En cuanto se seleccione todo el rango, se da ENTER. Suceder que quedar pegada, a todo lo largo del rango, las formulas de las cuatro celdas que estamos copiando. Seguidamente, de una vez all, con TOOODO el rango seleccionado, de nuevo copiamos y pegamos, esta vez con el propsito de DESBARATAR las formulas, daremos PEGADO ESPECIAL SOLO VALORES. Puesto que hace un momento hicimos esa operacin de copiar y pegar solo valores, no considero necesario volver a pegar las imgenes.
433
Fjese que los 126.820.009,36 que son CREDITO, quedaron negativos. Quiere decir que la funcin opera correctamente y cumple su cometido. Esta operacin de seleccionar el rango, pegar, volver a copiar y pegar solo valores, gener este cdigo, que deber ir debajo del otro que manipulamos manualmente:
Despus de esto, YA NO NOS HACEN FALTA LAS COLUMNAS DESDE LA F HASTA LA COLUMNA K. Estas son las columnas viejas del archivo plano que representaban el saldo inicial, la columna de los CR, los dbitos, los crditos y la columna de los CR. Puesto que ya organizamos los valores y los convertimos en negativos cuando son CRS (crditos), podemos proceder a Eliminar esas columnas. Entonces, nuevamente prenda el grabador de macros, seleccione esas columnas y elimnelas. Detenga la macro y pegue ese cdigo debajo de los que venimos haciendo. En esta imagen estoy seleccionando las columnas a ELIMINAR:
434
Eso generar este cdigo, como podr ver es muy sencillo de entender, pero no por eso tiene que escribirlo, siempre que pueda use el grabador de macros:
435
Solo nos falta colocar los encabezados de columna y colocarle el formato a los nmeros. Prenda el grabador de macros, seleccione las columnas de los valores, esto es, de la F hasta la I, haga clic derecho para que salga el men emergente, y coloque el formato de celdas NUMERO de su predileccin, o el que considere necesario:
Este es el cdigo que se genera, el cual tambin vamos cortando y llevando para el otro lado:
436
Ahora, la macro de los encabezados. Solo es prender el grabador de macros y colocar los encabezados a todas las columnas:
Podemos decir que ya hemos finalizado. Solo falta unir todas las macros y mejorarla en aquellas partes en donde quedaron celdas fijas y necesitamos que se mueva con el ActiveCell.Offset. Tambin debemos definir la variable Ultimafila para remitirnos siempre en verdad a la ltima fila y no a una ltima fila fija de un solo archivo plano. Recuerde que si no se hacen esos arreglos la macro no le operar bien si le llega a salir un archivo diferente. Si usted afina bien esta macro, le puede servir para cualquier compaa que maneje este tipo de archivos de CG1, el CG03013. Si es versin CG1 versin 8.5, es el archivo UFCG1041, el cual encontrar
437
que es muy similar a este, por no decir que es casi la misma cosa, pero esta macro le servir para el CG03013. Tendr que construir la que corre para el UFCG1041. Cdigo Mejorado. Este es el cdigo con los cambios mnimos necesarios para que funcione. No se requiere que haya una superdepuracion para que trabaje. Igual lo har. Con el tiempo, si encuentra que le gusta el tema, le ir quitando toda la redundancia que tiene por doquier, y seguramente lo escribir mucho mejor. Una buena manera de unir todas las macros que se fueron colocando una debajo de la otra, es colocarles un apostrofo. Cuando se coloca un apostrofo, el programa ignora las lneas, pues reconoce que solo son lneas informativas. As, el cdigo de la primera macro seguir derecho en la segunda y as sucesivamente. Por ello ver que los encabezados de las macros quedan, para que nemotcnicamente uno recuerde todas las macros que se construyeron para realizar toda la tarea. He preferido colocar las imgenes del cdigo tal como se ve en el editor del visual basic, si lo desea puedo enviarle esta macro a su correo, previa verificacin de que haya realizado la compra legal del libro.
438
439
440
441
442
443
444
445
446
447
ULTIMAFILA = Cells(Application.Rows.Count, 1).End(xlUp).Row ChDir "C:\Documents and Settings\Administrador\Escritorio" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\Administrador\Escritorio\CG03013.P03", Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:= _ False, Space:=False, Other:=False, FieldInfo:=Array(1, 2), _ TrailingMinusNumbers:=True Range("A1") = "TITULO" Columns("A:A").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$A$" & ULTIMAFILA & "").AutoFilter Field:=1, Criteria1:="=*|*", _ Operator:=xlAnd Range(Rows("2:2"), Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp ActiveSheet.Range("$A$1:$A$" & ULTIMAFILA & "").AutoFilter Field:=1, Criteria1:=Array("" _ ,_ "-----------------------------------------------------------------------------------------------------------------------------------------" _ ,_ "--------------------- ------------------ ------------------- ---------------------" _ ,_ "-----------------------------------------------------------------------------------------------------------------------------------------" _ ,_ "===================== ================== =================== =====================" _ ), Operator:=xlFilterValues Range(Rows("2:2"), Selection.End(xlDown)).Delete Shift:=xlUp ActiveSheet.Range("$A$1:$A$" & ULTIMAFILA & "").AutoFilter Field:=1, Criteria1:="=*===*" _ , Operator:=xlAnd Range(Rows("2:2"), Selection.End(xlDown)).Delete Shift:=xlUp Selection.AutoFilter Range("B1") = "Asteriscos" Range("B2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],8)" Selection.Copy Range("A1048576").End(xlUp).Offset(0, 1).Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Columns("A:B").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$B$" & ULTIMAFILA & "").AutoFilter Field:=2, Criteria1:=Array("*" _ , "**", "***", "****", "*****"), Operator:=xlFilterValues Range(Rows("2:2"), Selection.End(xlDown)).Delete Shift:=xlUp Selection.AutoFilter Columns("B:B").Delete Shift:=xlToLeft Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(11, 1), Array(45, 1), Array(73, 1), Array(75, 1), _ Array(94, 1), Array(114, 1), Array(134, 1)), DecimalSeparator:=".", _ ThousandsSeparator:=",", TrailingMinusNumbers:=True Columns("A:I").Select Columns("A:I").EntireColumn.AutoFit Range("B1") = "sd" Range("C1") = "sdf" Range("D1") = "sdfds" Range("E1") = "sdfsdfdsffsd" Range("F1") = "sdfsdfsdfsdfdsf" Range("G1") = "sdfsdfsdfsdfsfsfd" Range("H1") = "dsfds" Range("I1") = "reterdvfvx" Range("I2").Select ActiveCell.FormulaR1C1 = "=RC[-6]&RC[-4]&RC[-3]&RC[-2]" Selection.Copy Range("G1048576").End(xlUp).Offset(0, 2).Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
448
Application.CutCopyMode = False Selection.End(xlUp).Select ULTIMAFILA2 = Cells(Application.Rows.Count, 2).End(xlUp).Row Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("A1") = "Serial" Range("A2") = 1 Range("A3") = 2 Range("A2:A3").Select Selection.AutoFill Destination:=Range("A2:A" & ULTIMAFILA2 & ""), Type:=xlFillDefault Range("A2:A" & ULTIMAFILA2 & "").Select Range("A1").Select ActiveWorkbook.Worksheets("CG03013").Sort.SortFields.Clear ActiveWorkbook.Worksheets("CG03013").Sort.SortFields.Add Key:=Range( _ "J2:J" & ULTIMAFILA2 & ""), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal xlSortTextAsNumbers With ActiveWorkbook.Worksheets("CG03013").Sort .SetRange Range("A1:J" & ULTIMAFILA2 & "") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Columns("B:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("F2").End(xlDown).Offset(-1, -2).Select Range(ActiveCell, ActiveCell.Offset(0, 1)).Select Range(Selection, Selection.End(xlUp)).Select Selection.Cut Range("B1").Select ActiveSheet.Paste Range("D1") = "4353" Range("E1") = "43534535t3" ActiveWorkbook.Worksheets("CG03013").Sort.SortFields.Clear ActiveWorkbook.Worksheets("CG03013").Sort.SortFields.Add Key:=Range( _ "A2:A" & ULTIMAFILA2 & ""), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("CG03013").Sort .SetRange Range("A1:L" & ULTIMAFILA2 & "") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").End(xlDown).Select Range("C" & ULTIMAFILA2 & "").Select Range(Selection, Cells(1)).Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = "=+R[-1]C" Columns("B:C").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$L$" & ULTIMAFILA2 & "").AutoFilter Field:=12, Criteria1:="=" Range(Rows("2:2"), Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp Columns("L:L").Delete Shift:=xlToLeft Range("L2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-5]=""CR"",-VALUE(RC[-6]),VALUE(RC[-6]))" Range("M2").Select ActiveCell.FormulaR1C1 = "=VALUE(RC[-5])" Range("N2").Select ActiveCell.FormulaR1C1 = "=VALUE(RC[-5])" Range("O2").Select ActiveCell.FormulaR1C1 = "=+RC[-3]+RC[-2]-RC[-1]" Range("L2:O2").Select Selection.Copy Application.Goto Reference:="R1048576C1" Selection.End(xlUp).Select ActiveCell.Offset(0, 11).Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste
449
Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Columns("F:K").Select Selection.Delete Shift:=xlToLeft Columns("F:I").Select Selection.NumberFormat = "#,##0.00_);[Red](#,##0.00)" Range("A1") = "Serial" Range("B1") = "Cuenta" Range("C1") = "Nombre de la cuenta" Range("D1") = "Tercero" Range("E1") = "Descripcion" Range("F1") = "Saldo inicial" Range("G1") = "Debitos" Range("H1") = "Creditos" Range("I1") = "Saldo final" End Sub
Para finalizar: Puede ver que todo esto se ha construido bsicamente usando el grabador de macros. Usamos la tcnica de definir la ultima variable un par de veces al definir la ltima fila, y uno que otro activecell.offset, un par de claves que una vez conocidas son muy sencillas. No hubo necesidad ni siquiera, de usar algn procedimiento de recorrido como For next o Do until. Espero
que
todo
lo
que
hay
aqu
le
sea
de
utilidad,
puede
escribirme
mi
email,
xitos y bendiciones
450
Archivo de Internet xlfdic.xls Diccionario de Formulas de Peter Noneley. Referencias de estos sitios webs fueron traducidas al espaol por el Autor, adaptadas y enriquecidas con las situaciones del da a da contable.
451
Agradecimientos La dificultad ms grande que tuve que superar para sacar este libro adelante fue el condicionamiento que el medio ejerce sobre uno. Es terrible como el prejuicio hacia el no, hacia la negacin reina casi en toda parte. Me parece tenaz como en cada una de las fases, mucha gente que uno considera y la tiene en su opinin como muy importante en orden de estimacin, son a veces las primeras en desanimarte, personas que en lugar de allanar el camino, pretenden mostrarte todas las dificultades, sin proporcionar valor agregado. Hubo de todo: pensamientos malevos que atacan tu ego y tu capacidad, hasta ideas tales como que el mundo se acaba el 23 de diciembre de 2012. Este libro fue sacado contra viento y marea, cuando llegu al momento en el cual haba terminado el manuscrito necesitaba un o una mecenas. Alguien que creyera en m, pero que no me viera con nimo de lucro, solo que me extendiera una mano. Cosa difcil hoy en da, pues es tremenda la cultura del CVY : Como voy yo. Y no es un como voy yo de una simple comisioncita, es una porcin grande que quieren usufructuar de ti. Solo la amistad poda suplir mi necesidad, y as fue. Tengo que agradecer a Nelsy Gomez Solarte, quien desde el momento que le cont que ya tena el libro listo, ha credo en este proyecto a ojo cerrado. Casi no tener amigos es muy triste, pero tener amigos que de verdad tienen la capacidad de extender una mano y ayudar, como dice la propaganda de Mster Card, no tiene precio. La lucha de los emprendedores solo se ve iluminada, irrigada por el poder de la amistad y la solidaridad, valores intangibles que en un panorama econmico poco se estiman y sin los cuales, quien sabe como estara la economa en realidad.
452