Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Excel Avanzado
Manual Excel Avanzado
Supongamosquelanotafinalsecalcularbasndonosenelpromediodenotasqueobtuvocada estudianteensusparciales. Porlotantoaplicaremoslafuncinpromedio: =PROMEDIO(B2:D2) Recordemosquecualquierfuncinquevayamosaaplicardebemosposicionarnossobrelacelda,y comenzarconelsigno=oensudefectoelsigno+. Porotroladosihubiramosqueridotomarencuentasolodosdelosparcialesdentrodel promediotendramosque: =PROMEDIO(B2;D2) Enelcasodequequeramostomarrangosdiscontinuosestoseaplicaradelasiguienteforma: =PROMEDIO(B2:D2;H2:J2) Laplanillahastaahoraquedaraas:
Ademsenelcasodecopiarestafrmula,podramosrealizarlomediantelaopcinclsicadedar sobreelbotnderechosobrelacelda,seleccionarlaopcincopiar,yluegomarcarelrango(en estecasodeE3:E8)ydarlepegar. MasalldeestaclsicaopcintambinsepodracopiarlaformuladeformasimpledandoDOBLE CLICenelbordeinferiorderechodelaceldaquecontienelaformulaacopiar. Enlasiguientecolumna,seharunbreverepasodelaformulacondicionalSI. Deacuerdoaestaformuladeberaplicarse: =SI(prueba_lgica;valorverdadero;valorfalso) Enelcasodelaplanillaquemanejamosanteriormente,estaquedaradeestamanera: =SI(E2<5;Reprobado;Aprobado) SituviramosmsdeunafuncinSIparaestablecer,recordarquesiemprevamosatenerque evaluarelconjuntodeopcionesdenuestroproblema(convienecomenzardesdeelnivelmasbajo) yharemosunafuncinmenosqueopcionesdenuestrocaso. =SI(E2<5;Reprobado;SI(E2<=7;Parcial;Aprobado)
Vamosaarmaruncuadroadicionalanexoalaplanillaparaimplementarotrasfunciones:
Enestecuadrocalcularemoscuantosfueronlosalumnosqueobtuvieroncomocalificacin Aprobado,ParcialyReprobado.Asuvezcalcularemosconrespectoaltotaldealumnos,el porcentajequeobtuvocadacalificacin. LoharemosaplicandolafuncinCONTAR.SI,delasiguientemanera: =CONTAR.SI(F2:F8;Aprobado) Tambinpodramoshaberescrito: =CONTAR.SI(F2:F8;A12) Veamosasuvezquesipensramosencopiarestafrmuladeberaquedar: =CONTAR.SI($F$2:$F$8;A12) Larazndelsigno$eselhechodefijarelrangoF2:F8yaquelascalificacionessonfijas,mientras quelaceldaA12esrelativayaquecambiardefilaalcopiar. EnlafuncinCONTAR.SItenemosencuentaelrangoaevaluar,ycomosegundoargumento tenemoselcriterioatomarencuentaparacopiar. SiaplicamoslafuncionCONTAR,otambinCONTARA,podremossabercuantosalumnos tendremos. =CONTAR(E2:E8) EnestecasolafuncinCONTARaplicaperfectamenteparaestecasopuestoquelasceldasquese evaluantienencontenidonumrico. Enelcasodequererhacerunrecuentoporapellidos: =CONTARA(A2:A8) Aquaplicaperfectamenteyaqueestafuncinnospermiteevaluarceldasnovacas.
VemosqueenestecasonosoloseapliclafuncinSI,sinoquesecombinconlaopcinY (tambinpodriamoshaberaplicadolaopcinO),delasiguientemanera: =SI(Y(opcion1;opcion2;..);valorverdadero;valorfalso) =SI(O(opcion1;opcion2;..);valorverdadero;valorfalso) EnelcasodecombinarconlaopcinY,recordemosqueestaramoshablandodequesise cumplenUNAYCADAUNADELASOPCIONESENFORMASIMULTANEAseaplicaralaopcin verdadera,yenelcasoquenofueraasseaplicalaopcinfalsa. MientrasqueenelcasodelasopcionesquedamosmedianteelO,conqueunadelasopciones fuereverdadera,yaseaplicaralaopcindelvalorverdaderoenlacondicin,ysolosinose cumpleningunadelasopcionesseaplicaraelvalorfalso.
Pasemosahoraaunnuevoejemploycontinuamosenlaaplicacindefunciones:
Enestecasoaplicamosunafuncindebsqueda,quesedenominaBUSCARV. Recordemosquelaformadeutilizarestafuncindebsquedaeslaquesedemuestraa continuacin: =BUSCARV(valorbuscado;matriz;nmerodecolumna;[ordenamiento]) Enelcasoparticulardelaplanilla =BUSCARV(A13;A2:C8;3;FALSO) Vemosaququeelvalorbuscadohacereferenciaalaceldadondeelusuariocargareldatoenel quesebasarlabsqueda.Estedatonodebeserpartedelamatrizdebsqueda(A2:C8)sino, estonotendrasentidoenlabsqueda.Luegosecargalamatriz,alhacerreferenciaalamatrizno cargamoslosttulosdelamisma,soloelcontenido(registrosdelamisma),luegocargamosla referenciaalnmerodecolumnaquesevaaextraer,enestecasolacolumna3yaqueesladel stock(columnacondatoaextraer)yporltimocomoargumentoOPCIONALelordendentrodela matriz,enestecasofalsoyaquelaprimeracolumnadelamatriznoestordenadaenforma ascendente. AdemsenelcasodelargumentoopcionaldeORDENestotambienesrealmentesignificativoal momentodeaplicarlacoincidenciaenlabsqueda.SiesteargumentoesFALSOylabusquedano encuentraeldatoprecisoretornaunerror.Porejemplo:
Enestecaso,masallqueelproductoA5565noseencontrdetodasformasretornelvalorde stockdelartculocuyacoincidencianoeraexacta,sinoaproximada. Enmuchoscasoscuandolabsquedanotieneporqueserexacta,esteargumentoVERDADERO puedeayudarnosaencontrareldatomscercanoquecoincidaconnuestrabsqueda. EncambioanteriormentecuandoelargumentofuecambiadoporFALSO,labsquedanonos retornabaningnvaloryaqueeldatonoloencontraba(concoincidenciaexacta)enlamatrizde registros. Enotroambitotambinserabuenoenunaplanillacontrolarlosingresosdeinformacin,yespor estoquevamosaintroducireltemaVALIDACINDEREGISTROS. VALIDACINDEDATOS Enelcasodelaplanillaquepresentamosanteriormente,vamosacomenzarestetemade validacintratandodequeelusuarioselimiteaagregarartculosconSTOCKentre0y300,yno puedaintroducirunnmeromenoracero,nimayora300. Veamoscomooperar: 1. Pintamoslasceldasdestock(celdasenlasquevamosadarlaregladevalidacin) 2. Luegovamosalmendedatosvalidacin 3. Establecemoslaregladevalidacinaoperar 4. Opcionalmentedefinimosmensajeentrante 5. Opcionalmentedefinimosmensajedeerror
TenemosotrasopcionesaldesplegarelcuadroPermitir,quelasusaremosenalgunosejemplos posteriores.
VeamosquesucedecuandoaplicamostambinelusodelasolapadeMensajeEntrante
Enestecasoagregamosunartculoalalista,yluegovemoscomoelartculoseintegraenforma automticaalcuadrocombinadoenlaceldaquetienelavalidacin.
FORMATOCONDICIONAL Estetemaatratarserinteresanteparaaplicardinamismoencuantoalformatodeceldas. Tambinnosservircomoavisoendeterminadasplanillasenlasquebusquemosquelamisma cambiecuandounfactorsecumpla. EstosetratadeunacombinacinentrelafuncincondicionalSIylaaplicacindeformatos (bordes,sombreados,subrayado)enceldasyrangos. Tenemosbsicamentedosmanerasdeaplicarestetema: 1. Aplicacindelformatocondicionaldeacuerdoalvalordeunacelda 2. Aplicacindelformatocondicionalvinculadoaunaformula. Aplicaremosenprimerlugarunformatocondicionaldeacuerdoalvalordeunacelda. PorejemplosiqueremosquelaplanillanossealetodoartculocuyoStockestepordebajodelas 70unidades.
Veamosqueaqucomenzamossealandoelrea(A2:C9),luegofuimosalmenformato formatocondicional,ydentrodelreadedefinicindeformato,aplicamoscomocondicinla dependenciadeunaFrmula,ydentrodelrangodondeseevalalafrmula,establecimosuna referenciaalaceldaC2. NtesequelaceldaC2lareverenciamosaplicandoenformafijalacolumnayvariableparalafila ($C2)yaqueelformatocondicionalloaplicarparacadaunadelasfilasmarcadas(desdefila2a fila9)peroloaplicarsiemprebasndoseenelvalordelacolumnaC. Asuvezesimportantenotarquelaceldaalaquerefieretodaformuladelformatocondicional DEBERSERSEALADACONELMOUSEPARAQUENOLOTOMEENFORMATOTEXTOY AGREGUEAUTOMATICAMENTECOMILLASALASINTAXIS. Delamismamaneraquelavistaanteriormentepodramosaplicarvariascondicionaleseneste formato,perosiempreconlalimitacindehasta3condicionesaplicadas.Comovemosa continuacin:
Enestecasoseleccionamosenprimerlugarlamatriz(A2:D5)yluegoloquehicimosfueaplicarel formatocondicional,dondelacondicindependedeunafrmulayenlamismadefinimoslacelda C2enlacualfijamoslacolumnaydejamoscomovariablelafila($C2)ycomparamosconel operadormenoroigualalresultadodelafuncinHOY(),lacualnosobtendrenforma automticalafechaactualdelsistema. BSQUEDASDEINFORMACIN MencionamosenunejemploanteriorquemediantelafuncinBUSCARVpodiamosrealizar bsquedasenmatrices,yextraerdelasmismasundatodedeterminadacolumnaenparticular. EnesteejemploveremosnosolamentelaaplicacindeBUSCARV,sinotambinlafuncin BUSCARHylaslimitacionesquetenemosenelusodedichasfunciones.
1. 2. 3. 4. 5.
Veamoscomoquedatranspuestalamatrizoriginal:
Porotrolado,unadelasrestriccionesimportantesquehayquedestacartantoenelBUSCARV comoenelBUSCARHeselhechodenocontarconlaposibilidaddebasarmeenundatobuscadoy quererobtenerunacolumnaalaizquierdaenelordendelamatriz,ounafilahaciaarribadeldato buscadoenelcasodeBUSCARH. Porejemplosienelejemploanterioryomebasoenladescripcin(comodatobuscado)yenbase aladescripcinpretendoobtenerelcdigodedichoartculo. Veamosporlotantolaaplicacindedosfuncionesquenospermitirnsolucionarestetema.Las funcionessonINDICEyCOINCIDIR.Laaplicacineslasiguiente: Elresultadoser5(Nrodendice) EnestecasoaplicamoslafuncinCOINCIDIR,ydentrodesusargumentoscolocamos,elvalor buscado,endichoejemplolaceldaA13,dondeelusuarioingresladescripcindelartculo,como segundoargumentoindicamoslacolumnaB(rangoB2:B9)queesdonderealizaremoslabsqueda dedichadescripcin,yporltimocomotercerargumentoelnmero0queestindicandoquela coincidenciadebeserexactaconeldatobuscado.
EncuantoalafuncinINDICElosargumentosson,lamatrizdebsqueda,dondeaqusealela nominadecdigosdeartculos,ycomosegundoargumentoelnmerodefiladelndicequedebe buscar,enestecaso5.Estenmero5loobtuveviendoelresultadoobtenidoporlafuncin COINCIDIReneldatoanterior. Porlotanto,yresumiendo,estopodrasersimplificadoenunasolacelda,delasiguienteforma: LafuncinINDICE,meextraeeldatodeunamatrizde acuerdoalaubicacindeestedatoendichamatriz. MientrastantolafuncinCOINCIDIRloqueest haciendoesbuscandoeldatoenunamatrizde informacin,ybuscandolaposicindeestedato,con unacoincidenciaexacta.
FUNCIONESDEFECHAYHORA
AplicaremosenesteejemplolasfuncionesdefechayhoraquenosproveeExcel. Paracomenzar,siyoquisieraobtenerlosdascorridosenqueseimplementcadaunadelas tareas,tenemosqueentenderqueTODAfechaqueingresemosenExcel,estafechalalecturaque tendrserennmerodedas,comenzandoconelnmero1correspondienteal01/01/1900. Porlotantosienunaceldayocolocolafuncin=HOY()yestamedevuelvelafechaactual, supongamos17/10/2007,enrealidadelcontenidoREALdelaceldaserelnmero39372. Bastaconcambiarelformatodelacelda,aunformatonumricoyvemoselresultado. Entonces,siyonecesitosaberlosdasquetomcadatareasimplementepuedorestarlasceldas decolumnaCycolumnaB,ytengoelresultadoesperado.(NOOLVIDARASIGNARFORMATO NUMRICOALACOLUMNAD,paraobtenerencantidaddedas).
Hastaaqunohemosaplicadoningunafuncinenparticular.Eltemasedacuandotengoque calculardashabilesentrelafechadeinicioyfechadefin.Parautilizarestetipodefunciones, ExcelnosproveedeCOMPLEMENTOS.EnestecasodebemoshabilitarelCOMPLEMENTOde HERRAMIENTASPARAANLISIS,delasiguientemanera: EnelmendeHerramientasComplementos tendremoslaposibilidaddeverloscomplementos quetenemosypodremosmarcarlosque necesitemos. Recordarquetodosloscomplementosque marquemosquedarnhabilitadosdeahoraenms enTODASlassesionesqueiniciemosconExcel, dentrodedichaPC.
Enelsiguienteejemplovamoscontemplarlosdasparalaentregadedeterminadospedidos. Silosdasfuerancorridossimplementedigitamos:=B2+C2
TrabajandoconHORAS Veamosenlasiguienteplanillaenlaque ingresamosloshorariosdeentradaysalidadeun empleadoalaempresa. Nosepresentanproblemas,alrestarencadadade lasemanalashorasdesalidaylasdeentrada. Ahoraalmomentodecalculareltotaldehorasque esteempleadorealizentodalasemana,veamoslo quesucede: EnestecasoaplicamoslafuncinSUMAparatomar encuentaelrangodehoras,ypoderobtenereltotal dehoras.PeroExcelmuestraunresultadoquenoes deltodocorrecto. Enrealidadelclculointernamentelorealiza correctamenteperoelresultadoloexpresaendas,y porlotantoestosera1da,19horas,y14minutos. Lonicoquehacemosescambiarelformatodela celda,paraquereflejeelresultadoenTOTALde horas.Veamoscomorealizarestepaso:
BUSCAROBJETIVOYSOLVER Estasdosherramientasnosservirnendeterminadasocasionesenlasquequeramosrealizar previsionesoestimacionesenExcel. Pasemosalsiguienteejemplo: Enestecasomanejamosunejemplodondeunrestauranteque vendecaf,tienesupreciounitarioen30pesos,yatravsdela cantidaddetazasvendidasgeneraeltotaldelarecaudacin. Debemostomarencuentaqueestaestructurasedebecontemplar paralaaplicacindeBUSCAROBJETIVO,dondeunafrmuladebe generarladependenciadeunconjuntodefactores(celdasdependientes)queresuelvenel esquema(enestecasolarecaudacindependedelacantidaddetazasvendidasydelprecio unitario). Parautilizarlaherramienta,vamosaMenHerramientasBuscarObjetivo:
Enestecaso,yopodrahaberresueltoelsistemaperfectamentemedianteunaregladetres simple,peroencasosmscomplejoscomoelquevemosacontinuacinelclculodela estimacinseraposibleconmayoresfuerzo: Enestecasoplanteamosunejemplodondeseotorgaun prstamosde20000aunatasaanualdel8%ydondese pagarn12cuotas.Lafuncinpagocomovemosnoscalcular deformaautomticalacuotaapagar,queendichocasoser de1739(Nota:elvalorresultantesernegativoyaquelas funcionesfinancierastomanlosegresosconestesigno). Ahora,veamosquesucedesienestecasoquisiramos estimarcualseraelmontodelprstamoquepodramos obtenersisemantienenlascondiciones,perosabemosque podemospagarunacuotamximade1500.Paraesto aplicamoslaHerramientaBuscarObjetivodelasiguientemanera:
Elsistemanosresuelveydirquemedianteelpagodeunacuotade1500ymanteniendolas condiciones,llegaremosaobtenerunprstamode17243. Laherramientasiempretrabajaconunavariableacalcularyunafrmulacuyoresultadofinalser estimadoporeloperador. Veamosqueenesteltimoejemplonuestrosupuestoesestimarunvalordecuotade1500(lase quedebesernegativo,portomarsecomounegresofinanciero),ymanteniendolascondiciones, secalcularelmontdelprstamoalquelapersonapodracceder. EnelcasodelaherramientaSOLVER,actacomoCOMPLEMENTOdeExcelporlotantohayque habilitarlo,dentrodelmenHerramientasComplementos,ytildarlacasilladeverificacinen casodequedichaherramientanoestuvierepreviamenteinstaladaenlaPCqueestemos manejando.
Enestecasoestablecimosunaplanillasimilaralaplanillaquetrabajamosanteriormente.Setrata deunrestaurantequevendevariostiposdeCaf,entreellosCafcomn,CafCortado,Caf Capuchino.AplicamosenelmenHerramientasSolverlaconfiguracindedichosistema. Entonces:enCeldaObjetivoestablecemoslaceldaquevamosaestimar,enestecasolaceldadel totalrecaudadoporelrestaurante,luegoestablecemoselimportedelvalorestimadoparadicha celda. Enlareferenciadecambiandolasceldasestablecemoslasceldasquesevanacalcular automticamenteporlaresolucindelsistema,enelcasonuestromarcaremosmediantelatecla CTRLcadaunadelasceldasquetienelacantidaddetazasdecadatipodecaf. Porltimo,enelreainferiorizquierdadeestapantallaestablecemosmedianteelbotnagregar, la/lasrestriccionesdelsistema,enestecasonuestranicarestriccinfueagregaralaceldaB10 quecontieneeltotaldetazasvendidasdecafcapuccino,queellimiteesquedichacelda contengaunvalormenora50.Podemosagregarmltiplesrestriccionesyaquecadavezque queramosagregarunarestriccinmas,solopresionaremosenelbotnagregarloquenos permitiriragregandonuevasrestricciones.Tambintenemoslaposibilidaddecambiar,y eliminarrestriccionesmediantelosbotonesasociados. UnavezqueterminamosladefinicindedichapantallamedianteelbotnRESOLVER,elsistema nosgeneraunasolucinparaelesquemapropuestoynosmuestralasiguientepantalla:
Mdulo:AnlisisdeInformacin Enestemduloseverlaaplicacindeherramientasvolcadasalanlisisdeinformacindentrode Excel. Enprimerlugar,conunejemploseaplicarelusodelosdiferentestiposdefiltrosquenosprovee laherramienta. Veamoselsiguienteejemplo: Enestaplanillaaplicaremoselprimertipode filtro,queserelAutofiltroyquenospermitir aplicarfiltrosautomticosenlaplanilladeuna formamuysencilla. Paraaplicarlobastarconposicionarnosen cualquierceldadenuestrabasededatosy luegomedianteelmendeDaotsFiltro Autofiltrocomenzaremoslaaplicacindel mismo. Laplanillanosquedardelasiguientemanera: Veamosenprimerlugar,quecuando nosotrosmarcamosenelmendedatos filtrosautofiltro,esteactacomoun subrayado,dondepodemostildarydestildar estaopcin,encasoquequeramosdejade utilizarelAutofiltroenalgnmomento. Elautofiltronosdaestaopcindelcuadro desplegableenelttulodecadacampodela basededatos. Bastarconpincharenelcuadrodesplegable parapoderseleccionarelcriterioaaplicar parafiltrarlainformacinsobredichocampo. Porejemplo,sienestaplanillayoquisiera soloverlasventasdelvendedorDaz,solo seleccionarDazenlasopcionesdelcampo Vendedores,yestomeaplicarautomticamenteelfiltrocondichocriterio. Acontinuacinsedaelejemplodecmoaparecelaplanillaconelfiltroaplicado:
CuandoseleccionamoslaopcinPersonalizar,podremosaplicarcriteriosunpocomasavanzados parafiltrardichocampo:
Undetallesumamenteimportanteatomarencuentaeselhechodequesiendichaplanilla quisiramosenalgnmomentoobtenerlasumadeventasdel2005peronicamentedelosdatos visiblesnopodemosaplicarlafuncin=SUMA(C2:C15),puestoquetomaratodaslasfilas(tanto visiblescomonovisibles). Paraestetipodecasosaplicamoslafuncin=SUBTOTALES(9;C2:C15) SUBTOTALES(nm_funcin;ref1,ref2,...) Nm_funcin 1 2 3 4 5 6 7 8 9 10 11 Funcin PROMEDIO CONTAR CONTARA MAX MIN PRODUCTO DESVEST DESVESTP SUMA VAR VARP
Veamosenelejemplodado,losresultadosdelafuncinSUMAySUBTOTALESaplicadospara dichorangodeceldas(C2:C15).
EndichoejemploseaplicasobreelcampoVendedores,elcriteriodepersonalizacinyluegoel filtroquedeterminaquedichocampomuestrenicamenteregistrosqueterminaconletras.
VeamosquecomocriteriosaplicamoslacomparacinentrelaceldaC2yD2,dondesolo colocamoslafrmula=C2>D2 Enelcuadroquenosaparececuandoaplicamoselfiltro: ComoRangodelalista:A1:D19(marcamoslabasededatoscompleta) RangodeCriterios:F7:F7(marcamoslasdosceldas,elttulodelcriterio,ylaceldaquecontieneel criteriopropiamentedicho) Veamosqueendichocuadroenestecasoaplicamoslaopcinqueaparecepordefectoquees: Filtrarlalistasinmoverlaaotrolugar,yaqueloquequeramoseraaplicarelfiltrodirectamente enlabasededatos. Enlasiguientepantallaseexponecomoelfiltroaplicadichocriteriodirectosobrelabasede datos:
Veamosquesucedesiloscriteriossonlosmismosperonorespetamoseltemadequeseanenla mismalnea:
Veamosahoraenunejemplodondeapliquemosestemismofiltroperoconunaextraccindeuna subbasededatosparanomodificarlabaseoriginal:
TablasDinmicas
Utilizandolabasededatosdelejemploanteriorgeneraremosnuestraprimeratabladinmica. Estaherramientanospermitircruzardediversasformasinformacindeunabasededatos,tanto seaunabasearmadaenExcel,comotambinenfuentesdedatosexternas(comoarchivosde texto,basesdeAccess,SQL,DBase,etc.) ParacomenzarnosguiaremosmedianteelAsistente,queencontramosenDatosInformede TablasyGrficosDinmicos,comovemosenlasiguientepantalla:
Aquloquehicimosfuearrastrar(conelbotnizquierdopresionado)elcampodevendedoresal readeFila(vemosquecadavendedorapareceenunafiladiferente),yllevamoselcampode Ventas2005alreadeDatos(vemosquelasventasde2005aparecencadaunaendicharea). HayquetenerpresentequeExcelesrealmentesensiblerespectoacadaunadeestasreasporlo tantotratemossiempredetrasladarcadacampohaciaelreacorrespondienteenlaformamas exactaposible. Encasodequecambiemosdeopininynosparezcamejorobtenereltotaldeventas2005pero decadareginynodecadavendedorpuedotrasladarelcampodevendedoresderegresoala Listadecamposdetabladinmica,ytrasladaracontinuacin,elcampodeReginnuevamenteal readefila:
Aquvemosquequitamoselcampodevendedores,yahoravamosacolocarelcampodeRegin, solovolvemosaarrastrardichocampoalreadefilasynosquedacomovemosacontinuacin:
Siquisiramosobtenerademsdelasventasdel2005,tambinlasdel2006,simplemente agregamosesteltimocampoenelreadedatos:
Alpresionarsobreelbotnvemosquelatabladinmicarecalculalosvaloresynosmuestrael detallequevemosacontinuacin:
Vemosacontinuacinlaimagendenuestratabladinmicaactualizadamedianteelasistentede tablasdinmicas:
Alpresionarelbotndeactualizarenlabarradeherramientasdetabladinmica,nosapareceen lalistadecampos,elnuevocampoPASquepodremosutilizarparaagregarenlatabladinmica:
AgreguemosdichocampoenelreadePginayveamoselefectoqueresultadeesto:
2. Enlapantallaquenosaparecepodremosseleccionareltipodeoperacinqueaplicaremos sobredichocampo:
Tenemoslaopcintambindeagregarelmismocampounsinnumerodevecesparaqueeste reflejeoperacionesdiferentes.
Enlapantalladeconfiguracindecampo:
Latabladinmicanosmostrarelsiguienteresultado:
Enlaprimerapantalladelasistente,elegimoscomoopcinFUENTEDEDATOSEXTERNA:
Alpresionarelbotnsiguiente,vemosqueelasistentecambiaconrespectoalqueveamosenel captuloanterior:
Cuandoseleccionamoslabasededatos,enestecasoNEPTUNO,nosaparecelasiguientepantalla:
Aqunosreflejalasdiferentestablasdelasqueestcompuestalabasededatos,ydelaque podremostomardeterminadastablas,completas,porejemploladeCLIENTES,otambin
Enestapantallatendremoslaposibilidaddefiltrarlainformacindeloscamposdeacuerdoauno ovarioscriteriosqueseleccionemos.
Enlasiguientepantallapodremosseleccionarunordendeterminadoaestablecer,deacuerdoa uncampoqueseleccionemos,enformaascendenteodescendente.
Llegamosenestaetapafinal,alamismapantalla,queenelcaptuloanteriordondetendremosel esqueletodelatabladinmica:
MediantelaopcindeGrficodinmico,estenosgenerarenunanuevahojaelgrficodinmico quesedesprendedelatabladinmicageneradaanteriormente.
Paracomenzarnosposicionamosencualquieradelosdatosdenuestraplanillayvamosal asistenteparagrficosmedianteelmenInsertarGrfico
Presionamosensiguienteypasamosal3erpasodelasistente:
AlpasaralasolapadeLneasdeDivisin:
AREASDELGRFICO Elgrficoestformadobsicamentepordiversasreas: readelgrfico(elfondoblancoquevemosdentrodelgrfico) readetrazado(elfondogrisenelqueposicionamoslasseries) Ttulodelgrfico(ennuestrocasoexportaciones) Series(ennuestrocasolascolumnas,queformanlasexportacionesacadapas) Ejedecategoras(ejex) Ejedevalores(ejey) Leyenda(cuadroquetienelarepresentacindelaseries) Ttulodelejedecategoras(Aosennuestrocaso) Ttulodelejedevalores(Importesennuestrocaso) Enelcasodequerercambiarcualquieradelasreasdelgraficorecordarquesimplementenos posicionamossobredichareayconelbotnderechonosdesplegarlasopcionespropiasdel reamarcada. Parapoderrecurriralamodificacindecualquieradelospasosquerecorrimosmedianteel asistente,nosposicionamossobreelreadelGrfico(reablanca)yconelbotnderecho: Tipodegrfico(paso1delasistentedondeseleccionamoslacategoradelgrfico) Datosdeorigen(paso2delasistentedondeindicamoselrangodedatos) Opcionesdelgrfico(paso3delasistentedondeindicamosttulos,leyendas,ejes) Ubicacin(paso4delasistentedondeseleccionamoslaubicacindeseadaparael grfico).
Porltimosinosparececonveniente,tambinpodremosubicarcomofondodelgrficouna imagen,seleccionandolamismadesdesuubicacineneldisco:
Parallegaraesteresultadofinal,comenzaremosporgenerarconlosdatosungrficodebarras seleccionandoelrangoagraficar(enestecasodesdeA1:K5).AllvamosaInsertarGrfico:
SeleccionamoselgrficodetipoBARRASprimersubtipoqueeseldeBARRAAGRUPADA,luego ledamosclicenelbotnsiguiente:
Aqudefinimoslosnombrestantodelgrficogeneralcomotambindelosejes.
VemosqueelefectoinmediatodeestaaccinesquitarlareferenciaalejeX.
AplicandolosretoquesdeFormatoderea,degradados,vistosenelcaptuloanterior,llegamosa unaimagensimilardelgrficoquedebamosgenerar:
GrficosconDobleEje Dadalasiguienteplanilla,generaremosungrficodelneasquelarepresente:
Generamosentonceselgrficodelneascorrespondiente,obteniendoelsiguienteresultado:
Estaopcinnosdesplegarlasiguientebarraconlaquetrabajaremosenlossiguientespasos:
Vamosatomarentoncesdelabarradeherramientas,elCuadroCombinado,yalseleccionarnos permitirdibujardichocuadrosobrelaplanilla:
Porltimoenestecuadrolaslneasdeuninverticalesrepresentanlacantidaddedatosquese vanavisualizarporpantallaquesemuestreenelcuadrocombinado.
Enestapantallacontrolaremosnuestroformulario.Aplicaremosunvaloractual.Elvalormnimolo estableceremosen1,yelvalormximoen30,yelincrementoen1.Estoquieredecirqueel
MduloMacrosenExcel
ConceptoGeneral:
Macro:
UnprogramaescritoograbadoporelusuarioquealmacenaunaseriedecomandosdeMicrosoft Excelquepuedenutilizarseposteriormentecomounnicocomando.Mediantelasmacros puedenautomatizarselastareascomplejasypuedenreducirseelnmerodepasosnecesarios pararealizarlastareasqueseejecutanconmsfrecuencia.Lasmacrossegrabanenellenguajede programacindeVisualBasicparaAplicacionesdeMicrosoft.Tambinpuedenescribirselas macrosdirectamenteenelEditordeVisualBasic. LaideadegenerarmacrosenMicrosoftExcelradicaenlaautomatizacindetareasenlaplanilla electrnica.DeestamaneraquedarimplementadaunasolucinenVisualBasicparaaplicaciones (VBA)queesellenguajedeprogramacinqueseutilizaenlasuitedeOfficeparadesarrollar Macros. Existenbsicamentedosformasdedesarrollarmacros: MedianteelusodelaGrabadoradeMacros MedianteelEditordeVisualBasicparaaplicaciones Comencemosconelusodelagrabadoraenunejemplodondeapliquemostrestareas,enprimer lugarescribiremosHolaenlaceldaA1,luegopondremosNegritayporltimopintaremosde fondoamarillodichacelda. Paraesto,comenzaremosporencenderlagrabadora,paraquecaptecadaunadelastareasque vamosrealizando: LagrabadoralaencendemosmedianteelmendeHerramientasMacroGrabarnuevamacro, comovemosacontinuacin:
Nosaparecerlasiguientepantallaparaconfigurarlagrabacindedichomacro:
Acadamacroquegrabemoslepodemosasignarunnombre,enformapredeterminadala grabadoraasignarMacro1,Macro2. LuegopodremostambinasignarunMtodoAbreviado,paraqueelusuarioquedeseeejecutar rpidamenteunmacropuedaacudiraesteatajodeteclado(porejemploctrl.+T). Podremosgrabarelmacroenelmismolibroenelcualestamostrabajando,podremosgrabarloen unlibroindependiente,otambincomoopcinadicionalpodremosgrabarloenelLibroPersonal, queesalgoascomounabibliotecademacrospersonalesquepodemosejecutarencualquier archivodeExcelquedeseemoseldademaana. Enladescripcinpodemosdarpautasprecisasdedeterminadosdetallesdelastareasque ejecutarnuestromacro. Cuandoconfiguramosdichapantalla,alpresionarAceptar,lagrabadoradeMacrosgenerarun cdigoVBAporcadaunadelastareasquevayamosrealizandodeahoraenmas(nocaptalos movimientosdelMouse,nidelcursorquerealicemos,perosielingresoacualquieradelas opcionesdeExcel). Realizamosacontinuacinlastrestareaspropuestas,yluegodetenemoslagrabacinmedianteel mendeHerramientasMacroDetenerGrabacin.
Seleccionamoselmacroaejecutaryluegopresionamossobreelbotnejecutartalcualaparece enlapantallaacontinuacin:
Enlabarradeherramientasdeformulariosseleccionaremoselbotndecomandoylo dibujaremosenlaplanillaconlaqueestamostrabajando. Elbotndecomandonospermitirdibujarlosobrecualquierlugardelaplanillacon lacualestemostrabando. Esimportanteacotarquedichobotnquedarsobrelaplanillaynoformandoparte delamismaenunaceldaenparticular. Unavezquedibujemosdichobotndecomando,alsoltarelMousenospermitir asignarleunmacroalmismo. EnelcasodequehayamossoltadoelMouseynosquedemossinasignarunmacroal mismo,podemosmedianteelbotnderechosobreelbotndibujadoseleccionarla opcindeAsignarMacro.
Adichobotnpodremoscambiarleelnombre,modificarleeltamaocambiareltextoqueaparece dentrodelbotn. RecordarqueparaseleccionarelbotnsimplementeconelCTRLpresionadodamosclicsobre dichobotnyyapasamosalmodoedicindondeaparecenlospuntosdeagarresobredicho botn. Deahoraenmas,simplementeelusuariopresionardichobotnparaejecutarelmacroasignado. NOTA:Siqueremosasignarunmacroaunaimagenoaunmacropodemoshacerelmismo procedimiento,osea,insertarlaimagenoelgrficoyconelbotnderechoseleccionarlaopcin deasignarmacroparaindicarquemacroasignaremosadichaimagen. Porotroladootramaneraquetenemosdegenerarunaformarpidadeejecucindemacroses generandouniconoenlabarradeherramientasdeExcel. ParaestopresionaremossobrelabarradeherramientasestndarconelBOTNDERECHODEL MOUSE,yseleccionamoslaopcinPERSONALIZAR.
Nosaparecerlasiguientepantalla:
Elbotnnosquedenlabarradeherramientasysimplementecuandopresionemosporprimera vezendichobotnnospermitirasignarleelmacrocorrespondiente.
Nosdesplegarlapantallaquevemosacontinuacin:
CDIGOVBA
ElcdigoVBAsemanejaenidiomaingls.Engeneralellenguajebsicamentesemanejaorientado aeventos. Cadaobjetoseseparamedianteel.(Punto)delasdiferentespropiedadesqueposee.
Conceptosesenciales.
Clase:Esunaagrupacindeobjetosconlasmismascaractersticasypropiedades.
Veamosennuestroprimerejemplo.DentrodelacarpetaMdulostenemosnuestroModulo1y dentrodelmismodesarrollamosdosmacros. NuestroMacro1fuegrabadomedianteelusodelagrabadoraparamacrosyluegocomenzamos mediantelaordenSubelmacrodenominadoPrimeroquesimplementeescribelapalabraHOLA enlaceldaA1. EnformapredeterminadacuandohacemosreferenciaalaceldaA1,MicrosoftExcellotomar sobrelahojaactiva(hojaenlaqueestamosposicionadosalejecutarelmacro). Formasdereferiralahoja: ActiveSheet.Range(A1).value AquhacemosreferenciaalaceldaA1delahojaactiva Sheets(1).Range(A1).Value Aquhacemosreferenciaalahojaconndice1,celdaA1dellibroactivo Sheets(Hoja1).Range(A1).Value AquhacemosreferenciaalahojadenominadaHoja1,celdaA1 RepetimosqueenformapredeterminadaExceltomaActivesheetcuandonosreferimosauna celdadeterminada.
Mtodos.
Lamayoradeobjetostienencomportamientosorealizanacciones,porejemplo,unaaccin evidentedeunobjetococheeseldemoverseoloqueeslomismo,trasladarsedeunpuntoinicial aunpuntofinal. Cualquierprocesoqueimplicaunaaccinopautadecomportamientoporpartedeunobjetose defineensuclaseparaqueluegopuedamanifestarseencualquieradesusobjetos.As,enlaclase cochesedefiniranenelmtodomovertodoslosprocesosnecesariosparallevarloacabo(los procesosparadesplazardeunpuntoinicialaunpuntofinal),luegocadaobjetodelaclasecoche simplementetendraqueinvocarestemtodoparatrasladarsedeunpuntoinicialaunpunto final,cualesquieraquefueranesospuntos. Repasemosacontinuacintodosestosconceptosperoahoradesdeelpuntodevistadealgunos delosobjetosquenosencontraremosenExcelcomoWorkSheet(Objetohojadeclculo)oRange (Objetocasillaorangodecasillas). UnobjetoRangeestdefinidoporunaclasedondesedefinensuspropiedades,recordemosque unapropiedadesunacaracterstica,modificableono,deunobjeto.Entrelaspropiedadesdeun
Conjuntos.
Unaconjuntoesunacoleccindeobjetosdelmismotipo,paralosqueconozcanalgnlenguajede programacinesunarraydeobjetos.Porejemplo,dentrodeunlibrodetrabajopuedeexistirms deunahoja(WorkSheet),todaslashojasdeunlibrodetrabajoformanunconjunto,elconjunto WorkSheets. Cadaelementoindividualdeunconjuntosereferenciaporunndice,deestaforma,laprimera, segundaytercerahojadeunlibrodetrabajo,sereferenciarnporWorkSheets(1),WorkSheets(2) yWorkSheets(3).
ObjetosdeObjetos.
Esmuyhabitualqueunapropiedaddeunobjetoseaotroobjeto.Siguiendoconelcoche,unade laspropiedadesdelcocheeselmotor,yelmotoresunobjetoconpropiedadescomocubicaje, caballos,nmerodevlvulas,etc.ymtodos,comoaumentar_revoluciones,cargar_combustible, mover_pistones,etc. EnExcel,elobjetoWorkSheetstienelapropiedadRangequeesunobjeto,Rangetienela propiedadFontqueestambinunobjetoyFonttienelapropiedadBold(negrita).Tengaestomuy presenteyaqueutilizaremosfrecuentementePropiedadesdeunobjetoqueserntambin Objetos. Dichodeotraforma,haypropiedadesquedevuelvenobjetos,porejemplo,lapropiedadRangede unobjetoWorkSheetdevuelveunobjetodetipoRange.
Insertarunnuevomdulo.
Unmdulosirveparaagruparprocedimientosyfunciones.Elprocedimientoylafuncinson entidadesdeprogramacinquesirvenparaagruparinstruccionesdecdigoquerealizanuna accinconcreta. ParainsertarunmduloactiveopcindelmenInsertar/Mdulo.Seactivarunanuevaventana, siaparecedemasiadopequea,maximcela.
Insertarunprocedimiento.
Yahemosdichoqueunprocedimientoesunbloquedeinstruccionesdecdigoquesirvenpara llevaracaboalgunatareaespecfica.Unprocedimientoempiezasiempreconlainstruccin
SubNombre_Procedimiento YterminaconlainstruccinEndSub. Acontinuacincrearemosunprocedimientoparaponereltexto"Hola"enlacasillaA1. Ejemplo1 SubPrimero Range("A1").Value="Hola" EndSub Observeelcdigo. Range("A1").Value="Hola" EnestalneaestamosindicandoquetrabajamosconunobjetoRange.Paraindicarlequenos referimosalacasillaA1,encerramosentreparntesisestareferencia(msadelanteverotra formadereferirnosalascasillas).Deesteobjeto,indicamosquequeremosestablecerunnuevo valorparalapropiedadValue,observequeparasepararelobjetodesupropiedadutilizamosla notacinpunto. RecuerdequeelconjuntoRangeesunobjetoquependedelobjetoWorkSheets,asporejemplo elsiguientecdigoharalomismoqueelanterior. WorkSheets(1).Range("A1").Value="Hola" Bueno,dehechonohacelomismo,enlaprimeraopcin,eltexto"Hola"seponedentrodela casillaA1delahojaactiva,mientrasqueenelsegundoesenlacasillaA1deprimerahoja(del conjuntodehojas). Lasegundanotacinesmslarga,perotambinmsrecomendableyaqueseespecificantodos losobjetos.Enmuchasocasionessepuedenomitiralgunosobjetosprecedentes,nole aconsejamoshacerlo,susprogramasperdernclaridadyconcisin. SideseahacerreferenciaalahojaactivapuedeutilizarActiveSheet,as,elprimerejemplolo dejaremosdelamanerasiguiente. SubPrimero ActiveSheet.Range("A1").Value="Hola" EndSub Sideseaponer"Hola"(ocualquiervalor)enlacasillaactiva,puedeutilizarlapropiedad(objeto) ActivecelldeWorkSheets.Asparaponer"Hola"enlacasillaactivadelahojaactivaseria,
SubPrimero ActiveSheet.ActiveCell.Value="Hola" EndSub Paraterminarconesteprimerejemplo.WorkSheetsestndentrodelObjetoWorkBooks(libros detrabajo)yWorkBooksestndentrodeApplication. Applicationeselobjetosuperior,eselquerepresentalaaplicacinExcel.As,elprimerejemplo, siguiendotodalajerarquadeobjetosquedaradelaformasiguiente. SubPrimero Application.WorkBooks(1).WorkSheets(1).Range("A1").Value="Hola" EndSub Insistiendoconlanomenclatura,Applicationcasinuncaesnecesarioespecificarlo,pienseque todoslosobjetospendendeeste,WorkBookssernecesarioimplementarlosienlasmacrosse trabajacondiferenteslibrosdetrabajo(diferentesarchivos),apartirdeWorkSheets,es aconsejableincluirloenelcdigo,sobretodosisequieretrabajarcondiferenteshojas,ver,sin embargo,queenmuchasocasionesnoseaplica. Ejecutarunprocedimientoofuncin. Pruebeejecutarelprimerprocedimientodeejemplo. 1. Siteelcursordentrodelprocedimiento. 2.ActiveopcindelabarrademensEjecutar/EjecutarSubUserform.Tambinpuedehacer clicsobreelbotnopulsarlateclaF5.
Paraejecutarelprocedimientodesdelahojadeclculo.
Debeestarenunahoja,noeneleditordeVisualBasic 1. ActiveopcindelabarrademensHerramientas/Macro/Macros.Sedespliegauna ventanaquemuestraunalistadondeestntodaslasmacrosincluidasenellibrode trabajo. 2. SeleccionelamacrodelalistaypulsesobreelbotnEjecutar. Ejemplo2 Enestesegundoejemplosimplementeampliaremoslafuncionalidaddelamacrodelejemplo1. Ademsdeescribir"Hola"enlacasillaA1delaceldaA1,lapondremosennegritayledaremos coloraltexto.
ParaelloutilizaremoslaspropiedadesBoldyColordelobjetoFont. SubSegundo ActiveSheet.Range("A1").Value="Hola" ActiveSheet.Range("A1").Font.Bold=True ActiveSheet.Range("A1").Font.Color=RGB(255,0,0) EndSub True. True,quetraducidoesverdadero,simplementeindicaquelapropiedadBoldestactivada.Sise desearadesactivar,bastaraconigualarlaalvalorFalse. LafuncinRGB. ObservequeparaestablecerelcolordelapropiedadseutilizalafuncinRGB(Red,Green,Blue), lostresargumentosparaestafuncinsonvaloresdel0a255quecorrespondenalaintensidadde loscoloresRojo,VerdeyAzulrespectivamente.
Referenciarunrangodeceldas.
SlotienequecambiaralaformaCasilla_Inicial:Casilla_Final.Porejemploaplicarelltimo ejemploalrangodecasillasquevadelaA1alaA8,ponga. SubSegundo ActiveSheet.Range("A1:A8").Value="Hola" ActiveSheet.Range("A1:A8").Font.Bold=True ActiveSheet.Range("A1:A8").Font.Color=RGB(255,0,0) EndSub
Variables.
AcontinuacinvamosarepetirelprogramaEjemplo1,peroenlugardeponer"Hola"enlacasilla A1delahojaactiva,dejaremosqueelusuarioentreuntextodesdetecladoyacontinuacin guardaremosesevalorenesacasilla. Observequeelvalorqueingreseelusuariodebeguardarseenalgnlugarparapoderponerlo despusenlacasillaA1;puesbien,esevalorseguardarenunavariable. Unavariableessimplementeuntrozodememoriaquelafuncinoprocedimientosereservapara guardardatos,laformageneraldedeclararunavariablees DIMvariableAStipo.
LaFuncinInputBox.
Estafuncinmuestraunaventanaparaqueelusuariopuedatecleardatos.Cuandosepulsasobre Aceptar,losdatosentradospasanalavariablealaquesehaigualadolafuncin.Vealalnea siguiente. Texto=InputBox("Introduzcaeltexto","Entradadedatos"). SienlaventanaquemuestraInputBoxpulsasobreelbotnAceptar,losdatostecleadosse guardarnenlavariableTexto.
SintaxisdeInputBox.
InputBox(Mensaje,Ttulo,Valorpordefecto,Posicinhorizontal,PosicinVertical,Archivo Ayuda,Nmerodecontextoparalaayuda). Mensaje:Eselmensajequesemuestraenlaventana.Sideseaponermsdeunalneaponga Chr(13)paracadanuevalnea,veaelejemplosiguiente. Ttulo:EselttuloparalaventanaInputBox.Esunparmetroopcional. Valorpordefecto:Eselvalorquemostrarpordefectoelcuadrodondeelusuarioentraelvalor. Parmetroopcional. PosicinHorizontal:LaposicinXdelapantalladondesemostrarelcuadro,concretamenteesla posicinparalaparteizquierda.Siseomiteelcuadrosepresentahorizontalmentecentradoala pantalla. PosicinVertical:LaposicinYdelapantalladondesemostrarelcuadro,concretamenteesla Posicinparalapartesuperior.Siseomiteelcuadrosepresentaverticalmentecentradoala Pantalla. ArchivoAyuda:Eselarchivoquecontienelaayudaparaelcuadro.Parmetroopcional.
Nmerodecontextoparalaayuda:Nmeroasignadoquecorrespondealidentificadordelarchivo deayuda,sirveparalocalizareltextoquesedebemostrar.Siseespecificaesteparmetro,debe especificarseobligatoriamenteelparmetroArchivoAyuda. Ejemplo3 SubEntrar_Valor DimTextoAsString 'Chr(13)sirveparaqueelmensajesemuestreendosLneas Texto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos") ActiveSheet.Range("A1").Value=Texto EndSub Esteejemplotambinsepuedehacersinvariables. SubEntrar_Valor ActiveSheet.Range("A1").Value=InputBox("Introduciruntexto"&Chr(13)&"Paralacasilla A1","Entradadedatos") EndSub Ejemplo4 Repetiremoselejemplo3,peroenlugardeentrarlosvaloressobrelacasillaA1,haremosqueel usuariopuedaelegirenquecasillaquiereentrarlosdatos,esdecir,selepreguntaralusuario medianteunsegundoInputboxsobrequecasillaquiereentrarelvalordelprimerInputbox.Sern necesariasdosvariables,unaparaguardarlacasillaqueescojaelusuarioyotraparaguardarel valor. OptionExplicit SubEntrar_Valor DimCasillaAsString DimTextoAsString Casilla=InputBox("Enquecasillaquiereentrarelvalor","EntrarCasilla") Texto=InputBox("Introduciruntexto"&Chr(13)&"Paralacasilla"&Casilla,"Entradadedatos") ActiveSheet.Range(Casilla).Value=Texto
EndSub LasentenciaOptionExplicit. Envisualbasicnoesnecesariodeclararlasvariables,porejemplo,enelprogramaanteriorse hubierapodidoprescindirdelaslneas DimCasillaAsString DimTextoAsString A pesar de ello, le recomendamos que siempre declare las variables que va a utilizar, de esta forma sabr cuales utiliza el procedimiento y qu tipo de datos guarda cada una, piense que a medidaquevayaaprendiendo,crearprocedimientoscadavezmscomplicadosyquerequerirn el uso de ms variables, si no declara las variables al principio del procedimiento ocurrirn dos cosas. Primero, las variables no declaradas son asumidas como tipo Variant (este es un tipo de datos que puede almacenar cualquier valor, nmero, fechas, texto, etc. pero tenga en cuenta que ocupa 20 Bytes y para guardar una referencia a una casilla, la edad de alguien, etc. no son necesarios tantos bytes); segundo, reducir considerablemente la legibilidad de sus procedimientos ya que las variables las ir colocando a medida que las necesite, esto, a la larga complicarlacorreccinomodificacindelprocedimiento. Bueno, pues toda la explicacin anterior es para que declare todas las variables que va a utilizar. LasentenciaOptionExplicitalprincipiodelmdulofuerzaaquesedeclarentodaslasvariables.Si al ejecutar el programa, se encuentra alguna variable sin declarar se producir un error y no se podrejecutarelprogramahastaquesedeclare. SitodavanosehaconvencidosobrelaconvenienciadedeclararlasvariablesyutilizarOption Explicit,pruebeelprocedimientosiguiente,cpielotalcual(TextoyTestoestnpuestosadrede simulandoquenoshemosequivocadoalteclear). SubEntrar_Valor Texto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos") ActiveSheet.Range("A1").Value=Testo EndSub Observequeelprogramanohaceloquesepretendaquehiciera.Efectivamente,TextoyTesto sondosvariablesdiferentes,comonosehadeclaradoningunanisehautilizadoOptionExplicit VisualBasicnodaningntipodeerroryejecutaelprograma.Pruebeelsiguientemduloe intenteejecutarlo. OptionExplicit
SubEntrar_Valor DimTextoAsString Texto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos") ActiveSheet.Range("A1").Value=Testo EndSub Observequeelprogramanoseejecuta,alponerOptionExplicit,forzamosaquesedeclarentodas lasvariables.VisualBasicdetectaquelavariableTestonohasidodeclaradayasloindica mostrandoError,entoncesescuandoesmsfcildarnoscuentadelerrorquehemoscometidoal teclearycambiamosTestoporTexto.Ahoraimaginequeelerrorseproduceenunprogramade cientosdelneasquenecesitaotrastantasvariables.
TiposdedatosenVisualBasicparaExcel.(Tablacopiadadelaayudaen lneadeVisualBasicparaExcel).
Tipodedatos Byte Boolean Integer Long(enterolargo) Single(comaflotante/ precisinsimple) TamaoAlmacenamiento 1byte 2bytes 2bytes 4bytes 4bytes Intervalo 0a255 TrueoFalse 32.768a32.767 2.147.483.648a2.147.483.647 3,402823E38a1,401298E45para valoresnegativos; 1,401298E45a3,402823E38para valorespositivos 1,79769313486232E308a 4,94065645841247E324 paravaloresnegativos; 4,94065645841247E324a 1,79769313486232E308paravalores positivos 922.337.203.685.477,5808a 922.337.203.685.477,5807 +/ 79.228.162.514.264.337.593.543.950.335 sinpunto decimal;+/ 7,9228162514264337593543950335con 28posicionesaladerechadelsigno decimal;el nmeromspequeodistintodecero es+/ 0,0000000000000000000000000001 1deenerode100a31dediciembrede
Double(comaflotante/ precisindoble)
8bytes
8bytes 14bytes
Date
8bytes
9999 CualquierreferenciaatipoObject Desde0a2.000millones Desde1a65.400aproximadamente Cualquiervalornumricohastael intervalodeuntipo Double Elmismointervaloqueparauntipo Stringdelongitud variable Elintervalodecadaelementoesel mismoqueel intervalodesutipodedatos.
Variant(con caracteres)
22bytes+longitudde cadena
Definidoporel Nmerorequeridopor usuario(utilizando loselementos Type) ConversindeTiposdedatos. CopieelsiguienteEjemplo.Simplementesepidendosnmeros,sesumanyseguardanellacasilla A1delahojaactiva. Ejemplo5 OptionExplicit SubSumar() DimNumero1AsInteger DimNumero2AsInteger Numero1=InputBox("Entrarelprimervalor","Entradadedatos") Numero2=InputBox("Entrarelprimervalor","Entradadedatos") ActiveSheet.Range("A1").Value=Numero1+Numero2 EndSub Ejecuteelprocedimientoypongarespectivamentelosvalores25y25.Observequetodohaido correctamenteyenlacasillaA1delahojaactivaapareceun50. Ahora,vuelvaaejecutarelprogramaycuandoselepideelprimervalorteclee"Hola".Observe queelprogramasedetieneindicandounerroreneltipodedatos.Efectivamente,observequela funcinInputBoxdevuelvesiempredatostipoString,enelprimerejemplonohahabidoningn problema,alentrarcaracteresnumricos1,estospuedenasignarseavariablestipoIntegerporque VisualBasichaceautomticamentelaconversin,peroalentrartextoeintentarloasignarauna variableIntegerVisualBasicmuestraunerrorindicandoquelavariablenoesadecuadaparalos datosquesedeseanguardar.
Parasolucionarestosproblemassedebenutilizarfuncionesdeconversindetipo.Estas funciones,comosunombreindica,conviertendatosdeuntipoaotro,deStringaInteger,de IntegeraString,deDateaString,...Aselprocedimientoanteriorquedara. OptionExplicit SubSumar() DimNumero1AsInteger DimNumero2AsInteger Numero1=Val(InputBox("Entrarelprimervalor","Entradadedatos")) Numero2=Val(InputBox("Entrarelprimervalor","Entradadedatos")) ActiveSheet.Range("A1").Value=Numero1+Numero2 EndSub LafuncinVal(DatoString),convierteunacadenadecaracteresavalornumrico.Silacadenaa convertircontienealgncarcternonumricodevuelve0.As,sialpedirunvalorseteclea"Hola", lafuncinVal,devolveruncero.
Funcionesdeconversindetipos.(Tablacopiadadelaayudaenlneade VisualBasicparaExcel).
Val(Cadena).Conviertelacadenaaunvalornumrico. Str(Nmero).Convierteelnmeroaunaexpresincadena. CDate(Fecha).Conviertecualquiercadenaafecha. ObjetoCells(fila,columna). Sirve,comoelobjetorange,parareferenciarunacasillaorangodecasillas,peroenlugarde utilizarlareferenciadelaformaA1,B1,X320,...utilizalafilaylacolumnaqueocupalacasilla dentrodelahoja(oobjetoWorkSheet).Porejemplo,paraponerholaenlacasillaA1delahoja activaseria: ActiveSheet.Cells(1,1).Value="Hola"
UtilizarCellsparareferenciarunrango.
EstoseraelequivalenteaRange("Casilla_Inicial:Casilla_Final"). LaformaqueseobtieneutilizandoCellsesunpocomslarga,peroseverqueavecesresulta muchomsfuncionalqueutilizandonicamenterange.ParareferirnosalrangoA1:B8, pondremos:
VariablesdeObjetos.
Unavariableobjetosirveparahacerreferenciaaunobjeto,estosignificaquepodremosaccedera laspropiedadesdeunobjetoeinvocarasusmtodosatravsdelavariableenlugardehacerlo directamenteatravsdelobjeto.Posiblementenoseutilicedemasiadoestaclasedevariables (estclaroqueestodependerdelaspreferenciasdelprogramador),perohaycasosenlosqueno haymsremedioqueutilizarlas,porejemploenestructurasForEach...Nextcomoveremos,o cuandoseanecesarioconstruirfuncionesquedevuelvanrangos,referenciasahojas,etc. ParadeclararunavariableobjetoseutilizatambinlapalabraDimdelaformasiguiente, DimVar_ObjetoAsObjeto PorEjemplo: DimRAsRange DimHojaAsWorkSheet ParaasignarunobjetoaunavariabledebeutilizarlainstruccinSet. SetVariable_Objeto=Objeto PorEjemplo SetR=ActiveSheet.Range("A1:B10") SetHoja=ActiveSheet SetHoja=WorkSheets(1) Veamosacontinuacinunejemplodecmoutilizarestetipodevariables, Ejemplo6. Algomuysimple,llenarelrangodeA1aB10conlapalabra"Hola"ydespusponernegrita, observecomoseasignaunavariableobjetoalobjetoyluegocomosetrabajaconesavariablede lamismaformaquetrabajaradirectamentesobreelobjeto. Subobj()
Estructurascondicionales.
Ahoraqueyahaexperimentadoconunoscuantosobjetosypropiedades,nosdetendremosa estudiarlasestructurascondicionales.Lasestructurascondicionalessoninstruccionesde programacinquepermitencontrolarlaejecucindeunfragmentodecdigoenfuncindesise cumpleonounacondicin. EstudiaremosenprimerlugarlainstruccinifCondicinthen..Endif(SiCondicinEntonces...Fin Si) LaestructuracondicionalqueseconstruyeconlainstruccinSiCondicinEntonces...FinSitiene laformasiguiente. SiCondicinEntonces Sentncia1 Sentncia2 . . SentnciaN FinSi . . CuandoelprogramallegaalainstruccinSiCondicinEntonces,seevalalacondicin,siestase cumple(escierta),seejecutantodaslassentenciasqueestnencerradasenelbloque,sinose cumplelacondicin,sesaltanestassentencias.EstaestructuraenVisualBasictienelasintaxis siguiente: IfCondicinThen Sentncia1 Sentncia2 . . SentnciaN EndIf Ejemplo6
EntrarunacantidadquerepresentaelpreciodealgoporeltecladoconlainstruccinInputBoxy guardarloenlaceldaA1delahojaactiva.Sielvalorentradodesdeelteclado(yguardadoenA1) essuperiora1000,pedirdescuentoconotroInputBoxyguardarloenlacasillaA2delahoja activa. CalcularenA3,elpreciodeA1menoseldescuentodeA2. SubCondicional() ActiveSheet.Range("A1").Value=0'Ponerlascasillasdondeseguardanlosvalores0. ActiveSheet.Range("A2").Value=0 ActiveSheet.Range("A3").Value=0 ActiveSheet.Range("A1").Value=Val(InputBox("Entrarelprecio","Entrar")) 'SielvalordelacasillaA1esmayorque1000,entonces,pedirdescuento IfActiveSheet.Range("A1").Value>1000Then ActiveSheet.Range("A2").Value=Val(InputBox("EntrarDescuento","Entrar")) EndIf ActiveSheet.Range("A3").Value=ActiveSheet.Range("A1").Value_ ActiveSheet.Range("A2").Value EndSub Ejemplo7. Elmismoqueelanteriorperoutilizandovariables. OptionExplicit SubCondicional() DimPrecioAsInteger DimDescuentoAsInteger Precio=0 Descuento=0 Precio=Val(InputBox("Entrarelprecio","Entrar")) 'Sielvalordelavariableprecioesmayorque1000,entonces,pedirdescuento IfPrecio>1000Then Descuento=Val(InputBox("EntrarDescuento","Entrar")) EndIf
ActiveSheet.Range("A1").Value=Precio ActiveSheet.Range("A2").Value=Descuento ActiveSheet.Range("A3").Value=PrecioDescuento EndSub Viendolosdosprogramasanteriorespuedequelesurjaladudadesiemplearvariableso directamentevaloresalmacenadosenlasceldas.Lasolucinesfcil,loqueleparezcams convenienteencadacasoconcretoquedeseesolucionar.Lasvariables,aunquemuchasveces "innecesarias",quizsdejanlosprogramasmslegiblesyclaros.Ylalegibilidaddeunprogramaes lomsvaliosodelmundoparaunprogramador(profesionalmentehablando),sobretodosiseda elcaso(inevitableel99,999...%delasocasiones)quesetengaquemodificarunprogramapara dotarledemsfuncionalidades,facilitarsumanejo,etc.Enlamayoradeejemplosqueencontrar enestemanualverqueseutilizanvariablespreferentemente.Aunquemuchasvecessufuncin seasimplementerecogerdatosdelasceldasparaoperarlasydejarlasenotrasceldasy, consecuentemente,aumenteelnmerodeoperaciones,creemosqueconelloseganaen legibilidadyflexibilidad. Ejemplo8. MacroquecomparalosvaloresdelascasillasA1yA2delahojaactiva.Sisonigualesponeelcolor delafuentedeambasenazul. SubCondicional2() IfActiveSheet.Range("A1").Value=ActiveSheet.Range("A2").ValueThen ActiveSheet.Range("A1").Font.Color=RGB(0,0,255) ActiveSheet.Range("A2").Font.Color=RGB(0,0,255) EndIf EndSub
EstructuraIf..Else
Estaestructuraseutilizacuandoserequiereunarespuestaalternativaaunacondicin.Su estructuraeslasiguiente. SiCondicinEntonces Sentncia1 Sentncia2 . . SentnciaN
Sino Sentncia1 Sentncia2 . . SentnciaN FinSi Observeque,sisecumplelacondicin,seejecutaelbloquedesentenciasdelimitadoporSi CondicinEntoncesySinosecumplelacondicinseejecutaelbloquedelimitadoporSinoyFin Si. EnVisualBasiclainstruccinSiCondicinEntonces...Sino...FinSiseexpresaconlas instruccionessiguientes. IfCondicinThen Sentncia1 Sentncia2 . . SentnciaN Else Sentncia1 Sentncia2 . . SentnciaN EndIf Ejemplo9. EntrarunacantidadquerepresentaelpreciodealgoporeltecladoconlainstruccinInputBoxy guardarloenlaceldaA1delahojaactiva.Sielvalorentradodesdeelteclado(yguardadoenA1) essuperiora1000,seaplicaundescuentodel10%sinoseaplicaundescuentodel5%,el descuentoseguardaenlacasillaA2delahojaactiva.ColocarenA3,eltotaldescuentoyenA4el totalmenoseldescuento. SubCondicional_Else() DimPrecioAsSingle DimDescuentoAsSingle Precio=0
Precio=Val(InputBox("Entrarelprecio","Entrar")) 'Sielvalordelavariableprecioesmayorque1000,entonces,aplicardescuentodel10% IfPrecio>1000Then Descuento=Precio*(10/100) ActiveSheet.Range("A2").Value=0,1 Else'SinoAplicardescuentodel5% Descuento=Precio*(5/100) ActiveSheet.Range("A2").Value=0,05 EndIf ActiveSheet.Range("A1").Value=Precio ActiveSheet.Range("A3").Value=Descuento ActiveSheet.Range("A4").Value=PrecioDescuento EndSub Ejemplo10. RestarlosvaloresdelascasillasA1yA2.GuardarelresultadoenA3.Sielresultadoespositivoo0, ponerlafuentedeA3enazul,sinoponerlaenrojo. SubCondicional_Else2() ActiveSheet.Range("A3").Value=AvtiveSheet.Range("A1").Value_ ActiveSheet.Range("A2").Value IfActiveSheet("A3").Value<0Then ActiveSheet.Range("A3").Font.Color=RGB(255,0,0) Else ActiveSheet.Range("A3").Font.Color=RGB(0,0,255) EndIf EndSub
EstructurasIfanidadas.
Notienequesorprenderle,dentrodeunaestructuraifpuedeirotra,ydentrodeestaotra,y otra...Veaelejemplosiguiente. Ejemplo11. CompararlosvaloresdelascasillasA1yA2delahojaactiva.Sisoniguales,escribirenA3"Los valoresdeA1yA2soniguales",sielvalordeA1esmayorqueA2,escribir"A1mayorqueA2", sino,escribir"A2mayorqueA1". SubCondicional() IfActiveSheet.Range("A1").Value=ActiveSheet.Range("A2").ValueThen ActiveSheet.Range("A3").Value="LosValoresdeA1yA2soniguales" Else IfActiveSheet.Range("A1").Value>ActiveSheet.Range("A2").ValueThen ActiveSheet.Range("A3").Value="A1mayorqueA2" Else ActiveSheet.Range("A3").Value="A2mayorqueA1" EndIf EndIf EndSub ObservequelasegundaestructuraIf..Else..EndIfquedadentrodelElsedelaprimeraestructura. Estaesunareglageneral,cuandoponeunEndIf,estecierrasiempreelltimoIf(oElse)abierto. Operadoreslgicos. Estosoperadoresseutilizancuandosenecesitanevaluardosomscondicionesparadecidirsise ejecutanonodeterminadasacciones.
OperadorLgicoAnd(Y).
Utilizaremosesteoperadorcuandoseaprecisoqueparaejecutarunbloquedeinstruccionesse cumplamsdeunacondicin.Observequedeberncumplirsetodaslascondiciones.Veael ejemplosiguiente. Ejemplo12.
EntrarelNombre,lacantidadyelpreciodeunproductodesdeeltecladoyguardarlos respectivamenteen A1,A2yA3.CalculareltotalyguardarloenA4.Sieltotalessuperiora10.000yelnombredel productoes"Patatas",pedirundescuento,calcularloeltotaldescuentoyguardarloenA5,luego restareldescuentodeltotalyguardarloenA6. SubEjemplo_12() DimProductoAsString DimCantidadAsInteger DimPrecioAsSingle DimTotalAsSingle DimDescuentoAsSingle DimTotal_DescuentoAsSingle Precio=0 Producto=InputBox("EntrarNombredelProducto","Entrar") Precio=Val(InputBox("Entrarelprecio","Entrar")) Precio=Val(InputBox("Entrarlacantidad","Entrar")) Total=Precio*Cantidad ActiveSheet.Range("A1").Value=Producto ActiveSheet.Range("A2").Value=Precio ActiveSheet.Range("A3").Value=Cantidad ActiveSheet.Range("A4").Value=Total 'Sitotalmayorque10.000yelproductoesPatatas,aplicardescuento. IfTotal>10000AndProducto="Patatas"Then Descuento=Val(InputBox("EntrarDescuento","Entrar")) Total_Descuento=Total*(Descuento/100) Total=TotalTotal_Descuento ActiveSheet.Range("A5").Value=Total_Descuento ActiveSheet.Range("A6").Value=Total EndIf EndSub ObservequeparaqueseejecuteelbloquedeinstruccionesentreIf..EndIfdebencumplirselas doscondicionesqueseevalan,sifallacualquieradelasdos(olasdosalavez),noseejecuta dichobloque.
OperadorLgicoOr(O).
Utilizaremosesteoperadorcuandoseaprecisoqueparaejecutarunbloquedeinstruccionesse cumplaalgunadeunaseriedecondiciones.Observequesloesnecesarioquesecumplaalguna delascondicionesqueseevalan.Veaelejemplosiguiente. Ejemplo13. EntrarelNombre,lacantidadyelpreciodeunproductodesdeeltecladoyguardarlos respectivamenteenA1,A2yA3.CalculareltotalyguardarloenA4.Sieltotalessuperiora10.000 oelnombredelproductoes"Patatas",pedirundescuento,calcularloeltotaldescuentoy guardarloenA5,luegorestareldescuentodeltotalyguardarloenA6. SubEjemplo_13() DimProductoAsString DimCantidadAsInteger DimPrecioAsSingle DimTotalAsSingle DimDescuentoAsSingle DimTotal_DescuentoAsSingle Precio=0 Producto=InputBox("EntrarNombredelProducto","Entrar") Precio=Val(InputBox("Entrarelprecio","Entrar")) Precio=Val(InputBox("Entrarlacantidad","Entrar")) Total=Precio*Cantidad ActiveSheet.Range("A1").Value=Producto ActiveSheet.Range("A2").Value=Precio ActiveSheet.Range("A3").Value=Cantidad ActiveSheet.Range("A4").Value=Total 'Sitotalmayorque10.000oelproductoesPatatas,aplicardescuento. IfTotal>10000OrProducto="Patatas"Then Descuento=Val(InputBox("EntrarDescuento","Entrar")) Total_Descuento=Total*(Descuento/100) Total=TotalTotal_Descuento ActiveSheet.Range("A5").Value=Total_Descuento ActiveSheet.Range("A6").Value=Total EndIf EndSub
EstructuraSelectCase.
Enocasionessedarelcasoqueenfuncindelvalororangodevaloresquepuedateneruna variable,unacasilla,unaexpresin,etc.debernllevarseacabodiferentesaccionesogruposde acciones.Veaelejemplosiguiente. Ejemplo15. Macroquesuma,resta,multiplicaodividelosvaloresdelascasillasA1yA2dependiendodesiB1 contieneelsigno+,,x,:.ElresultadolodejaenA3.SienB1nohayningunodelossignos anterioresenA3debedejarseun0. SubEjemplo_15() DimSignoAsString DimValor1AsInteger,Valor2AsInteger,TotalAsInteger Valor1=ActiveSheet.Range("A1").Value Valor2=ActiveSheet.Range("A2").Value Signo=ActiveSheet.Range("B1").Value Total=0 IfSigno="+"Then Total=Valor1+Valor2 Endif IfSigno=""Then Total=Valor1Valor2 Endif IfSigno="x"Then Total=Valor1*Valor2 Endif IfSigno=":"Then Total=Valor1/Valor2 Endif ActiveCell.Range("A3").Value=Total EndSub
Observequeenelejemploanteriortodaslasinstruccionesifevalanlamismavariable.El programafuncionacorrectamenteperoparaestoscasosesmejorutilizarlainstruccinSelectCa se,elmotivoprincipalesporlegibilidadyelegancia.SelectCasetienelasintaxissiguiente, SelectCaseExpresin Casevalores: Instrucciones. Casevalores: Instrucciones. . . Casevalores: Instrucciones. CaseElse Instruccionesencasoquenoseanningunodelosvaloresanteriores. EndSelect Veaelejemploanteriorsolucionadoconestaestructura. Ejemplo16. SubEjemplo_16() DimSignoAsString DimValor1AsInteger,Valor2AsInteger,TotalAsInteger Valor1=ActiveSheet.Range("A1").Value Valor2=ActiveSheet.Range("A2").Value Signo=ActiveSheet.Range("A3").Value SelectCasesigno Case"+" Total=Valor1+Valor2 Case"" Total=Valor1Valor2 Case"x"
Total=Valor1*Valor2 Case":" Total=Valor1/Valor2 CaseElse Total=0 EndSelect ActiveCell.Range("A3").Value=Total EndSub VeaelejemplosiguientedondecadasentenciaCaseevalaunrangodevalores. Ejemplo17. ProgramaquepidetresnotasdeunalumnomediantelafuncinInputBox.Lasnotasvanaparar respectivamentealascasillasA1,A2yA3delahojaactiva.Elprogramacalculalamediayladeja enA4. Silamediaestentre0y2dejaenA5elmensaje"Muydeficiente",silanotaes3dejaenA5el mensaje"Deficiente",silanotaes4deja"Insuficiente",sies5"Suficiente",sies6"Bien",siest entre7y8deja"Notable",siesmayorque8deja"Sobresaliente". SubEjemplo_17() DimNota1AsInteger,Nota2AsInteger,Nota3AsInteger DimMediaAsSingle Nota1=Val(InputBox("EntrarNotaprimeraevaluacin","Nota")) Nota2=Val(InputBox("EntrarNotaSegundaevaluacin","Nota")) Nota3=Val(InputBox("EntrarNotaTerceraevaluacin","Nota")) Media=(Nota1+Nota2+Nota3)/3 ActiveSheet.Range("A1").Value=Nota1 ActiveSheet.Range("A2").Value=Nota2 ActiveSheet.Range("A3").Value=Nota3 ActiveSheet.Range("A4").Value=Media SelectCaseMedia Case0To2
ActiveSheet.Range("A5").Value="Muydeficiente" Case3 ActiveSheet.Range("A5").Value="Deficiente" Case4 ActiveSheet.Range("A5").Value="Insuficiente" Case5 ActiveSheet.Range("A5").Value="Suficiente" Case6 ActiveSheet.Range("A5").Value="Bien" Case7To8 ActiveSheet.Range("A5").Value="Notable" Case>8 ActiveSheet.Range("A5").Value="Sobresaliente" EndSelect EndSub
LafuncinMsgBox.
Estafuncinmuestraunmensajeenuncuadrodedilogohastaqueelusuariopulseunbotn.La funcindevuelveundatotipoIntegerenfuncindelbotnpulsadoporelusuario.Alahorade invocarestfuncin,sepermitendiferentestiposdebotones.
SintxisdeMsgBox.
MsgBox(Mensaje,Botones,Ttulo,Archivodeayuda,contexto) Mensaje:Obligatorio,eselmensajequesemuestradentrodelcuadrodedilogo. Botones:Opcional.Esunnmeroounasumadenmerosoconstantes(veatablaValorespara botoneseIconos),quesirveparamostrardeterminadosbotoneseiconosdentrodelcuadrode dilogo.Siseomiteesteargumentoasumevalor0quecorrespondeaunnicoBotnOK.
Losvaloresquepuededevolverlafuncinmsgboxenfuncindelbotnquepulseelusuariose muestranenlatablasiguiente. TabladevaloresquepuededevolverMsgBox.(TablacopiadadelarchivodeayudadeMicrosoft VisualBasicparaaplicaciones). Constante Valor Descripcin VbOK 1 Aceptar VbCancel 2 Cancelar VbAbort 3 Anular VbRetry 4 Reintentar VbIgnore 5 Ignorar VbYes 6 S VbNo 7 No
EjemplosdeMsgBox.
SubTal() . . 'ElcuadroMuestralosbotonesSiyNoyuniconoenformadeinterrogante.Cuandosepulsa 'unbotn,elvalorlorecogelavariableX.Enestecasolosvaloresdevueltospuedenser6o7 'quecorrespondenrespectivamentealasconstantesVbYesyVbNo,observelainstruccinIfde 'despus. X=MsgBox("DeseaContinuar",vbYesNo+vbQuestion,"Opcin",,) 'SehapulsadosobrebotnSi IfX=vbYesThen ..... Else'SehapulsadosobrebotnNo ..... EndIf . . EndSub AlgunasvecespuedequeleinteresesimplementedesplegaruncuadroMsgBoxparamostrarun mensajealusuariosinqueserequierarecogerningnvalor.Enestecasopuedeoptarporlaforma siguiente: MsgBoxPrompt:="Holausuaria,Haacabadoelproceso",Buttons:=VbOkOnLy_ Title:="Mensaje"
LoquenopuedehacerporqueVisualBasicdaraerroresponerlaprimeraformasinigualarlaa ningunavariable.Porejemplo,laexpresinsiguienteesincorrecta: MsgBox("Holausuario,Haacabadoelproceso",VbOkOnly,"Mensaje") Seracorrectoponer: X=MsgBox("Holausuario,Haacabadoelproceso",VbOkOnly,"Mensaje") Enestecaso,aunqueXrecibaunvalor,luegonoseutilizaparanada,esdecirsimplementese poneparaqueVisualBasicderror. LainstruccinWith. Suponemosquellegadoaestepuntoleparecerengorrosotenerquereferirsealosobjetos siguiendotodaocasitodalajerarqua.Yahemosindicadoqueesmejorhacerlodeestamanera porqueelprogramaganaenclaridadyeleganciay,consecuentemente,elprogramadorgana tiempoalahoradehacermodificacionesoactualizaciones.LasentenciaWithleayudaratener queescribirmenoscdigosinqueporestoelprogramapierdaenclaridad.Concretamenteesta funcinsirveparaejecutarunaseriedeaccionessobreunmismoObjeto. Susintaxiseslasiguiente: WithObjeto Instrucciones EndWith Repetiremoselejemplo13utilizandoestasentencia.ObservecomoconWithsehacereferenciaal objetoActiveSheet. Ejemplo19. EntrarelNombre,lacantidadyelpreciodeunproductodesdeeltecladoyguardarlos respectivamenteenA1,A2yA3.CalculareltotalyguardarloenA4.Sieltotalessuperiora10.000 oelnombredelproductoes"Patatas",pedirundescuento,calcularloeltotaldescuentoy guardarloenA5,luegorestareldescuentodeltotalyguardarloenA6. SubEjemplo_19() DimProductoAsString DimCantidadAsInteger DimPrecioAsSingle DimTotalAsSingle DimDescuentoAsSingle DimTotal_DescuentoAsSingle
Precio=0 Producto=InputBox("EntrarNombredelProducto","Entrar") Precio=Val(InputBox("Entrarelprecio","Entrar")) Precio=Val(InputBox("Entrarlacantidad","Entrar")) Total=Precio*Cantidad WithActiveSheet .Range("A1").Value=Producto .Range("A2").Value=Precio .Range("A3").Value=Cantidad .Range("A4").Value=Total EndWith 'Sitotalmayorque10.000oelproductoesPatatas,aplicardescuento. IfTotal>10000OrProducto="Patatas"Then Descuento=Val(InputBox("EntrarDescuento","Entrar")) Total_Descuento=Total*(Descuento/100) Total=TotalTotal_Descuento WithActiveSheet .Range("A5").Value=Total_Descuento .Range("A6").Value=Total EndWith EndIf EndSub
EstructurasRepetitivas.
Estetipodeestructuraspermitenejecutarmsdeunavezunmismobloquedesentencias. Ejemplo20. Supongamosquetenemosquehacerunprogramaparaentrarlasnotasdeunaclasede5alumnos queseguardaranrespectivamenteenlasceldasdeA1aA5delahojaactiva.Despushacerla mediaqueseguardarenA6.Conlasestructurasvistashastaahora,podramoshacer: SubEjemplo_20() DimNotaAsInteger
DimMediaAsSingle Media=0 Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A1").Value=Nota Media=Media+Nota Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A2").Value=Nota Media=Media+Nota Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A3").Value=Nota Media=Media+Nota Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A4").Value=Nota Media=Media+Nota Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A5").Value=Nota Media=Media+Nota Media=Media/5 ActiveSheet.Range("A6").Value=Media EndSub Observequeesteprogramarepiteelsiguientebloquedesentencias,5veces. Nota=Val(InputBox("Entrarla1Nota:","EntrarNota")) ActiveSheet.Range("A5").Value=Nota Media=Media+Nota Paraevitarestatipoderepeticionesdecdigo,loslenguajesdeprogramacinincorporan instruccionesquepermitenlarepeticindebloquesdecdigo.
EstructurarepetitivaPara(for).
Estaestructurasirvepararepetirlaejecucindeunasentenciaobloquedesentencias,unnmero definidodeveces.Laestructuraeslasiguiente: Paravar=Valor_InicialHastaValor_FinalPasoIncrementoHacer Inicio Sentencia1 Sentencia2 . . SentenciaN
Fin VaresunavariablequelaprimeravezqueseentraenelbucleseigualaaValor_Inicial,las sentenciasdelbucleseejecutanhastaqueVarllegaalValor_Final,cadavezqueseejecutanel bloquedeinstruccionesVarseincrementasegnelvalordeIncremento. EnVisualBasicparaExcellaestructuraParaseimplementaconlainstruccinFor...Next. ForVarible=Valor_InicialToValor_FinalStepIncremento Sentencia1 Sentencia2 . . SentenciaN NextVariable *Sielincrementoes1,nohacefaltaponerStep1. Ejemplo21. Entrar10valoresutilizandolafuncinInputBox,sumarlosyguardarelresultadoenlacasillaA1de lahojaactiva. SubEjemplo_21() DimiAsInteger DimTotalAsInteger DimValorAsInteger Fori=1To10 Valor=Val(InputBox("Entrarunvalor","Entrada")) Total=Total+Valor Nexti ActiveCell.Range("A1").Value=Total EndSub
Recorrercasillasdeunahojadeclculo.
UnaoperacinbastantehabitualcuandosetrabajaconExceleselrecorridoderangosdecasillas parallenarlasconvalores,mirarsucontenido,etc.Lasestructurasrepetitivassonimprescindibles pararecorrergruposdeceldasorangos.Vealossiguientesejemplosparaverejemplosde utilizacindeestructurasrepetitivaspararecorrerrangosdecasillas,observelautilizacindelas propiedadesCellsyOffset.
PropiedadCells.
Yaconoceestapropiedad,sirveparareferenciarunaceldaounrangodeceldassegn coordenadasdefilaycolumna. Ejemplo22 LlenarelrangodelascasillasA1..A5convaloresparesconsecutivosempezandoporel2. SubEjemplo_22() DimFilaAsInteger DimiAsInteger Fila=1 Fori=2To10Step2 ActiveSheet.Cells(Fila,1).Value=i Fila=Fila+1 Nexti EndSub Ejemplo23. Llenarunrangodefilas,empezandoporunacelda,quesedebeespecificardesdeteclado,conuna seriede10valorescorrelativos(comenzandoporel1). SubEjemplo_23() DimCasilla_InicialAsString DimiAsInteger DimFilaAsInteger,ColumnaAsInteger Casilla_Inicial=InputBox("IntroducirlacasillaInicial:","CasillaInicial") ActiveSheet.Range(Casilla_Inicial).Activate
TomarelvalordefiladelaceldaactivasobrelavariableFila Fila=ActiveCell.Row TomarelvalordecolumnadelaceldaactivasobrelavariableFila Columna=ActiveCell.Column Fori=1To10 ActiveSheet.Cells(Fila,Columna).Value=i Fila=Fila+1 Nexti EndSub EstructurarepetitivaDoWhile..Loop(HacerMientras). Laestructurarepetitivaforseadaptaperfectamenteaaquellassituacionesenquesesabe previamenteelnmerodevecesquesehaderepetirunproceso,entrarveintevalores,recorrer cincuentaceldas,etc. Perohayocasionesocasosenlosquenosesabepreviamenteelnmerodevecesquesedebe repetirunproceso. Porejemplo,supongaquehaderecorrerunrangodefilasenlosquenosesabecuantosvalores habr(estoes,cuantasfilasllenashabr),enocasionespuedequehayanveinte,enocasiones treinta,enocasionesninguna,etc.Paraestoscasoslaestructurafornoesadecuadaydeberemos recurriralasentenciaDoWhile..Loopenalgunadesusformas.Estaestructurarepetitivaest controladaporunaovariascondiciones,larepeticindelbloquedesentenciasdependerdesise vacumpliendolacondicinocondiciones. HacerMientras(secumplalacondicin) Sentencia1 Sentencia2 . . SentenciaN FinHacerMientras EnVisualBasic
DoWhile(secumplalacondicin) Sentencia1 Sentencia2 . . SentenciaN Loop **LosejemplosqueveremosacontinuacinsobrelainstruccinDoWhile..Loopseharnsobre unabasededatos. UnabasededatosenExcelessimplementeunrangodeceldasenquecadafilarepresentaun registroycadacolumnauncampoderegistro,laprimerafilaeslaquedanombrealoscampos. Paranuestrabasededatosutilizaremosloscampossiguientes,Nombre,Ciudad,Edad,Fecha. PongaestosttulosenelrangoA1:D1delaHoja1(EnA1pongaNombre,enB1pongaCiudad,en C1pongaEdadyenD1Fecha),observequelosdatosseempezarnaentrarapartirdeA2. Ejemplo27. Programaparaentrarregistrosenlabasededatos.CadacamposeentraconInputBox.El programavapidiendodatosmientrasseentreunvalorenelInputBoxcorrespondientealnombre, esdecircuandoalpreguntarelnombrenoseentreningnvalor,terminarlaejecucindel bloqueencerradoentreDoWhile...Loop. ObservelautilizacindelapropiedadOffsetparacolocarlosdatosenlasceldascorrespondientes. SubEjemplo_27() DimNombreAsString DimCiudadAsString DimEdadAsInteger DimfechaAsDate Activarhoja1 WorkSheets("Hoja1").Activate ActivarcasillaA2 ActiveSheet.Range("A2").Activate Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") MientraslavariableNombreseadiferenteacadenavaca
DoWhileNombre<>"" Ciudad=InputBox("EntrelaCiudad:","Ciudad") Edad=Val(InputBox("EntrelaEdad:","Edad")) Fecha=Cdate(InputBox("EntralaFecha:","Fecha")) Copiarlosdatosenlascasillascorrespondientes WithActiveCell .Value=Nombre .Offset(0,1).Value=Ciudad .Offset(0,2).Value=Edad .Offset(0,3).Value=fecha EndWith Haceractivalaceldadelafilasiguientealaactual ActiveCell.Offset(1,0).Activate Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") Loop EndSub Ejemplo28. Presteespecialatencinaesteejemployaqueseguroqueelcdigoquevieneacontinuacinlo utilizarenmuchasocasiones. Antesquenadaobserveelejemploanterior,fjeseenquesiempreempezamosallenarelrangode lahojaapartirdelaceldaA2,estotieneunanefastaconsecuencia,lasegundavezqueejecutela macromachacarlosdatosdeA2:D2ysicontinuaejecutandomachacarlosdatosdelosrangos siguientes. Unasolucinseraobservarcualeslacasillavacasiguienteycambiarenlainstruccin ActiveSheet.Range("A2").Activate,lareferenciaA2porlaquecorrespondealaprimeracasilla vacadelacolumnaA.Elcdigoquelemostramosacontinuacinharestopornosotros,esdecir recorrerunafiladeceldasapartirdeA1hastaencontrarunavacaydejaraestacomocelda activaparaquelaentradadedatoscomienceapartirdeella. SubEjemplo_28() . . Activarhoja1 WorkSheets("Hoja1").Activate ActivarcasillaA2
ActiveSheet.Range("A1").Activate Mientraslaceldaactivanoestvaca DoWhileNotIsEmpty(ActiveCell) Haceractivalaceldasituadaunafilapordebajodelaactual ActiveCell.Offset(1,0).Activate Loop . . EndSub Ejemplo29. Eslaunindelosdosprogramasanteriores.EsdecirhabrunbucleDoWhilequebuscarla primeracasillavacadelabasededatosyotroparapedirlosvaloresdeloscamposhastaquese pulseEnterenNombre. SubEjemplo_28() DimNombreAsString DimCiudadAsString DimEdadAsInteger DimfechaAsDate WorkSheets("Hoja1").Activate ActiveSheet.Range("A1").Activate BuscarlaprimeraceldavacadelacolumnaAyconvertirlaenactiva DoWhileNotIsEmpty(ActiveCell) ActiveCell.Offset(1,0).Activate Loop Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") MientraslavariableNombreseadiferenteacadenavaca DoWhileNombre<>"" Ciudad=InputBox("EntrelaCiudad:","Ciudad") Edad=Val(InputBox("EntrelaEdad:","Edad")) Fecha=Cdate(InputBox("EntralaFecha:","Fecha")) WithActiveCell
.Value=Nombre .Offset(0,1).Value=Ciudad .Offset(0,2).Value=Edad .Offset(0,3).value=fecha EndWith ActiveCell.Offset(1,0).Activate Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") Loop EndSub Cuandosetienenqueentrardesdeeltecladoconjuntosdevalores,algunosprogramadoresy usuariosprefierenlafrmuladequeelprogramapreguntesisedeseanentrarmsdatos,latpica preguntaDeseaIntroducirmsdatos?,sielusuariocontestaS,elprogramavuelveaejecutarlas instruccionescorrespondientesalaentradadedatos,sicontestaquenosefinalizaelproceso, observecomoquedaranuestrobucledeentradadedatosconestesistema. Mas_datos=vbYes DoWhileMas_Datos=vbYes Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") Ciudad=InputBox("EntrelaCiudad:","Ciudad") Edad=Val(InputBox("EntrelaEdad:","Edad")) Fecha=Cdate(InputBox("EntralaFecha:","Fecha")) WithActiveCell .Value=Nombre .Offset(0,1).Value=Ciudad .Offset(0,2).Value=Edad .Offset(0,3).value=fecha EndWith ActiveCell.Offset(1,0).Activate Preguntaralusuariosideseaentrarotroregistro. Mas_datos=MsgBox("Otroregistro?",vbYesNo+vbQuestion,"Entradadedatos") Loop **ObservequeesnecesarialalneaanterioralbucleMas_datos=vbYes,paraquecuandose evalelacondicinporvezprimeraestasecumplayseejecutenlassentenciasdedentrodel bucle,Mas_datosesunavariabledetipoInteger.Vealaseccinsiguientedondeseestudiauna variantedelaestructuraDoWhilequeesmsadecuadaparaestetipodesituaciones.
EstructuraDo..LoopWhile.
Elfuncionamientodeestaestructurarepetitivaessimilaralaanteriorsalvoquelacondicinse evalaalfinal,lainmediataconsecuenciadeestoesquelasinstruccionesdelcuerpodelbuclese ejecutaranalmenosunavez.Observequeparanuestraestructuradeentradadedatosvistaenel ltimoapartadodelaseccinanteriorestaestructuraesmsconveniente,almenosms elegante,sivamosaentrardatos,almenosunoentraremos,portantolasinstruccionesdelcuerpo delbuclesedebenejecutaralmenosunavez,luegoyadecidiremossiserepitenono. Do Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") Ciudad=InputBox("EntrelaCiudad:","Ciudad") Edad=Val(InputBox("EntrelaEdad:","Edad")) Fecha=Cdate(InputBox("EntralaFecha:","Fecha")) WithActiveCell .Value=Nombre .Offset(0,1).Value=Ciudad .Offset(0,2).Value=Edad .Offset(0,3).value=fecha EndWith ActiveCell.Offset(1,0).Activate Mas_datos=MsgBox("Otroregistro?",vbYesNo+vbQuestion,"Entradadedatos") MientrasMas_Datos=vbYes LoopWhileMas_Datos=vbYes ObservequeenestecasonoesnecesariolalneaMas_Datos=vbYesantesdeDoparaforzarla entradaenelbucleyaquelacondicinvaalfinal.
EstructuraDo..LoopUntil(Hacer..Hastaquesecumplalacondicin).
Esotraestructuraqueevalalacondicinalfinalobservequelainterpretacinesdistintayaque elbuclesevarepitiendoHASTAquesecumplelacondicin,noMIENTRASsecumplelacondicin. Culdelosdosutilizar,pues,nosesorprenda,laqueentiendamejorolegustems. Laentradadedatosconestebuclequedara: Do
Nombre=InputBox("EntreelNombre(ReturnparaTerminar):","Nombre") Ciudad=InputBox("EntrelaCiudad:","Ciudad") Edad=Val(InputBox("EntrelaEdad:","Edad") Fecha=Cdate("InputBox("EntralaFecha:","Fecha") WithActiveCell .Value=Nombre .Offset(0,1).Value=Ciudad .Offset(0,2).Value=Edad .Offset(0,3).value=fecha EndWith ActiveCell.Offset(1,0).Activate Mas_datos=MsgBox("Otroregistro?",vbYesNo+vbQuestion,"Entradadedatos") HastaqueMas_DatosseaigualavbNo LoopUntilMas_Datos=vbNo
EstructuraForEach.
Estebucleseutilizabsicamenteparaejecutarungrupodesentenciasconloselementosdeuna coleccinunamatriz(prontoveremoslosquees).Recuerdequeunacoleccinesunconjuntode objetos,hojas,rangos,etc.Veaelejemplosiguientequeseutilizaparacambiarlosnombresdelas hojasdeunlibrodetrabajo. Ejemplo29. Programaquepreguntaelnombreparacadahojadeunlibrodetrabajo,sinoseponenombreala hoja,quedaelquetiene. SubEjemplo_29() DimNuevo_NombreAsString DimHojaAsWorkSheet ParacadahojadelconjuntoWorkSheets ForEachHojaInWorkSheets Nuevo_Nombre=InputBox("NombredelaHoja:"&Hoja.Name,"NombrarHojas") IfNueva_Nombre<>""Then
Hoja.Name=Nuevo_nombre Endif Next EndSub **HojavareferenciandocadaunadelashojasdelconjuntoWorkSheetsacadapasodebucle. Ejemplo30. EntrarvaloresparalasceldasdelrangoA1:B10delahojaActiva. SubEjemplo_30() DimRAsRange ParacadaceldadelrangoA1:B10delahojaactiva ForEachRinActiveSheet.Range("A1:B10") R.Value=InputBox("Entrarvalorparalacelda"&R.Address,"Entradadevalores") Next EndSub **ObservequesehadeclaradounavariabletipoRange,estetipodedatos,comopuedeimaginar yhavistoenelejemplosirveparaguardarRangosdeunaomscasillas,estasvariablespueden luegoutilizartodaslaspropiedadesymtodospropiosdelosObjetosRange.Tengaencuentaque laasignacindelasvaraiblesquesirvenparaguardaroreferenciarobjetos(Range,WorkSheet, etc.)debeninicializarsemuchasvecesatravsdelainstruccinSET,estoseestudiarenotro captulo.
InsertarfuncionesdeMicrosoftExceldesdeVisualBasic.
Copieelsiguienteprocedimientoyejectelo.Esunprocedimientoquesencillamentevapidiendo nmerosylosvacolocandoenlasceldasdelacolumnaApartirdeA1,alfinalcolocalafuncin =SUMAparasumarlosvaloresintroducidosylafuncin=PROMEDIOparahacerelpromediode losmismosvalores. SubSumar() DimValorAsInteger DimCasilla_InicialAsString DimCasilla_FinalAsString 'HaceractivalacasillaA1delahojaactiva ActiveSheet.Range("A1").Activate Do 'Entrarunvaloryconvertirloanumrico Valor=Val(InputBox("Entrarunvalor","Entrada")) 'Sielvaloresdistintode0 IfValor<>0Then 'Guardarelvalorenlacasillaactiva ActiveCell.Value=Valor 'Haceractivalacasilladelafilasiguiente ActiveCell.Offset(1,0).Activate EndIf LoopUntilValor=0 'Establecerlacasillainicialdelrangoasumar Casilla_Inicial="A1" 'Establecerlacasillafinaldelrangoasumar. 'Cogerladireccindelacasillaactiva,laltima Casilla_Final=ActiveCell.Address ActiveCell.Offset(1,0).Activate 'PonerenlacasillaactivalafuncinSUMA ActiveCell.Formula="=Suma("&Casilla_Inicial&":"&Casilla_Final&")" ActiveCell.Offset(1,0).Activate 'Ponerenlacasillaactivalafuncinpromedio ActiveCell.Formula="=Promedio("&Casilla_Inicial&":"&Casilla_Final&")" EndSub
Unavezhayaejecutadolamacro,observequeenlasceldasdondesehancolocado respectivamentelasfunciones=SUMA,=PROMEDIOapareceNOMBRE?(esposiblequeaparezca ####,enesecasoamplelacolumna),estosignificaqueExcelnoreconoceelnombredela funcin,quenoexiste.Sinembargo,estasfuncionessiexistenyfuncionanperfectamentecuando setecleandirectamentesobrelahojadeclculo,sepreguntarelporqucuandosecolocan desdeunamacronofuncionan.PuesresultaqueparaquecualquierfuncindeExcelinsertada desdeunamacroNOdeerrordebeponerseconsunombreeningls,latraduccinsehaceluego deformaautomtica.Esdecirenlamacrodebeponerlaeninglsyluegocuandoestaseinserte enlahojaaparecerconsunomenclaturaenelidiomaquecorresponda. Modifiqueelprocedimientodelejemployenlugardeponer ActiveCell.Formula="=Suma("&Casilla_Inicial&":"&Casilla_Final&")" Ponga ActiveCell.Formula="=Sum("&Casilla_Inicial&":"&Casilla_Final&")" Yahora,enlugarde ActiveCell.Formula="=Promedio("&Casilla_Inicial&":"&Casilla_Final&")" Ponga ActiveCell.Formula="=Average("&Casilla_Inicial&":"&Casilla_Final&")" Ejecutelamacroycompruebequeahoratodofuncionacorrectamente.Observequeenlahoja, lasfuncionessehaninsertadoconsunombrecorrectosegnelidioma,esdecirSUMAy PROMEDIO. DeestaformadamosporterminadoelmdulodeMacros,quesimplementeesunaintroduccin altema. Elestudiantepuededesarrollarsemuchoms,estemanualpretenderealizarunbosquejodel tema,einiciaralalumnoalaprogramacinenlenguajeVBA.
Repartidos Prcticos
EJERCICIO 1 MODULO: FUNCIONES AVANZADAS Se presenta a continuacin una tabla conteniendo las exportaciones de carne llevadas a cabo por nuestro pas en el ao 2000 al resto del mundo. Exportaciones realizadas en el ao 2000 en millones de dlares Pas de origen Japn Inglaterra China Inglaterra China Holanda EEUU Blgica EEUU Grecia Francia Inglaterra Holanda Grecia China Blgica EEUU Japn EEUU Se pide: 1. Copie la siguiente tabla en un libro cuyo nombre sea exportaciones 2. Ingrese nuevos registros a travs de la opcin Formularios que se ubican en el men de Datos. 3. Ordene la tabla en funcin del pas. 4. Obtenga la mxima y la mnima exportacin realizada por Uruguay. A continuacin, mediante BDEXTRAER, obtenga los nombres de los pases destinos de dichas ventas. 5. Calcule el nmero de exportaciones hechas a EEUU, mediante BDCONTARA y CONTAR.SI 6. Calcule el importe total que se le vendi a ese pas mediante las funciones BDSUMA y SUMAR.SI. 7. La mxima, la mnima y el promedio de las ventas hechas a EEUU. 8. Genere a travs de una regla de validacin una lista desplegable con todos los pases existentes en la BD. Luego Obtenga el total vendido al pas que UD seleccione en la lista. El fin de esto es que si nosotros cambiamos el pas, obtengamos automticamente el importe que a l se le vendi. Mes Febrero Noviembre Setiembre Enero Junio Febrero Diciembre Enero Setiembre Mayo Mayo Julio Julio Diciembre Marzo Junio Mayo Febrero Julio Importe de exportacin 26 67 90 120 140 150 159 200 200 200 201 240 260 300 320 690 840 980 1200
EJERCICIO 2 MODULO: FUNCIONES AVANZADAS Se presenta a continuacin una tabla con las notas obtenidas por 10 alumnos del curso de Excel avanzado. Se pide: 1. Aplique un color de fondo rojo y una fuente de tipo negrita y color blanca, a aquellas celdas que presenten valores inferiores a 70 (formato condicional). 2. Obtenga el total y el promedio de puntos obtenidos por alumno. 3. En la columna de resultados deber aparecer las leyendas Aprobado, Prueba parcial o Examen total segn los criterios de aprobacin del curso. 4. Aplique nuevamente un formato condicional, tal que si el resultado es Aprobado, este aparezca con un color de fuente verde, si es Prueba parcial, sea azul y si es Examen total sea rojo. 5. Genere un cuadro de consulta como el siguiente tal que el al digitar la cdula de un estudiante aparezca su promedio y su resultado.
Cedula
Access
Total
Promedio
Resultado
1.269.487-6 1.396.285-4 2.123.494-4 2.456.987-7 3.798.637-1 4.734.963-4 4.869.741-8 5.681.627-3 6.897.169-6 6.943.521-1
75 46 73 50 69 79 98 37 82 90
78 91 57 45 87 96 99 45 72 87
85 70 97 87 67 83 79 85 89 99
97 77 81 65 91 95 84 90 94 100
Ingresar CI
Promedio Resultado
En la planilla que se presenta a continuacin tenemos las distintas etapas de una competencia entre 8 equipos. A medida que se va desarrollando la vamos completando con los puntajes obtenidos por cada equipo. Lo que se busca es que en la tabla adicional se ordenen automticamente los equipos cada vez que introducimos cambios en la tabla principal. Para eso copie ambas tablas en una hoja nueva y digite como nombre Tabla de posiciones. Para lograr el objetivo Ud. deber aplicar las funciones Jerarqua y BuscarV.
COMPETENCIA INTERBARRIAL - PUNTOS POR EQUIPO Y POR ETAPA Etapa 1 Etapa 2 Etapa 3 Etapa 4 Etapa 5 Etapa 6 Total 7 10 3 1 21 2 1 9 1 13 4 5 1 2 12 4 8 6 4 22 9 9 3 7 28 2 5 10 7 24 3 4 3 4 14 3 7 8 9 27
1 2 3 4 5 6 7 8
EJERCICIO 4 MODULO: FUNCIONES AVANZADAS Extracto de ventas de la empresa "La traicionera SA"
Nmero de contrato compra Vendedor venta 1053 1059 1065 1078 1054 1057 1061 1063 1073 1076 1055 1051 1056 1058 1062 1064 1067 1069 1070 1072 1077 1080 1052 1060 1066 1068 1074 1071 1075 1079 Homero Simpson Condorito Homero Simpson Homero Simpson Condorito Paturz Paturz Paco Casal Homero Simpson Paturz Chengue Morales Condorito Chengue Morales Condorito Condorito Chengue Morales Paturz Chengue Morales Paco Casal Chengue Morales Condorito Condorito Paturz Homero Simpson Condorito Paco Casal Chengue Morales Paco Casal Paco Casal Paturz Importe en dlares 16000 9000 110000 290000 14500 9000 230000 58000 1200 58000 230000 14500 58000 7500 9000 7500 110000 1200 230000 110000 14500 16000 290000 1200 14500 58000 290000 14500 230000 1200
Fecha 04/04/2005 08/04/2005 16/04/2005 29/04/2005 04/04/2005 06/04/2005 11/04/2005 15/04/2005 23/04/2005 28/04/2005 05/04/2005 01/04/2005 05/04/2005 06/04/2005 12/04/2005 15/04/2005 18/04/2005 19/04/2005 19/04/2005 22/04/2005 29/04/2005 30/04/2005 02/04/2005 08/04/2005 18/04/2005 19/04/2005 23/04/2005 22/04/2005 23/04/2005 30/04/2005
Auto Honda Civic Fiat Fiorino Mercedes D420 Ferrari 350 Subaru Impreza Fiat Fiorino Lamborgini Diablo BMW 320 Fiat Fitito BMW 320 Lamborgini Diablo Subaru Impreza BMW 320 Maruti Fiat Fiorino Maruti Mercedes D420 Fiat Fitito Lamborgini Diablo Mercedes D420 Subaru Impreza Honda Civic Ferrari 350 Fiat Fitito Subaru Impreza BMW 320 Ferrari 350 Subaru Impreza Lamborgini Diablo Fiat Fitito
Cliente N Elizabelar IMM Stella Donatti J Bush Presidencia de la Rep. IMM T Vazquez MSP MSP A. Legarburo J Battle El cuqui Sin Escurpulos Ltda. JM Sanguinetti IMM La trepadora SA J Bush La incobrable srl La trepadora SA M. Gutirrez Cedres IMM La trepadora SA Presidencia de la Rep. Recoba Sin Escurpulos Ltda. Loco Abreu IMM Presidencia de la Rep. La incobrable srl
Forma de pago 30 cuotas 30 cuotas 30 cuotas 30 cuotas 60 cuotas 60 cuotas 60 cuotas 60 cuotas 60 cuotas 60 cuotas 90 cuotas Contado Contado Contado Contado Contado Contado Contado Contado Contado Contado Contado En negociacin En negociacin En negociacin En negociacin En negociacin Entrega efect+15 cuotas Entrega efect+20 cuotas Entrega efect+20 cuotas
Se pide: 1. Copie la siguiente tabla en dos hojas distintas 2. En la primera hoja registre nuevas ventas mediante la opcin Formularios del men de Datos. 3. Ordene la tabla segn Fecha de Venta en forma ascendente, el nombre del vendedor de forma ascendente. 4. Ordene nuevamente la BD pero ahora solamente por vendedor en forma descendente. A travs de la herramienta de subtotales obtenga: El total de ventas por vendedor La venta ms alta y la ms baja de cada vendedor El promedio de ventas de cada vendedor El nmero de ventas de cada vendedor
Saque detalle de manera de visualizar solamente los totales de venta de cada vendedor.
5. En la segunda hoja, mediante Autofiltros visualice: las ventas realizadas por Condorito. las ventas de Condorito hechas a la IMM las ventas realizadas en la segunda quincena del mes de abril. las ventas cuyos importes estn entre los 50000 y los 150000 dlares. Las ventas cuyos importes sean menores a 10000 y mayores a 200000 dlares. las ventas hechas a la IMM o a la Presidencia de la Repblica. las cinco ventas ms grandes las cinco ventas ms chicas las ventas de los vendedores cuyos nombres comiencen con la letra C. las ventas cuya forma de pago an est en negociacin
EJERCICIO 5 MODULO: FUNCIONES AVANZADAS SOLVER Esta planilla ofrece los datos de produccin de dos artculos, incluyendo los detalles de las materias primas que los componen. Con estos datos, y basndonos en la tabla auxiliar, podemos calcular el costo de cada artculo. Suponiendo que se puede vender el total de la produccin, necesitamos calcular cunto ser lo mximo que se puede vender sin utilizar ms materia prima de la que se tiene. Todo esto teniendo en cuenta que el precio final de cada artculo no puede superar los 16.5 pesos y que el margen de ganancia tiene que ser de, por lo menos, el 30 por ciento. Autito a control Tuercas por unidad Tornillos por unidad Arandelas por unidad Plstico por unidad Motor por unidad Cable por unidad Costo por unidad Margen de ganancia Precio unitario final $ Unidades a producir 4 3 7 0,20 kg 1 0,50 m 11,65 50% 17,48 $ 500 Trencito elctrico 3 5 4 0,30 kg 1 0,70 m 12,18 50% 18,27 500 9.135,00 $ la produccin 1500 2500 2000 17.872,50 3500 4000 5500
Totales
Importe de ventas $ 8.737,50 $ Materias primas utilizadas en Total de tuercas 2000 Total de tornillos 1500 Total de arandelas 3500
Existencia Tuercas 1000 Tornillos 1500 Arandelas 3000 Plstico 1000,00 Kg. Cable 750,00 m Motor 600
Costo ( por ud, Kg. o m) $ 0,50 $ 0,75 $ 0,25 $ 1,00 $ 0,90 $ 5,00
1. Aplicando Buscar objetivo calcule la cantidad a vender para obtener un importe de ventas de 1200 pesos. A Precio Cantidad Importe de ventas B 20 ? =B2*B3
1 2 3
2. Deseamos conocer la mayor cantidad que podemos obtener en prstamos si estamos dispuestos a endeudarnos por 36 meses pagando una cuota mxima de 500 pesos. La tasa de inters del mercado es del 50% anual 3. A B 1 Prstamo ? 2 Tasa anual 50% 3 N de cuotas 36 4 Valor de la cuota mensual =PAGO(B2/12;B3;B1) 4. En funcin de los costos y utilidad del producto determine la cantidad a producir para que el precio unitario sea igual a 15 pesos. A Cantidad a producir Costos variables Costos fijos Costo total unitario Utilidad unitaria (10%) Precio unitario B ? 8.5 1200 =B3+B4/B2 =B5*0.1 =B5+B6
1 2 3 4 5 6
EJERCICIOS MDULO: Anlisis de Informacin Ejercicio 1 Dada la siguiente tabla de datos: Ao 2004 2004 2004 2004 2003 2003 2003 2003 2002 2002 2002 2002 2001 2001 2001 2001 Perodo 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ventas 15458 5487 6587 1587 15874 4358 5743 2543 18045 7845 6784 1254 10548 4587 6879 3597
Se pide:
1. Obtener total de ventas por ao. 2. Obtener total de ventas por ao y dentro de cada ao, por perodo. 3. Obtener promedio de ventas por ao y por perodo.
EJERCICICIO 2 Dada la siguiente base de datos: Ao 2004 2004 2004 2004 2004 2004 2004 2003 2003 2003 2003 2003 2003 2003 2003 2002 2002 2002 2002 2002 2002 2002 2002 2001 2001 2001 2001 2001 2001 2001 Se pide: Mediante Tablas Dinmicas: 1. Obtener total de ventas por perodo, y por ao. Dar la posibilidad de filtrar por cliente dicha informacin. 2. Obtener grfico dinmico de dicha informacin. 3. Visualizar mediante tabla dinmica, porcentaje sobre el total de ventas de cada perodo y de cada ao. Perodo 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 Tipo de cliente Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Minorista Mayorista Ventas 12924 2534 4462 1025 5383 1204 745 842 13520 2354 3311 1047 4708 1035 1701 842 13544 4501 6589 1256 5944 840 929 325 7000 3548 3533 1054 5426 1453
EJERCICIO 3 DADA LA SIGUIENTE BASE DE DATOS: ALUMNO SUCURSAL DOCENTE CLARIDAD AL EXPLICAR 2 5 4 1 4 3 5 2 3 1 5 4 3 2 BUENA DISPOSICIN 4 5 4 2 3 3 4 1 2 1 4 5 4 1 BUEN USO DEL PIZARRN 2 4 5 3 3 4 4 2 2 2 4 4 4 1 CONCEPTO GENERAL DEL DOCENTE 2 5 4 2 3 4 4 2 2 1 4 4 3 1
3.015.665-5 1.967.222-3 2.123.334-1 1.944.314-6 3.054.365-4 1.665.145-0 1.945.328-6 3.412.331-0 4.036.365-6 4.365.441-8 2.966.356-4 1.665.324-3 1.689.365-0 3.554.321-4
BUCEO PARQUE BUCEO RIVERA BUCEO RIVERA PARQUE RIVERA RIVERA BUCEO BUCEO PARQUE PARQUE BUCEO
Luis Pedro Pedro Gabriel Luis Gabriel Gabriel Luis Luis Luis Pedro Gabriel Gabriel Luis
OBTENER: 1. NOTAS GENERALES de cada DOCENTE y dividido por cada SUCURSAL. 2. Cantidad de encuestas tomadas de cada docente. 3. Mximo Concepto General alcanzado por un docente, detallando cual es el docente y en qu sucursal obtuvo dicha nota. 4. Cantidad de encuestas que se realizaron en cada sucursal. 5. Graficar notas de cada pregunta obtenida por cada docente, y con la posibilidad de desplegar este grfico por sucursal. EJERCICIO 4 IMPORTAR DESDE LA BASE DE DATOS NEPTUNO (C:\Archivos de Programa\Microsoft Office\Office10\Samples) las tablas de Pedidos y de Clientes. OBTENER: 1. CANTIDAD de pedidos que se tomaron por pas. 2. Cantidad de pedidos tomados por empleado y por ciudad del destinatario. 3. Generar un campo calculado para saber cuntos pedidos se realizaran por pas si la empresa pensara incrementar su cantidad de pedidos en un 30 %. 4. Visualizar las unidades en existencia de cada producto que nos trae cada proveedor. 5. Promedio de precios unitarios de los productos de cada proveedor. 6. Graficar la cantidad de pedidos que se le hayan entregado al cliente ALFKI y ANTON en las diferentes formas de envio.
EJERCICIO 5 Importar desde MS Access, desde la base de datos NEPTUNO (se encuentra en C:\Archivos de Programas \ Microsoft Office\Office10\Samples) las tablas de productos y categoras. Obtener mediante Tablas Dinmicas: Cantidad de productos por categora Promedio de precios unitarios por categora Productos por categora, y unidades en existencia Calcular mediante un campo calculado el IVA de todos los precios unitarios, el importe de cada precio con IVA incluido 5. Graficar cantidad de proveedores que existen por categora de productos 6. Graficar en forma de torta los precios unitarios de los productos que pertenezcan a la categora Bebidas. EJERCICIO 6 (Datos Tabla) Se presenta planilla con datos de un artculo que nuestra empresa comercializa y se nos solicita estudiemos la sensibilidad del precio de venta frente a dos variables: el margen de ganancia y la cantidad de artculos a producir. Esto significa que analizaremos cul sera el valor final para distintas combinaciones de mrgenes y cantidades. Para hacerlo crearemos una tabla de datos que resuma esta informacin. 1. 2. 3. 4.
500 Cantidad a producir Costo por unidad $ 8,50 Costos fijos $ 1.200,00 Costo total $ 5.450,00 Margen de ganancia 30% Ventas a realizar $ 7.085,00 Valor unitario $ 14,17
300
400
500
600
EJERCICIO 7 (Filtros) Copie esta tabla en cuatro hojas distintas Ventas 2003 100000 230000 59000 186000 310000 98000 77000 160000 320000 190000 132000 148000 95000 74000 86000 110000 Ventas 2004 142000 225000 72000 190000 302000 101000 75000 190000 350000 200000 106000 140000 52000 96000 105500 132000
Zona Distribuidor G Fuentes Zona Este 1 G Fuentes Zona Este 2 G Fuentes Zona Este 3 G Fuentes Zona Este 4 C Rodrguez Zona Norte 1 C Rodrguez Zona Norte 2 C Rodrguez Zona Norte 3 C Rodrguez Zona Norte 4 F Prez Zona Oeste 1 F Prez Zona Oeste 2 F Prez Zona Oeste 3 F Prez Zona Oeste 4 M Carminati Zona Oeste 1 M Carminati Zona Oeste 2 M Carminati Zona Oeste 3 M Carminati Zona Oeste 4 Se pide:
Nota los se pide 1 a 3 realcelos sobre la misma base de datos. 1. Ventas del 2004 mayores a 150000 pesos. 2. Ventas menores a 60000 o mayores a 200000 pesos. 3. Ventas entre los 150000 y los 200000 pesos de aquellos distribuidores cuyo nombre comience con la letra C. 4. Genere una nueva tabla que muestre aquellos registros en los que las ventas del 2003 fueron mayores a las ventas del 2004.
Paises Aos
Australia Argentina Brasil EEUU Nueva Zelanda Uruguay Mexico Paraguay
Ventas Anuales
2004 1680000 1200000 1800000 2000000 1900000 600000 1200000 750000 2005 1230000 2250000 3500000 3500000 2500000 1800000 1200000 900000 2006 2000000 2100000 3200000 3400000 3000000 1750000 1600000 1240000
1. Generar un grfico de columnas con las ventas de cada pas segn los aos en los que se hayan producido. Generar un color de fondo del grfico basado en una textura. Generar un efecto de relleno con degradado en el rea de trazado. Desplegar la leyenda en la parte superior del grfico. Aplicarle efectos de degradado a cada una de las series. 2. Generar un grfico de columnas con las ventas de cada ao para los diferentes pases. Aplicar en cada serie el efecto de colocar la imagen de la bandera correspondiente a cada pas como fondo de cada columna correspondiente a dicho pas. Aplicar en el fondo del grfico un efecto con degradado a dos colores. 3. Generar un grfico de torta donde se represente las ventas del ao 2004 a cada pas. Mostrar dentro del grfico el pas al que corresponde cada rea y el porcentaje correspondiente del total. Aplicarle un efecto 3D con un efecto de elevacin.
Generar un grfico de tipo pirmide poblacional. Aplicarle a dicho grfico todos los retoques correspondientes para su correcta visualizacin. Grabar este grafico como tipo personalizado para poder utilizarlo a futuro. Aplicarle efecto de degradado a las series, y un efecto de textura tanto al rea de trazado como al rea de grfico.
Ejercicio 3
Tareas
Compra de Terrenos Desmonte Confeccin de Plano Compra de Materiales Construccin Pintura Revisin Entrega
Fecha Inicio
10/02/2006 21/02/2006 08/03/2006 01/04/2006 20/04/2006 25/08/2006 01/09/2006 18/09/2006
Fecha Fin
20/02/2006 10/03/2006 31/03/2006 18/04/2006 24/08/2006 31/08/2006 15/09/2006 19/09/2006
Das Corridos
10 17 23 17 126 6 14 1
Generar un grfico representando un diagrama de Gantt. Aplicarle efecto de relleno con degradado a un color al rea de grfico y rea de trazado.
Hora Produccion
00:43 02:37 05:21 05:35 07:20 07:47 10:22 10:33 11:18 785 662 546 356 447 611 310 564 583
Generar un grfico de dispersin (XY) con lineas suavizadas para representar la produccin en el transcurso de las horas. Adaptar el eje de valores (x) para que represente una escala de horas que vaya de las 00:00 hs a las 12:00 pasando en valores de a 1 hora. Ejercicio 5
Aos Pais Argentina Brasil Uruguay Paraguay Peru Bolivia Venezuela Ecuador Colombia Minimo Maximo
Exp 2000 2293660 3863727 1125873 1028543 877385 1379161 2275591 1907308 2511773 877385 3863727
Exp 2001 2657911 2616891 1074146 1134743 947571 1405565 3113542 1443472 2085069 947571 3113542
Exp 2002 1913896 2210725 1021074 1166809 1019173 1530906 3706347 1815317 2073359 1019173 3706347
Exp 2003 1231816 4650539 1449403 1143472 1015051 1670229 4245991 961641 2006935 961641 4650539
Exp 2004 5000000 4000000 1057386 1195914 1071022 1535585 1819779 1905881 2266457 1057386 5000000
Exp 2005 1319296 3951452 1049902 1093311 754180 1144279 1971444 1949043 2273786 754180 3951452
Dada la tabla expuesta: Utilizar lista desplegable, cuadro combinado, barra desplazamiento para lograr graficar en lineas las exportaciones de cada pais por ao. La idea es que mediante un cuadro combinado yo pueda elegir un pais y visualice el grafico de las exportacion de ese pais (a travs de los aos). Lo mismo con una lista desplegable y tambin con barra desplazamiento.
Ejercicio 6
PROC1 Valores 56 62 65 55 56 64 62 60 56 59 58 56 60 58 55 57
PROC2 Valores 55 60 63 50 56 64 62 67 52 60 62 53 50 55 60 64
PROC3 Valores 57 65 63 50 56 64 62 67 52 60 62 53 50 55 60 65
PROC4 Valores 55 60 63 50 56 64 62 67 52 60 62 53 50 55 60 60
PROC5 Valores 58 60 63 50 56 64 62 67 52 60 62 53 50 55 60 55
PROC6 Valores 50 60 63 50 56 64 62 67 52 60 62 53 50 55 60 53
Dada la siguiente tabla, generar un grfico de lneas que represente cada uno de los procesos. Dichos procesos se seleccionaran con un cuadro de lista, y control de nmeros.
Mdulo: MACROS EN EXCEL Ejercicio 1 Generar un macro que pregunte al usuario datos de empleados tales como: Nombre y Apellido Direccin Ciudad (donde reside) o Si la ciudad es Montevideo mostrar en la siguiente columna: CAPITAL o Si la ciudad es diferente a Montevideo mostrar: INTERIOR Sueldo nominal Fecha de ingreso en la empresa o o o o o Si el empleado tiene ms de 5 aos de antigedad se le pagar un incentivo de antigedad de un 2 % de su sueldo nominal. Si el empleado tiene ms de 7 aos de antigedad se le pagar un incentivo de antigedad de un 4 % de su sueldo nominal. Si el empleado tiene ms de 9 aos de antigedad se le pagar un incentivo de antigedad de un 6 % de su sueldo nominal. Si el empleado tiene ms de 10 aos de antigedad se le pagar un incentivo de antigedad de un 8 % de su sueldo nominal. Si el empleado tiene menos de 5 aos de antigedad no se le pagar dicho incentivo.
(Se compara siempre con la fecha actual = funcin DATE) Mostrar en una columna el incentivo por antigedad que le corresponde al empleado. Calcular los aportes del empleado sabiendo que, sumando Sueldo Nominal y el incentivo de antigedad se utilizarn las siguientes escalas: Aportes: 18 20 24 26 % % % % si si si si gana gana gana gana menos menos menos menos de de de de 3 SMN 6 SMN 10 SMN 12 SMN
Tomar en cuenta que el SMN es de $ 1242. Mostrar el aporte de cada empleado en una columna. Mostrar el lquido de cada empleado sumando Sueldo Nominal + Antigedad Aportes. Repaso de inputbox, msgbox, bucles, uso de variables.
Ejercicio 2 Pedir al usuario nombre, precio unitario y descripcin de artculos. Volcar estos datos en la planilla. A medida que el usuario cargue cada registro ir acumulando el total de precios, con la finalidad de calcular el promedio de precios. Dejar que el usuario corte el pedido de artculos cuando lo desee. En la ltima instancia, con el promedio de precios calculado, marcar el promedio de rojo si este es mayor a 500, marcarlo de verde si es mayor a 1000, y marcarlo de azul si es mayor a 2000. Repaso de inputbox, bucles, msgbox. Aplicar offset (o mostrar la aplicacin del mismo en el ejercicio prctico). Ejercicio 3 Generar un macro que le pida al usuario datos de una persona: Nombre, Apellido, y Nmero de Credencial (slo nmero) Basndose en la planilla que se plantea a continuacin se deber ir cargando automticamente con los datos de cada persona y la direccin donde le tocar sufragar. N Circuito 113 502 682 691 Desde 1000 5001 8001 12001 Hasta 5000 8000 12000 18000 Direccin Italia 6255 Rod 2411 Chan 1654 Canelones 1698
La planilla que se ir cargando tendr el siguiente formato: Nombre Apellido Credencial Direccin
El estudiante deber ejecutar mediante un botn en la planilla y el usuario deber tener la flexibilidad de cargar tantos registros como desee, o sea por cada registro que vaya cargando se le preguntar si se desea continuar. Sealar de rojo solo los registros que el usuario haya ingresado y que tengan como lugar de votacin la siguiente direccin: CANELONES 1698 Cuando el usuario decida terminar, se deber mostrar la vista preliminar de la planilla.
Ejercicio 4 Generar una macro que guarde en una base de datos la siguiente informacin: Nombre de Articulo Lote del Articulo Rubro: Deber figurar Informtica solamente si se trata de un insumo de computacin Deber figurar Otros si no se trata de un insumo de computacin Precio unitario de Costo Fecha de Compra de dicho articulo En funcin de esta informacin deber calcularse el Precio de Venta Mayorista y Minorista. El Precio Mayorista se calcula como un 7% adicional sobre el Precio de costo, salvo para los artculos comprados hace mas de 3 aos que se calcula un adicional de 5% sobre Precio de costo. El Precio Minorista de cada artculo se calcula como: 15% sobre Precio de costo para artculos de Informtica con antigedad menor a 1 ao 12% sobre Precio de costo para artculos de Informtica con antigedad mayor o igual a 1 ao 17% para el resto de los artculos Tanto el Precio mayorista como minorista debern incluirse en 2 nuevas columnas destinado a ello. La funcionalidad de dicha macro deber incluir: En la primer fila de la Base de datos, los ttulos de cada variable. La posibilidad de utilizar dicha macro en repetidas ocasiones y que no se eliminen antiguos registros La posibilidad de elegir a continuacin de cada registro estas 3 opciones: Ingresar un nuevo registr a continuacin. Eliminar el ltimo registro en caso de equivocacin. Dejar de ingresar nuevos registros.
Ejercicio 5
Apartirdelasiguientebasededatos,referidaaventasdenuestraEmpresa,sepide: 1. 1.1) Realizarlasumadelasventasefectuadasalcontado,enlasucursalCentral. 1.2) CalculeelPromediodelasventasrealizadasporelvendedorMarcelo. 1.3) CalculelaMximadevolucinefectuadadentrodeltipodeproductoAlimentos. 1.4) Realizarlasumadetodaslasventasquenoseefectuaronalcontado. 2. Apliqueunformatocondicionalalabasededatosconlasiguientescaractersticas: 2.1) Losregistrosquecorrespondenalasucursalcentral,colordefondonaranja. 2.2) LosregistrosquecorrespondenalasucursalFilial1,colordefondoceleste. 2.3) LosregistrosquecorrespondenalasucursalFilial2,colordefondoamarillo. Ejercicio2 ApartirdelassiguientesbasesdedatosreferidasaClientesyVentas,sesolicitalosiguiente: Genereuncuadrodeconsultaconlassiguientescaractersticas:
Cedula: Nombre: Apellido: Direccion: Suma Ventas: Cuenta de Devoluciones: