Download - Manual Excel Avanzado
-
MANUAL
EXCEL
AVANZADO
BIOS
-
ManualExcelAvanzado
BIOS
MduloFuncionesAvanzadasPrimerEjemploFuncionessimplesDadalasiguienteplanilla:
Supongamosquelanotafinalsecalcularbasndonosenelpromediodenotasqueobtuvocadaestudianteensusparciales.Porlotantoaplicaremoslafuncinpromedio:=PROMEDIO(B2:D2)Recordemosquecualquierfuncinquevayamosaaplicardebemosposicionarnossobrelacelda,ycomenzarconelsigno=oensudefectoelsigno+.Porotroladosihubiramosqueridotomarencuentasolodosdelosparcialesdentrodelpromediotendramosque:=PROMEDIO(B2;D2)Enelcasodequequeramostomarrangosdiscontinuosestoseaplicaradelasiguienteforma:=PROMEDIO(B2:D2;H2:J2)Laplanillahastaahoraquedaraas:
- Ademsenelcasodecopiarestafrmula,podramosrealizarlomediantelaopcinclsicadedarsobreelbotnderechosobrelacelda,seleccionarlaopcincopiar,yluegomarcarelrango(enestecasodeE3:E8)ydarlepegar.MasalldeestaclsicaopcintambinsepodracopiarlaformuladeformasimpledandoDOBLECLICenelbordeinferiorderechodelaceldaquecontienelaformulaacopiar.Enlasiguientecolumna,seharunbreverepasodelaformulacondicionalSI.Deacuerdoaestaformuladeberaplicarse:=SI(prueba_lgica;valorverdadero;valorfalso)Enelcasodelaplanillaquemanejamosanteriormente,estaquedaradeestamanera:=SI(E2
-
Vamosaarmaruncuadroadicionalanexoalaplanillaparaimplementarotrasfunciones:
EnestecuadrocalcularemoscuantosfueronlosalumnosqueobtuvieroncomocalificacinAprobado,ParcialyReprobado.Asuvezcalcularemosconrespectoaltotaldealumnos,elporcentajequeobtuvocadacalificacin.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,mientrasquelaceldaA12esrelativayaquecambiardefilaalcopiar.EnlafuncinCONTAR.SItenemosencuentaelrangoaevaluar,ycomosegundoargumentotenemoselcriterioatomarencuentaparacopiar.SiaplicamoslafuncionCONTAR,otambinCONTARA,podremossabercuantosalumnostendremos.=CONTAR(E2:E8)EnestecasolafuncinCONTARaplicaperfectamenteparaestecasopuestoquelasceldasqueseevaluantienencontenidonumrico.Enelcasodequererhacerunrecuentoporapellidos:=CONTARA(A2:A8)Aquaplicaperfectamenteyaqueestafuncinnospermiteevaluarceldasnovacas.
-
PasandoaotrotemaveremosacontinuacinalgunaaplicacinadicionaldelafuncinSI.Enlasiguienteplanillaseevaluarlacalidaddelosproductossegnsudimetro.Sieldimetroestcomprendidoentre10y20sucalidadserA,ydelocontrarioserB.
VemosqueenestecasonosoloseapliclafuncinSI,sinoquesecombinconlaopcinY(tambinpodriamoshaberaplicadolaopcinO),delasiguientemanera:=SI(Y(opcion1;opcion2;..);valorverdadero;valorfalso)=SI(O(opcion1;opcion2;..);valorverdadero;valorfalso)EnelcasodecombinarconlaopcinY,recordemosqueestaramoshablandodequesisecumplenUNAYCADAUNADELASOPCIONESENFORMASIMULTANEAseaplicaralaopcinverdadera,yenelcasoquenofueraasseaplicalaopcinfalsa.MientrasqueenelcasodelasopcionesquedamosmedianteelO,conqueunadelasopcionesfuereverdadera,yaseaplicaralaopcindelvalorverdaderoenlacondicin,ysolosinosecumpleningunadelasopcionesseaplicaraelvalorfalso.
-
Pasemosahoraaunnuevoejemploycontinuamosenlaaplicacindefunciones:
Enestecasoaplicamosunafuncindebsqueda,quesedenominaBUSCARV.Recordemosquelaformadeutilizarestafuncindebsquedaeslaquesedemuestraacontinuacin:=BUSCARV(valorbuscado;matriz;nmerodecolumna;[ordenamiento])Enelcasoparticulardelaplanilla=BUSCARV(A13;A2:C8;3;FALSO)Vemosaququeelvalorbuscadohacereferenciaalaceldadondeelusuariocargareldatoenelquesebasarlabsqueda.Estedatonodebeserpartedelamatrizdebsqueda(A2:C8)sino,estonotendrasentidoenlabsqueda.Luegosecargalamatriz,alhacerreferenciaalamatriznocargamoslosttulosdelamisma,soloelcontenido(registrosdelamisma),luegocargamoslareferenciaalnmerodecolumnaquesevaaextraer,enestecasolacolumna3yaqueesladelstock(columnacondatoaextraer)yporltimocomoargumentoOPCIONALelordendentrodelamatriz,enestecasofalsoyaquelaprimeracolumnadelamatriznoestordenadaenformaascendente.AdemsenelcasodelargumentoopcionaldeORDENestotambienesrealmentesignificativoalmomentodeaplicarlacoincidenciaenlabsqueda.SiesteargumentoesFALSOylabusquedanoencuentraeldatoprecisoretornaunerror.Porejemplo:
-
EnestecasoalnoencontrarelArtculoA5565devuelveunerrordeltipo#N/A,odatoNODISPONIBLE(NotAvailable).EncambioveamosquepasacuandoelargumentodeordenlocambiamosaVERDADERO.
Enestecaso,masallqueelproductoA5565noseencontrdetodasformasretornelvalordestockdelartculocuyacoincidencianoeraexacta,sinoaproximada.Enmuchoscasoscuandolabsquedanotieneporqueserexacta,esteargumentoVERDADEROpuedeayudarnosaencontrareldatomscercanoquecoincidaconnuestrabsqueda.EncambioanteriormentecuandoelargumentofuecambiadoporFALSO,labsquedanonosretornabaningnvaloryaqueeldatonoloencontraba(concoincidenciaexacta)enlamatrizderegistros.Enotroambitotambinserabuenoenunaplanillacontrolarlosingresosdeinformacin,yesporestoquevamosaintroducireltemaVALIDACINDEREGISTROS.VALIDACINDEDATOSEnelcasodelaplanillaquepresentamosanteriormente,vamosacomenzarestetemadevalidacintratandodequeelusuarioselimiteaagregarartculosconSTOCKentre0y300,ynopuedaintroducirunnmeromenoracero,nimayora300.Veamoscomooperar:
1. Pintamoslasceldasdestock(celdasenlasquevamosadarlaregladevalidacin)2. Luegovamosalmendedatosvalidacin3. Establecemoslaregladevalidacinaoperar4. Opcionalmentedefinimosmensajeentrante5. Opcionalmentedefinimosmensajedeerror
-
Veamoselpasoencadapantalla:EnesteprimerpasomarcamoslasceldasdeStockyluegonosdirigimosalmendeDatosValidacin
Enelsegundopasodefinimoslaregladevalidacin:Enestecaso,definimosqueloquevamosapermitiresunnmeroenteroendichasceldasyestenmerodeberestarcomprendidoentre0y300.
TenemosotrasopcionesaldesplegarelcuadroPermitir,quelasusaremosenalgunosejemplosposteriores.
-
Poniendootroejemplo:Enestecasonosposicionamosenlaceldadondelapersonavaarealizarlabsquedadelstockdedeterminadoartculo(A13),ydamosunaregladevalidacinparaquesolopuedaingresarcdigosdeartculosexistentesenlamatrizdedatos:
VeamosquesucedecuandoaplicamostambinelusodelasolapadeMensajeEntrante
EstoresultarcuandolapersonaseposicionesobrelaceldaA13(enlacualsedeterminlaregladevalidacin).Veamoscomoenlapantallaquesemuestraacontinuacin,semuestraelmensajeentrante: Aquvemoselmensajeentrantealposicionarnossobrelacelda
-
Uncomentarioconrespectoaesto,eselhechodepodertrabajarenlasreglasdevalidacin,tantoconrangosdinmicoscomotambinconrangosconunnombredeterminado.Veamoscomofunciona:
Enestecaso,aldarcomoorigendelalistalaseleccin:=$A:$A(referenciaalacolumnaA)Laventajaqueselograeselhechodepoderincorporarmasartculosconsurespectivostockalamatrizdeesamaneraintegrarlosalaregladevalidacindeformaautomtica.Aplicandoloquecomentabamos:
Enestecasoagregamosunartculoalalista,yluegovemoscomoelartculoseintegraenformaautomticaalcuadrocombinadoenlaceldaquetienelavalidacin.
-
DEFINIRNOMBRESARANGOSEnelsiguienteejemploveremoscomoaplicamosenlugardeunareferenciaaunalistaformadapordeterminadasceldas,aunrangoconunnombrepreasignadoEnprimertrminoasignaremosalrango,unnombrecomoporejemploARTICULOSEnelreasealadaasignamoselnombrealrangodeartculos.Oseaprimero,sealamoselrangodeartculos(A2:A9)yluegoledesignamosunnombreaesterango.DeahoraenmascuandoyoquierahacerreferenciaalasceldasA2:A9yapodremosescribirsimplementeARTICULOSqueExcelentenderlasdireccionesalasquesehacerreferencia.Otramaneradeplantearlasreferenciasderangosalosqueseleaplicaunnombresera:
MedianteelmenInsertarNombreDefinir,tambinpodremostantocrearrangosconnombre,eliminarrangosconnombre,ytambinmodificarlos.Veamosqueendichapantallapodemosasignarelnombre,yendondedefineSerefierea:podremosdeterminarladireccindelasceldasquevamosatenerdentrodelrango.
-
Enestesentidoestapantallanosdamejormanipulacinsobrelosrangos,yaquenosolopodremosasignarlesnombresadeterminadasceldasorangos,sinomodificarladireccinalaquehacenreferencias,comotambineliminardeterminadosnombresqueyanoseandeaplicacinparanuestraplanilla.Enelcasodequererasignarunrangoconnombre,enunareglavalidacin,estoquedara:
VemosqueaqucomoorigendelalistadeterminamoselrangoconnombrequedenominamosARTICULOS.(Nota:Recordarelsigno=puestoquenoqueremoshacerreferenciaauntextosinoaunrango).
-
FORMATOCONDICIONALEstetemaatratarserinteresanteparaaplicardinamismoencuantoalformatodeceldas.Tambinnosservircomoavisoendeterminadasplanillasenlasquebusquemosquelamismacambiecuandounfactorsecumpla.EstosetratadeunacombinacinentrelafuncincondicionalSIylaaplicacindeformatos(bordes,sombreados,subrayado)enceldasyrangos.Tenemosbsicamentedosmanerasdeaplicarestetema:
1. Aplicacindelformatocondicionaldeacuerdoalvalordeunacelda2. Aplicacindelformatocondicionalvinculadoaunaformula.
Aplicaremosenprimerlugarunformatocondicionaldeacuerdoalvalordeunacelda.PorejemplosiqueremosquelaplanillanossealetodoartculocuyoStockestepordebajodelas70unidades.
Sealamosenprimerlugarelrangoalquelevamosaaplicarelformatocondicional,enestecasoelrangoformadoporlasceldasquedeterminanelstock.Ensegundolugarvamosalmendeformatoformatocondicional.
-
Enelmendeformatocondicional,enestecasolacondicindependedelValordelaCelda,yaestevalorlopodemoscondicionarconoperadoreslgicos(,=,=)porlotantopodremoscompararlosvaloresdelasceldascondichosoperadores.Enelcasoqueveamosanteriormentedeterminamosqueevalesielvalordelaceldaesmenora70,yencasodeserverdaderaestapruebalgica,aplicamoselformato,dndoleunatramaconcolorrojo,loquesealarlaceldadeestecolorcuandosecumplaestacondicin.Enelcasoquequeramosaplicarmsdeunacondicinpodremosagregarhasta3condicionesenelformatocondicional,comosemuestraenelejemploacontinuacin:
Laopcindeagregarnospermitiriragregandocondiciones,condicholmitede3condicionesenestaherramienta.NOTA:LaposibilidaddeagregarmscondicionesenformatocondicionalsepodrmanejardesdeMacrosenVBA.Enelejemplovistoanteriormenteestamosaplicandocolorrojoalosartculoscuyostockestepordebajodelas70unidades,aplicaremoscolorazulalosartculosentre70y99unidadesyporltimosielartculotiene100omasunidadesensustocklaceldasepintardecolordefondoverde.
-
Encasodequequeramosaplicardichoformatocondicionalconestasmismascondicionesperodeseamosmarcartodalafilacuandosedelascondicionespropuestas,estoloharemosseleccionandoenprimerlugartodalamatrizdedatos(desdeA2:C9).
Veamosqueaqucomenzamossealandoelrea(A2:C9),luegofuimosalmenformatoformatocondicional,ydentrodelreadedefinicindeformato,aplicamoscomocondicinladependenciadeunaFrmula,ydentrodelrangodondeseevalalafrmula,establecimosunareferenciaalaceldaC2.NtesequelaceldaC2lareverenciamosaplicandoenformafijalacolumnayvariableparalafila($C2)yaqueelformatocondicionalloaplicarparacadaunadelasfilasmarcadas(desdefila2afila9)peroloaplicarsiemprebasndoseenelvalordelacolumnaC.AsuvezesimportantenotarquelaceldaalaquerefieretodaformuladelformatocondicionalDEBERSERSEALADACONELMOUSEPARAQUENOLOTOMEENFORMATOTEXTOYAGREGUEAUTOMATICAMENTECOMILLASALASINTAXIS.Delamismamaneraquelavistaanteriormentepodramosaplicarvariascondicionalesenesteformato,perosiempreconlalimitacindehasta3condicionesaplicadas.Comovemosacontinuacin:
-
Uncomentarioadicionaleselhechodequeparaeliminaralgunadelascondicionespropuestasenelformatocondicional,simplementevolvemosaseleccionarelreaalaquelequeremosquitarenestecasoelformato(A2:C9)yluegonosdirigimosnuevamentealmendeformatoformatocondicional,yseleccionamossobreelbotneliminar:
Comovemostenemoslaopcindeeliminarunadelascondicionespropuestas,solo2,otodaslascondicionesquehayamosdeterminado.Esimportantesealarelrangodeantemanoyaquesino,Excelnoencontraraenqueceldasseaplicelformatocondicional.
-
EnelsiguienteejemplosemostrarestaherramientaaplicadaconfrmulasdeExcel,ylaideaserqueautomticamentequedenmarcadosloschequesvencidosalafechaactual(lafechaactualsecalcularmediantelafuncinHOY()).
Enestecasoseleccionamosenprimerlugarlamatriz(A2:D5)yluegoloquehicimosfueaplicarelformatocondicional,dondelacondicindependedeunafrmulayenlamismadefinimoslaceldaC2enlacualfijamoslacolumnaydejamoscomovariablelafila($C2)ycomparamosconeloperadormenoroigualalresultadodelafuncinHOY(),lacualnosobtendrenformaautomticalafechaactualdelsistema.BSQUEDASDEINFORMACINMencionamosenunejemploanteriorquemediantelafuncinBUSCARVpodiamosrealizarbsquedasenmatrices,yextraerdelasmismasundatodedeterminadacolumnaenparticular.EnesteejemploveremosnosolamentelaaplicacindeBUSCARV,sinotambinlafuncinBUSCARHylaslimitacionesquetenemosenelusodedichasfunciones.
EnestecasovemoslafuncinBUSCARV,aplicadaparabuscarenbasealcdigodelartculoelstockdelmismo.Medianteelpegadoespecialrealizaremosuntrasportededichamatriz,delasiguientemanera:
-
1. SeleccionaremosmedianteelMousetodalamatrizdedatos(A1:C9)2. BotnDerechoCopiar3. SeleccionaremoslaceldaE14. BotnDerechoPegadoEspecial5. EnlasopcionesseleccionaremosTrasponer(comolovemosenlapantallaa
continuacin)
Veamoscomoquedatranspuestalamatrizoriginal:
EltemadetransponerlamatriztambinnosservirparaverlaaplicacindelafuncinBUSCARHquenospermitirextraerelcontenidodeunaFILAenparticulardelamatriz.EnestecasoenlaceldaE6,utilizaremoslafuncinBUSCARH,paraquealdigitaruncdigodeartculo,nosobtengaladescripcindelmismo(fila2delamatriz).
-
Porotrolado,unadelasrestriccionesimportantesquehayquedestacartantoenelBUSCARVcomoenelBUSCARHeselhechodenocontarconlaposibilidaddebasarmeenundatobuscadoyquererobtenerunacolumnaalaizquierdaenelordendelamatriz,ounafilahaciaarribadeldatobuscadoenelcasodeBUSCARH.Porejemplosienelejemploanterioryomebasoenladescripcin(comodatobuscado)yenbasealadescripcinpretendoobtenerelcdigodedichoartculo.Veamosporlotantolaaplicacindedosfuncionesquenospermitirnsolucionarestetema.LasfuncionessonINDICEyCOINCIDIR.Laaplicacineslasiguiente: Elresultadoser5(Nrodendice)EnestecasoaplicamoslafuncinCOINCIDIR,ydentrodesusargumentoscolocamos,elvalorbuscado,endichoejemplolaceldaA13,dondeelusuarioingresladescripcindelartculo,comosegundoargumentoindicamoslacolumnaB(rangoB2:B9)queesdonderealizaremoslabsquedadedichadescripcin,yporltimocomotercerargumentoelnmero0queestindicandoquelacoincidenciadebeserexactaconeldatobuscado.
-
ElresultadodelafuncinCOINCIDIRser5,queeslaposicindeldatobuscadoenlalistadevalores.Osealadevolucinsiempremeladaenelnmerodendicedeldatobuscadoenlanominadevalores.PorotroladosiyoaplicolafuncinINDICEdelasiguienteforma:
EncuantoalafuncinINDICElosargumentosson,lamatrizdebsqueda,dondeaqusealelanominadecdigosdeartculos,ycomosegundoargumentoelnmerodefiladelndicequedebebuscar,enestecaso5.Estenmero5loobtuveviendoelresultadoobtenidoporlafuncinCOINCIDIReneldatoanterior.Porlotanto,yresumiendo,estopodrasersimplificadoenunasolacelda,delasiguienteforma:
LafuncinINDICE,meextraeeldatodeunamatrizdeacuerdoalaubicacindeestedatoendichamatriz.MientrastantolafuncinCOINCIDIRloqueesthaciendoesbuscandoeldatoenunamatrizdeinformacin,ybuscandolaposicindeestedato,conunacoincidenciaexacta.
-
FUNCIONESDEFECHAYHORA
AplicaremosenesteejemplolasfuncionesdefechayhoraquenosproveeExcel.Paracomenzar,siyoquisieraobtenerlosdascorridosenqueseimplementcadaunadelastareas,tenemosqueentenderqueTODAfechaqueingresemosenExcel,estafechalalecturaquetendrserennmerodedas,comenzandoconelnmero1correspondienteal01/01/1900.Porlotantosienunaceldayocolocolafuncin=HOY()yestamedevuelvelafechaactual,supongamos17/10/2007,enrealidadelcontenidoREALdelaceldaserelnmero39372.Bastaconcambiarelformatodelacelda,aunformatonumricoyvemoselresultado.Entonces,siyonecesitosaberlosdasquetomcadatareasimplementepuedorestarlasceldasdecolumnaCycolumnaB,ytengoelresultadoesperado.(NOOLVIDARASIGNARFORMATONUMRICOALACOLUMNAD,paraobtenerencantidaddedas).
Hastaaqunohemosaplicadoningunafuncinenparticular.Eltemasedacuandotengoquecalculardashabilesentrelafechadeinicioyfechadefin.Parautilizarestetipodefunciones,ExcelnosproveedeCOMPLEMENTOS.EnestecasodebemoshabilitarelCOMPLEMENTOdeHERRAMIENTASPARAANLISIS,delasiguientemanera:
EnelmendeHerramientasComplementostendremoslaposibilidaddeverloscomplementosquetenemosypodremosmarcarlosquenecesitemos.RecordarquetodosloscomplementosquemarquemosquedarnhabilitadosdeahoraenmsenTODASlassesionesqueiniciemosconExcel,dentrodedichaPC.
-
EnestecasohabilitamoselCOMPLEMENTOdeHERRAMIENTASPARAANLISIS,queeselquenosproveerdelasfuncionesnecesariasaaplicar.ParaelclculodedashbilesutilizaremoslafuncinDIAS.LABEndichafuncinlosargumentossern=DIAS.LAB(FECHAINICIO;FECHAFIN;[FERIADOS])
ElargumentodeFERIADOSesopcional,yaquepodramosomitirloylafuncindetodasmanerasmerealizaraelclculo.LaideaesquealtenerelargumentodeFERIADOS,nosoloexcluyadelosdashbilessbadosydomingossinotambinlosferiadosqueaparecenenlanmina.Podramoscomprenderdentrodeestanminaferiadosnolaborables,ylaborables,esoloseleccionarquienestacargodeldesarrollodelaplanilla.NoolvidemosfijarelrangodondedispusimoslosFERIADOSyaquealcopiarlafrmulasedebecontemplaresterangocomoFIJO.
-
Enelsiguienteejemplovamoscontemplarlosdasparalaentregadedeterminadospedidos.Silosdasfuerancorridossimplementedigitamos:=B2+C2
PeroenelcasodequeapartirdelafechadepedidoyoquieraagregarciertacantidaddeDIASHBILES,aqueltemacambia,yaplicaremosparaestolafuncin:DIA.LAB(FECHAINICIO;DIASLABORALES;[FERIADOS])
Loquenosimplementadichafuncineslaposibilidaddequeaciertafechaseleagreguenoseledescuentenciertacantidaddedashbiles,agregandocomoargumentoopcionallosferiados.Recordarque,paraestoscasos,tambinpuederesultarcomnquerervisualizarapartirdedeterminadafecha,eldadelasemanaalaquecorresponde.ParaellotenemoslafuncinDIASEM,que,apartirdeunafechanosdicequdadelasemanacorresponde.
-
VeamosquelafuncinDIASEM,nosdevuelveunnmerocorrespondientealdadelasemanaquenoscaeesafecha,desdeel1paradomingo,hastael7parasbado.Siquisiramosqueestonosdeexactamenteenletraseldadelasemana,bastaconcambiarelformatodelaceldaparapersonalizarlocomovemosacontinuacin:
Aldarbotnderecho,formatosobredichasceldasenlasqueaplicamoslafuncinDIASEM,vamosaPersonalizada,yenelTipo,podremosoptarporDDDDparaquenosdeenletraseldacorrespondientedelasemana.Nota:sihubiramosescritoDDD,nosdaralaabreviacindeldadelasemana.
-
TrabajandoconHORASVeamosenlasiguienteplanillaenlaqueingresamosloshorariosdeentradaysalidadeunempleadoalaempresa.Nosepresentanproblemas,alrestarencadadadelasemanalashorasdesalidaylasdeentrada.Ahoraalmomentodecalculareltotaldehorasqueesteempleadorealizentodalasemana,veamosloquesucede:
EnestecasoaplicamoslafuncinSUMAparatomarencuentaelrangodehoras,ypoderobtenereltotaldehoras.PeroExcelmuestraunresultadoquenoesdeltodocorrecto.Enrealidadelclculointernamentelorealizacorrectamenteperoelresultadoloexpresaendas,yporlotantoestosera1da,19horas,y14minutos.Lonicoquehacemosescambiarelformatodelacelda,paraquereflejeelresultadoenTOTALdehoras.Veamoscomorealizarestepaso:
Almomentodecalcularelpagoarealizar,tomolaceldadeltotaldehoras,multiplicopor24parapasarelresultadoahoras,yluegoporelpreciohora.Recordarquemasalldelcambiodeformatoquehicimos,internamenteExcelsiguereconociendodichaceldaenterminodedasynoenterminodehoras.
-
BUSCAROBJETIVOYSOLVEREstasdosherramientasnosservirnendeterminadasocasionesenlasquequeramosrealizarprevisionesoestimacionesenExcel.Pasemosalsiguienteejemplo:
Enestecasomanejamosunejemplodondeunrestaurantequevendecaf,tienesupreciounitarioen30pesos,yatravsdelacantidaddetazasvendidasgeneraeltotaldelarecaudacin.DebemostomarencuentaqueestaestructurasedebecontemplarparalaaplicacindeBUSCAROBJETIVO,dondeunafrmuladebe
generarladependenciadeunconjuntodefactores(celdasdependientes)queresuelvenelesquema(enestecasolarecaudacindependedelacantidaddetazasvendidasydelpreciounitario).Parautilizarlaherramienta,vamosaMenHerramientasBuscarObjetivo:
Enlapantalladeconfiguracin:Definirlacelda:enestecasoB3,celdaquecontienefrmuladentrodelaplanilla.Conelvalor:vamosadefinircomovalor6000pesos(totalderecaudacinestimada,oprevisinderecaudacin).Paracambiarlacelda:B2(celdaqueactacomovariabledelsistema,yquecalcularautomticamentelaherramienta)
-
Enestecaso,yopodrahaberresueltoelsistemaperfectamentemedianteunaregladetressimple,peroencasosmscomplejoscomoelquevemosacontinuacinelclculodelaestimacinseraposibleconmayoresfuerzo:
Enestecasoplanteamosunejemplodondeseotorgaunprstamosde20000aunatasaanualdel8%ydondesepagarn12cuotas.Lafuncinpagocomovemosnoscalculardeformaautomticalacuotaapagar,queendichocasoserde1739(Nota:elvalorresultantesernegativoyaquelasfuncionesfinancierastomanlosegresosconestesigno).Ahora,veamosquesucedesienestecasoquisiramosestimarcualseraelmontodelprstamoquepodramosobtenersisemantienenlascondiciones,perosabemosquepodemospagarunacuotamximade1500.Paraesto
aplicamoslaHerramientaBuscarObjetivodelasiguientemanera:
Elsistemanosresuelveydirquemedianteelpagodeunacuotade1500ymanteniendolascondiciones,llegaremosaobtenerunprstamode17243.Laherramientasiempretrabajaconunavariableacalcularyunafrmulacuyoresultadofinalserestimadoporeloperador.Veamosqueenesteltimoejemplonuestrosupuestoesestimarunvalordecuotade1500(lasequedebesernegativo,portomarsecomounegresofinanciero),ymanteniendolascondiciones,secalcularelmontdelprstamoalquelapersonapodracceder.EnelcasodelaherramientaSOLVER,actacomoCOMPLEMENTOdeExcelporlotantohayquehabilitarlo,dentrodelmenHerramientasComplementos,ytildarlacasilladeverificacinencasodequedichaherramientanoestuvierepreviamenteinstaladaenlaPCqueestemosmanejando.
-
SOLVEREstaherramientaessimilaraBuscarObjetivoconlasalvedaddecontarconlaventajaderesolversistemascondeterminadacantidaddevariables,yconlaposibilidaddeestablecerrestricciones,queacerquenelsistemaaunarealidadplanteada.Veamoselsiguientecaso:
Enestecasoestablecimosunaplanillasimilaralaplanillaquetrabajamosanteriormente.SetratadeunrestaurantequevendevariostiposdeCaf,entreellosCafcomn,CafCortado,CafCapuchino.AplicamosenelmenHerramientasSolverlaconfiguracindedichosistema.Entonces:enCeldaObjetivoestablecemoslaceldaquevamosaestimar,enestecasolaceldadeltotalrecaudadoporelrestaurante,luegoestablecemoselimportedelvalorestimadoparadichacelda.Enlareferenciadecambiandolasceldasestablecemoslasceldasquesevanacalcularautomticamenteporlaresolucindelsistema,enelcasonuestromarcaremosmediantelateclaCTRLcadaunadelasceldasquetienelacantidaddetazasdecadatipodecaf.Porltimo,enelreainferiorizquierdadeestapantallaestablecemosmedianteelbotnagregar,la/lasrestriccionesdelsistema,enestecasonuestranicarestriccinfueagregaralaceldaB10quecontieneeltotaldetazasvendidasdecafcapuccino,queellimiteesquedichaceldacontengaunvalormenora50.Podemosagregarmltiplesrestriccionesyaquecadavezquequeramosagregarunarestriccinmas,solopresionaremosenelbotnagregarloquenospermitiriragregandonuevasrestricciones.Tambintenemoslaposibilidaddecambiar,yeliminarrestriccionesmediantelosbotonesasociados.UnavezqueterminamosladefinicindedichapantallamedianteelbotnRESOLVER,elsistemanosgeneraunasolucinparaelesquemapropuestoynosmuestralasiguientepantalla:
-
Elesquemaquedaresueltoyvemoslasolucinfinalenlaplanilla.PodemosenestapantallamarcarlaopcindeUtilizarlasolucinencontradaporSOLVER,otambinpodemosRestaurarvaloresoriginalespararegresaralestadoinicialdelaplanillaantesderesolverelesquema.Lasaplicacionesdedichaherramientassonmuchsimas,tantoenmbitosdeestadstica,probabilidad,comotambinenmateriadeMatemticas,IngenierayEconoma.PodemosvervariosejemplosaplicadossibuscamoselarchivoSOLVSAMP.xlsqueseencuentraenC:\ArchivosdePrograma\MicrosoftOffice\Office10\SAMPLES\
-
MDULO
ANLISIS
DE
INFORMACIN
-
Mdulo:AnlisisdeInformacinEnestemduloseverlaaplicacindeherramientasvolcadasalanlisisdeinformacindentrodeExcel.Enprimerlugar,conunejemploseaplicarelusodelosdiferentestiposdefiltrosquenosproveelaherramienta.Veamoselsiguienteejemplo:
Enestaplanillaaplicaremoselprimertipodefiltro,queserelAutofiltroyquenospermitiraplicarfiltrosautomticosenlaplanilladeunaformamuysencilla.ParaaplicarlobastarconposicionarnosencualquierceldadenuestrabasededatosyluegomedianteelmendeDaotsFiltroAutofiltrocomenzaremoslaaplicacindelmismo.
Laplanillanosquedardelasiguientemanera:
Veamosenprimerlugar,quecuandonosotrosmarcamosenelmendedatosfiltrosautofiltro,esteactacomounsubrayado,dondepodemostildarydestildarestaopcin,encasoquequeramosdejadeutilizarelAutofiltroenalgnmomento.Elautofiltronosdaestaopcindelcuadrodesplegableenelttulodecadacampodelabasededatos.Bastarconpincharenelcuadrodesplegableparapoderseleccionarelcriterioaaplicarparafiltrarlainformacinsobredichocampo.Porejemplo,sienestaplanillayoquisierasoloverlasventasdelvendedorDaz,soloseleccionarDazenlasopcionesdelcampo
Vendedores,yestomeaplicarautomticamenteelfiltrocondichocriterio.Acontinuacinsedaelejemplodecmoaparecelaplanillaconelfiltroaplicado:
-
Enelcasoanteriorelsistemaenformaautomticaocultalasfilasdelrestodevendedoresydejasolovisibleslasventasdelvendedorseleccionado.PodemosasuvezaplicarotrofiltroenformasimultaneasobreotrodeloscamposcomoporejemploelcampodeRegin,solobastarconseleccionardedichocampolaopcindelareginquenecesitaremosvisualizarylaherramientaaplicarestefiltroenformatotalmentedinmica.
QUITARAUTOFILTROSRESTABLECERBASEDEDATOSEncasodequeenalgnmomento,apliquemosvariosfiltrosdeacuerdoavarioscamposyenalgnmomentoqueramosquitardichofiltro,existendosopciones:podemosquitarelautofiltrodirectamenteyendoalmendedatosfiltrosautofiltro,otambinmedianteelmendedatosfiltrosmostrartodos(estomuestranuevamentetodoslosdatosoriginalesdelabasededatosperomantieneelautofiltro.
-
CRITERIOSPERSONALIZADOSTambinmuchasvecessepuededarelcasodequeelcriterioparafiltrarlainformacinnoestedisponibleenformadirectasobreelcampoquequeramosfiltrar,yporlotanto,delcuadrodesplegablerecurrimosalaopcindePersonalizar,paraestecampo:
CuandoseleccionamoslaopcinPersonalizar,podremosaplicarcriteriosunpocomasavanzadosparafiltrardichocampo:
Enestecaso,comonosposicionamossobreelcampoVentas2005,yseleccionamoslaopcindePersonalizar,allpodemosverqueennuestrocasoaplicamosdoscriteriosquesealanqueelfiltrosertomarnicamenteVentas2005convaloresmayoresoigualesa80000ymenoreso
-
igualesa100000.Podemosverasuvezqueexistenmltiplescriteriosquepodemosaplicarsobredichocampo.Laplanillaluegodeaplicardichofiltroserverdelasiguientemanera:
Undetallesumamenteimportanteatomarencuentaeselhechodequesiendichaplanillaquisiramosenalgnmomentoobtenerlasumadeventasdel2005peronicamentedelosdatosvisiblesnopodemosaplicarlafuncin=SUMA(C2:C15),puestoquetomaratodaslasfilas(tantovisiblescomonovisibles).Paraestetipodecasosaplicamoslafuncin=SUBTOTALES(9;C2:C15)
SUBTOTALES(nm_funcin;ref1,ref2,...)
Nm_funcin Funcin
1 PROMEDIO
2 CONTAR
3 CONTARA
4 MAX
5 MIN
6 PRODUCTO
7 DESVEST
8 DESVESTP
9 SUMA
10 VAR
11 VARP
Veamosenelejemplodado,losresultadosdelafuncinSUMAySUBTOTALESaplicadosparadichorangodeceldas(C2:C15).
-
NOTA:TambinpodramoshaberutilizadoelbotnDichobotnaplicaautomticamentelafuncincorrectasegnencuentreceldasocultasonoeneserango(aplicafuncinSUMAencasodequenoexistanfilasocultas,yaplicaenformapredeterminadaSUBTOTALEScuandoencuentrafilasocultasenelrango).ElautofiltrotambinnospermitefiltrospersonalizadosenelcasodecolumnascondatostipoTEXTO,porejemplosiyoquisieraobtenerlosdatosdeventasdeaquellosvendedorescuyoapellidotermineconletraS.
EndichoejemploseaplicasobreelcampoVendedores,elcriteriodepersonalizacinyluegoelfiltroquedeterminaquedichocampomuestrenicamenteregistrosqueterminaconletras.
-
Hayunalimitacinenlaaplicacindelautofiltroyes,justamentelaconsignaparapasaralsiguientetema.Nopodemosmedianteelautofiltroaplicarcriteriosquecomparencamposporejemplo,enelsiguientecaso,vamosaaplicarunfiltroquenosexponganicamentelasventasdel2005superioresalasdel2006.EsololograremosconelFiltroAvanzado:
Recordemosqueparapoderaplicarelfiltroavanzadodebemoshacerlosintenerlaopcindeautofiltroencendido.Porlotantositenemoselautofiltro,debemosapagarloyendoaDatosFiltroAutofiltro.ParaaplicarelfiltroavanzadovamosaDatosFiltroFiltroAvanzado,yluego:
-
VeamosquecomocriteriosaplicamoslacomparacinentrelaceldaC2yD2,dondesolocolocamoslafrmula=C2>D2Enelcuadroquenosaparececuandoaplicamoselfiltro:ComoRangodelalista:A1:D19(marcamoslabasededatoscompleta)RangodeCriterios:F7:F7(marcamoslasdosceldas,elttulodelcriterio,ylaceldaquecontieneelcriteriopropiamentedicho)Veamosqueendichocuadroenestecasoaplicamoslaopcinqueaparecepordefectoquees:Filtrarlalistasinmoverlaaotrolugar,yaqueloquequeramoseraaplicarelfiltrodirectamenteenlabasededatos.Enlasiguientepantallaseexponecomoelfiltroaplicadichocriteriodirectosobrelabasededatos:
Aquvolvemosacomentarelhechodequesiqueremosobtenerlasumatoriadeventasde2005o2006,nodebemosusarlafuncinSUMA,puestoquedeberamosutilizarlafuncinSUBTOTALES.PararestaurarlabasededatosvolvemosalmenDatosFiltroMostrarTodo,comosepresentaenlasiguientepantalla:
-
Enelcasodequereraplicarfiltrosenformasimultnea,tendremosquearmardichoscriteriosenlamismalnea.Enelsiguienteejemploveremoslaaplicacindeunfiltrodondevemoslasventas2005superioresalasdel2006,perosolodelaReginSur,veamosnosololaaplicacindelfiltro,sinoelarmadodedichoscriterios:
AquveamosquecomoRangodeCriteriosmarcamosF6:G7,yaqueloscriteriosenestecasoson2,unoqueaplicasobreelcampoRegin,dondeseextraesolodatosquecoincidanconReginSUR,yporotrolado,elsiguientecriterio(ledimosunttuloarbitrario,enestecasoCriterio),dondehicimoslacomparacindeunodelosregistrosdeventas2005contraundatodeventas2006.Asnosquedaranlosdatosfiltrados,deventasdeReginSUR,dondelasVentas2005superanalasdel2006:
-
Veamosquesucedesiloscriteriossonlosmismosperonorespetamoseltemadequeseanenlamismalnea:
AqusepuedeverqueaplicamosunfiltrodondelaReginesSUR,peronohacealmismotiempocomparativodeventasentreelao2005y2006,mientrasqueparaelrestodeventasdeotrasRegionesSaplicaelcriteriodecompararlasventas2005,yquedichasventasseansuperioresalasdelao2006.Podemosseguiraplicandocriterios,perosiemprequeapliquemosvarioscriterios,tienenqueestararmadosdiferenciandoloscamposdelabasededatos,perotambinenelmismoordenqueaparecendichoscamposenlabasededatos.
-
Veamosahoraenunejemplodondeapliquemosestemismofiltroperoconunaextraccindeunasubbasededatosparanomodificarlabaseoriginal:
EnlapantallaquenosapareceenestecasomarcamoslaopcindeCopiaraotrolugar,ynuevamenteen:Rangodelalista:A1:D19(nuevamentemarcamostodalabasededatos)Rangodecriterios:F6:G8(aqumarcamostodosloscriterios,enestecasolosdoscriterios)Copiara:Aqumarcamosunaceldacualquieravacayaqueapartirdeahsevaagenerarlasubbasededatosconlosdatosquecumplanconloscriteriospautados.SiendichoejemploplanteamosquelasubbasededatossoloobtengaloscamposdeVendedores,Ventas2005yVentas2006excluyendolaRegin,deberamosarmarapriorilosttulosdeloscamposquevanaformardichasubbasededatos:
-
Aqumarcamosenelcuadro,enelrenglnCopiara:F11:H11(celdasdondeseencuentranlosttulosdelasubbasededatosquesevaaarmarconlosdatosfiltrados)Acontinuacinvemoselresultadofinaldedichofiltro:
-
TablasDinmicasUtilizandolabasededatosdelejemploanteriorgeneraremosnuestraprimeratabladinmica.Estaherramientanospermitircruzardediversasformasinformacindeunabasededatos,tantoseaunabasearmadaenExcel,comotambinenfuentesdedatosexternas(comoarchivosdetexto,basesdeAccess,SQL,DBase,etc.)ParacomenzarnosguiaremosmedianteelAsistente,queencontramosenDatosInformedeTablasyGrficosDinmicos,comovemosenlasiguientepantalla:
Enlaprimerapantalladelasistentetendremoslasopcionesparaelegirelorigendelosdatosquesevanatomarenlatabladinmica,yendichapantallaenlaparteinferiorelegimoseltipodeinformeaobtener,yquepuedeserTablaDinmicaoGrficoDinmico:
-
EnestaprimerapantallanosotroselegimoslasopcionesquevienencomopredeterminadasyaquelabasededatosnuestraprovienedeunalistaquearmamospreviamenteenExcelyelinformedesalidaesefectivamenteunatabladinmica.Presionamosenelbotnsiguienteparapasaralasegundapantalla:
ElRangoeselqueseformaportodanuestrabasededatos,recordarqueenelcasodequerertomarsolodeterminadoscampos,mediantelateclacontrolpresionadapodemosmarcarsolodichoscamposparaqueformenpartedenuestratabladinmica.Pasemosconelbotnsiguientealatercerapantalladenuestroasistente
-
Enestatercerapantalladelasistente,podremoselegirlaubicacindenuestratabladinmica,lacualpodemosestablecerenunahojadeclculonueva,otambinenunahojadeclculoexistente.Tomemosencuentaqueenelcasodequemarquemoshojadeclculoexistente,debemosmarcarunaceldaqueformarelngulosuperiorizquierdodenuestratabladinmicaporlotantotenerpresentequedesdeestaceldahaciaabajoyhacialaderechaexistalugarvacoydisponibleendichaplanilladeclculo.Veamoselresultadoqueobtenemosaldarfinalizar(enestecasoseleccionamoslaopcindevolcarlatabladinmicaenunahojanueva):
Todatabladinmicaseformarpor4cuadrantesquesern:
CamposdeFila CamposdeColumna CamposdeDatos CampodePgina
-
Podremosarrastrarcualquieradenuestroscamposdelabasededatosquetenemosenlalistaqueaparecealaderechahaciaelreadenuestratabladinmicadondequeramosdisponerdichocampo.Essumamenteimportantetenerpresenteenunprincipiocualeselresultadoquesedeseaobtener,paranoperdernosentretantasopcionesquetenemosenloscamposquetenemosenlabasededatos.Enesteprimerejemplovamosapedireltotaldeventasdel2005paracadaunodelosvendedores:
Aquloquehicimosfuearrastrar(conelbotnizquierdopresionado)elcampodevendedoresalreadeFila(vemosquecadavendedorapareceenunafiladiferente),yllevamoselcampodeVentas2005alreadeDatos(vemosquelasventasde2005aparecencadaunaendicharea).HayquetenerpresentequeExcelesrealmentesensiblerespectoacadaunadeestasreasporlotantotratemossiempredetrasladarcadacampohaciaelreacorrespondienteenlaformamasexactaposible.Encasodequecambiemosdeopininynosparezcamejorobtenereltotaldeventas2005perodecadareginynodecadavendedorpuedotrasladarelcampodevendedoresderegresoalaListadecamposdetabladinmica,ytrasladaracontinuacin,elcampodeReginnuevamentealreadefila:
-
Aquvemosquequitamoselcampodevendedores,yahoravamosacolocarelcampodeRegin,solovolvemosaarrastrardichocampoalreadefilasynosquedacomovemosacontinuacin:
Endichoejemplovemosqueloquelogramosenesteltimocasoestotalizarlasventasdel2005paracadaunadelasregiones.Perovolviendoalcasoanteriorpodramosquererobtenerambosresultados,osealasventasde2005decadavendedorytambinporregin,comopresentamosenlasiguientepantalla:
-
EnestecasotrasladamoselcampodeVendedoresalreadeFILAyelcampodeRegionesalreadeCOLUMNAS.Elcampodeventas2005queddispuestocomoantesenelreadeDATOS.FILTROSENTABLASDINMICASTambintenemoslaopcindeaplicarfiltrosenlatabladinmica,medianteelcuadrodesplegabledelosttulosdelcampofila(enestecasovendedores)ytambinenelttulodelcampodecolumna(enestecasoRegin).
Enestecasoaligualquecomohacamosenelautofiltro,elegimosloscriteriosdefiltradoquevamosaaplicarsobredichocampo.EnelcasoanteriorfiltramosparaquesolodesplieguelasventasdelosvendedoresMoralesyVega,quesonlosquedejamostildadosenelcuadrodesplegable.
-
Siquisiramosobtenerademsdelasventasdel2005,tambinlasdel2006,simplementeagregamosesteltimocampoenelreadedatos:
Vemosqueaquobtenemosdoscamposenelreadedatos,ytenemoslostotalestantoporvendedorcomotambinporregindelosaos2005y2006.Podemosaplicartambinunfiltroquenosmuestreporejemplodeterminadaregin(SURporejemplo):
-
Cadafiltroaplicadosereflejainmediatamenteenelresultadodenuestratabladinmica.ACTUALIZACIONESENTABLASDINMICASApliquemosenprincipioelprimertipodeactualizacinquesepuededar:
Cambiandodatosenlabasededatooriginal.Tomemosalgndatodelabasededatosoriginalymodifiquemosestedatosustancialmenteparaqueveamosreflejadoestecambioenlatabladinmica.
Veamosqueenestecasosemodificelprimerregistrodelabasededatos,sinembargocuandoregresamosalatabladinmica,estapermaneceexactamenteigualquecomoestabaantesderealizarelcambio.
-
Paraqueelcambioserealiceyseveareflejadoenlatabladinmicadeberemosdarclicenelbotndeactualizar(botnconelsignode!)enlabarradeherramientasdetabladinmica.EncasodenotenerdichobotndisponiblepodremosrecurriralmenVERBARRADEHERRAMIENTASTABLASDINMICAS,yluegodarclicsobreestebotnpareverelcambiorealizado:
Alpresionarsobreelbotnvemosquelatabladinmicarecalculalosvaloresynosmuestraeldetallequevemosacontinuacin:
Hayuntemamuyimportanteadestacar,yeselhechodequelatabladinmicanoessensiblealaincorporacindenuevosregistros(nuevaslneas)enlabasededatosoriginal,ascomoalainsercindecolumnasenlabasededatosoriginal.Acontinuacinharemosreferenciaalconceptoymetodologaamanejarcuandoagregamosnuevosregistrosenlabasededatosoriginal.
-
ACTUALIZACINDETABLASDINMICAS(CONINSERCINDEDATOSENLABASEDEDATOSORIGINAL)Enesteejemplovamosaagregarunalneaadicionalenlabasededatos,haremosreferenciaaunaventaenunareginquehastaahoranohabamoscargado:
Elltimoregistrofueagregadoenlabasededatos,sinembargocuandoregresamosalatabladinmica,stanoreflejaelcambioquerealizamosenlabasededatos.Peronosencontramosquepresionandoelbotndeactualizarenlabarradeherramientasdetabladinmicatampoconosreflejaelcambio.Paraqueelcambiosereflejeennuestratabladinmicarealizaremoselsiguienteprocedimiento:
1. Vamosalabarradeherramientastabladinmica,medianteelmenVERBARRADEHERRAMIENTASTABLADINMICA
2. Unavezquetenemoslabarradeherramientasdisponible,vamosalbotnTablaDinmica,yallelegimosAsistente:
-
Cuandopresionamosenlaopcindeasistente,estenosdespliegalaltimapantalladelasistentedetablasdinmicas,alpresionarelbotndeatrsvemosquenospermiteredimensionarlabasededatosoriginal:
EnestecasomarcaremoselrangoA1:D20,agregandodeestamaneraelnuevoregistroalabasededatos,luegopresionamosenelbotnsiguiente,pasandoalaltimapantalladelasistenteyporltimofinalizar.
-
Vemosacontinuacinlaimagendenuestratabladinmicaactualizadamedianteelasistentedetablasdinmicas:
Agreguemosacontinuacinennuestrabasededatosoriginalunanuevacolumnaquenosreflejeelpasadondeserealizcadaunadelastransaccionesconloquelabasededatosquedardelasiguientemanera:
Alpresionarelbotndeactualizarenlabarradeherramientasdetabladinmica,nosapareceenlalistadecampos,elnuevocampoPASquepodremosutilizarparaagregarenlatabladinmica:
-
AgreguemosdichocampoenelreadePginayveamoselefectoqueresultadeesto:
Alagregardichocampoenelreadepginapodremosresumirlatabladinmicadeacuerdoadichocampo.Enelsiguientecaso,alseleccionarunpas(porejemploArgentina)veamoselefectoqueproducesobrelosdatosdenuestratabladinmica:
Latabladinmicapasaahoraamostrarlasventasdecadavendedordelosaos2005y2006,tambinconlaposibilidaddeverladivisinporreginperoUNICAMENTEDELPASARGENTINA(queactacomofiltrodenuestratabladinmica).
-
CAMBIOSSOBRELASOPERACIONESDECAMPOSDEDATOSEnestecasoseguiremostrabajandoconlabasededatosdeejemploperovamosaaplicarotraoperacinsobreelcampodeventas2005,enlugardepedireltotaldeventas2005(sumadeventas2005)solicitaremoselpromediodeventas2005.Parasimplificarsolotrabajaremosconloscamposdevendedoresyventas2005:
Aquporahorasolovemoslaoperacinsimpledondenosmuestralasumadeventas2005,veamoscomohacemosparacambiarlaoperacinpredeterminadadelcampodedatos:
1. Nosposicionamossobrecualquieradelosdatos,deimportesdenuestratabladinmicaypresionamoselbotnderechodelMouse,yallseleccionamoslaopcindeCONFIGURACINDECAMPO
-
2. Enlapantallaquenosaparecepodremosseleccionareltipodeoperacinqueaplicaremos
sobredichocampo:
VemosquepodemosaplicarcomooperacinlaSUMA,CUENTA,PROMEDIO,MXIMO,MNIMO,PRODUCTO EnnuestrocasovamosaseleccionarcomoopcinPROMEDIO,paraquenosapliquedichaoperacinsobreelcampodeVentas2005.Tambinpodremosendichocuadro,sobrelalneadeNombre,ajustarelnombreareflejardedichocampo.
Tenemoslaopcintambindeagregarelmismocampounsinnumerodevecesparaqueestereflejeoperacionesdiferentes.
-
Porejemplo,sinecesitoquelatabladinmicareflejelasumadeventas2005peroadems,nosproveadelpromediodeventas2005paracadavendedor.Arrastramosdosveceselcampodeventas2005haciaelreadedatos,ysimplementeaunodeloscamposlecambiamoslaconfiguracindecampo:
Tambincuandorealizamoslaconfiguracindecampopodremostenermasopciones,comoporejemplodesplegarel%deponderacindecadaventa,conrespectoaltotaldeventasdelaocomopodemosveracontinuacin:
-
Enlapantalladeconfiguracindecampo:
Latabladinmicanosmostrarelsiguienteresultado:
Noolvidemosquepodramospresentarlosimportesdeventas2005,yluegoarrastrarnuevamenteelcampopararealizarestaconfiguracinparaqueademsdelosimportesreflejetambinlosporcentajesdeventas.
-
TABLASDINMICASCONIMPORTACIONDEDATOSDESDEACCESSVeamosenunejemplolospasosquedebemoscumplirsiqueremosarmarunatabladinmicaparaanalizarinformacindeunabasededatosquelaempresatieneenMicrosoftAccess.Comenzamoselasistentedelamismamaneraquelohicimosantes,medianteelmendeDatosInformedeTablasyGrficosdinmicos
-
Enlaprimerapantalladelasistente,elegimoscomoopcinFUENTEDEDATOSEXTERNA:
Alpresionarelbotnsiguiente,vemosqueelasistentecambiaconrespectoalqueveamosenelcaptuloanterior:
PresionandoelbotndeObtenerDatos,seleccionamoselOrigendeDatos(eselsoftwaredondeestalojadalabasededatos).Muchasvecesseconfundeestapantallaconlaeleccindirectadelabasededatos.
-
SeleccionamosenestecasoMSAccessDatabase,queeselsoftwaredondetenemoslabasededatos,yaldaraceptar,podremosrecorrerlascarpetashastaencontrarlabasededatos,enestecasorecorremosC:\ArchivosdePrograma\MicrosoftOffice\Office11\Samples
Cuandoseleccionamoslabasededatos,enestecasoNEPTUNO,nosaparecelasiguientepantalla:
Aqunosreflejalasdiferentestablasdelasqueestcompuestalabasededatos,ydelaquepodremostomardeterminadastablas,completas,porejemploladeCLIENTES,otambin
-
podremospresionarenelsigno+paradesplegarloscamposdelosqueestcompuestalatabla.EnelsiguienteejemplotomaremosdeterminadoscamposdelastablasdeClientes,Productos,Categoras,yProductos.
Cadaunodeloscamposquequeramosincorporarenlatabladinmicalopasaremosalreaderechadelapantalla,enelreadecolumnasenlaconsulta.Cuandopresionamoselbotnsiguiente:
Enestapantallatendremoslaposibilidaddefiltrarlainformacindeloscamposdeacuerdoaunoovarioscriteriosqueseleccionemos.
-
Enlasiguientepantallapodremosseleccionarunordendeterminadoaestablecer,deacuerdoauncampoqueseleccionemos,enformaascendenteodescendente.
Enlaltimapantallaseleccionamoslaopcinqueapareceenformapredeterminada,ydevolvemoslosdatosdirectamenteaMicrosoftExcel,yledamossiguienteenlapantalladelasistente:
-
Llegamosenestaetapafinal,alamismapantalla,queenelcaptuloanteriordondetendremoselesqueletodelatabladinmica:
Aqupodremosarmarlatabladinmicasimplementeajustandoloscamposyllevndolosalreadefila,readecolumnas,yalreadedatos.RecordemosquedesdeaqupodemoslograrlomismoqueyarealizamosenelcaptuloanteriorcondatosdeunabasededatosdeExcel:
-
GRAFICOSDINMICOSParagenerarunatabladinmica,yapartirdelamisma,reflejarungrficodinmico,simplementenosposicionamosencualquieradeloscamposdelatabladinmicaymedianteelbotnderechodelMousetendremoslaopcindegenerarelgrfico.Veamosenelsiguienteejemplo:
MediantelaopcindeGrficodinmico,estenosgenerarenunanuevahojaelgrficodinmicoquesedesprendedelatabladinmicageneradaanteriormente.
-
DentrodelGrficodinmicopodremosajustarycambiardeposicincualquieradeloscampos,perosiempretomandoencuentaquealcambiarelgrficodinmico,tambincambiarenformasimultanealatabladinmicadelacualdepende.ElGrficodinmicotieneasuvez4reasdiferenciadas,yson:
1. Camposdecategoras(enestecasovendedores)2. Camposdeserie(enestecasonotenemos)3. Camposdepgina(enestecasonoincluimosningunoan)4. Camposdedatos(enestecasoelcampoVentas2005)
Enelsiguienteejemplovemoselcasodeteneruncampoencadaposicin:
-
MDULO
GRFICOS
PERSONALIZADOSY
FORMULARIOS
-
MdulodeGrficosPersonalizadosyFormulariosDentrodeestemduloseverndiferentesopcionesalmomentodegraficarenExcelascomoopcionesdegrficospocoutilizadas,ycasosprcticosdondeapliquemosusosdegrficosparadiferentesactividades.Comencemosconungrficosencilloenelquesepretendagrficasexportacionesdeunproductoadiversospasesatravsde4aos.Nosbasaremosenlasiguienteplanilla:
ParacomenzarnosposicionamosencualquieradelosdatosdenuestraplanillayvamosalasistenteparagrficosmedianteelmenInsertarGrfico
Enlaprimerapantallaquenosdespliegaelasistenteparagrficostendremoslaposibilidaddeseleccionarlacategoradelgrficoquegeneraremosydentrodecadacategoratambinpodremosseleccionarlasubcategoradedichogrfico,comovemosenlapantallaacontinuacin:
-
VeamosquetenemosunbotndePresionarparavermuestra,que,dependiendoenquecategoranosposicionamosnosvaadarunaimagenpreliminardelgrficoquegeneraremosatravsdelalistaobasededatosquetenemosseleccionada.Alpresionarsiguiente,ypasandoalsegundopasodelasistente:
Aqusedestacandospuntos,enprimerlugar,elhechodequeExceltomenformaautomticacomoRangodedatosdesdeA1:E6,incluyendoaqulosttulosdeamboscampos,perotomandolafila1comosifueraunaserieagraficar,yestonosgeneraunerror,yaqueaparecerunaseriequenocontieneinformacin(veamosenlamuestra).
-
Enestecasocorrigiendoelreaagraficarytomandodesdelafila2,oseamarcandocomoRangodedatosdeorigendesdeA2:E6,nosquedarlamuestracorrespondientealreaqueefectivamentedebemosgraficar.Sivemoslasopcionesdegraficarlasseriesen:FILAS,COLUMNAS,enformapredeterminadaExcelmarcalasseriencomocolumnas,yporlotantocadaaoformarunaseriedenuestrogrfico,encambiosiintercambiamosypasamosalaopcindeSeriesenFILAS,severdelasiguientemanera:
-
Enestecasoloqueestamosrepresentandosonlasventasdecadaunodelosaos(1,2,3,4)ydentrodecadaaolasseriesestnrepresentadasporlasexportacionesacadapas.AsuvezsidamosclicenlasolapadeSERIEenestamismapantallaveremoslosiguiente:
Enestapantallapodremosdefinir:
Nombre:Elrango(ocelda)dondeencontramoselnombredecadaserie(enestecasodecadapas)
Valores:Elrangodeceldasdondeencontramoslosvalorescorrespondientesadichaserie(valoresdeexportacionesatravsdelosaosdedichopas)
Rtulosdelejedecategoras(X):AquvamosasealarelrangoB1:E1queeselrangodondeencontramoslosttulosdelascategoras(enestecasolosaos)
-
Presionamosensiguienteypasamosal3erpasodelasistente:
AqucompletamosenlasolapadeTtuloslosttulosdecadasectordelgrfico,enprimerlugarelTtuloGeneraldelgrfico,luegocompletamoselTtulodeEjeX,yporltimoeltitulodeEjeY.PasamosalasolapadeEJE:
Aqupodemosmarcarodesmarcarlasopcionesquenospermitirnvisualizarlosejesdevaloresycategoras,otambinpodremosdejarlodesmarcadoencasodequequererocultardichosejesenelgrfico.
-
AlpasaralasolapadeLneasdeDivisin:
Elefectoqueproducelascasillasdeverificacinenestasolapadecategoraseseldeagregarreferenciasparaidentificarlosvaloresenelgrfico,enungrficodelneas,yanivelestadsticoestoesfundamentalparatenerunareferenciamasprecisadelosvaloresquevemosenelgrfico.PasandoalasolapadeLeyenda:
-
Aquseleccionamoslaubicacindelaleyendadereferenciadeseriesdentrodelgrficoascomotambinpodemosdestildarlacasilladeverificacinencasodequererocultarlaleyendadelgrfico.
EnlasolapadeRtulodeDatos,tendremoslaposibilidaddereflejarenelgrficolosNombresdelaseries(enestecasolospases),Nombresdelascategora(aosenestecaso),yValores(valorescorrespondientesacadadatograficado).Debemostenerpresentequemarcartodaslasopcionesmuchasvecespuederesultarcomplejoparapoderentendercorrectamentetantasintaxisdentrodelgrfico,ymuchasveceshacequeelgraficoquederealmentecomplejoparaunanlisisposterior.
-
Enestaltimasolapa,sinosotrospretendemos,dentrodelapantalladelgrficoagregarlainformacindelosdatosgraficados,yaseaporquelosmismosseencuentranenotraubicacin,oporquequeremostenerlosdisponiblesdentrodelgrfico,marcamoslaopcindeMostrarTabladeDatos,ydeesamaneranosquedanlosdatosincrustadosdentrodelgrfico.Alpresionarsiguiente,pasamosalpaso4delasistentedondeseleccionamosentonces,laubicacinqueledaremosalgrfico:
Podemosubicarelgrficotantoenunahojanueva,comotambinpodemosubicarlocomounobjetodentrodelahojaactiva,olahojaqueseleccionemos.Finalmente,vemoselgrficodentrodenuestrahoja,elcualpodremosseleccionar,ydesdelosbordes,talcualcomosifueraunaimagencambiarsusdimensiones:
-
AREASDELGRFICOElgrficoestformadobsicamentepordiversasreas:
readelgrfico(elfondoblancoquevemosdentrodelgrfico) readetrazado(elfondogrisenelqueposicionamoslasseries) Ttulodelgrfico(ennuestrocasoexportaciones) Series(ennuestrocasolascolumnas,queformanlasexportacionesacadapas) Ejedecategoras(ejex) Ejedevalores(ejey) Leyenda(cuadroquetienelarepresentacindelaseries) Ttulodelejedecategoras(Aosennuestrocaso) Ttulodelejedevalores(Importesennuestrocaso)
Enelcasodequerercambiarcualquieradelasreasdelgraficorecordarquesimplementenosposicionamossobredichareayconelbotnderechonosdesplegarlasopcionespropiasdelreamarcada.Parapoderrecurriralamodificacindecualquieradelospasosquerecorrimosmedianteelasistente,nosposicionamossobreelreadelGrfico(reablanca)yconelbotnderecho:
Tipodegrfico(paso1delasistentedondeseleccionamoslacategoradelgrfico) Datosdeorigen(paso2delasistentedondeindicamoselrangodedatos) Opcionesdelgrfico(paso3delasistentedondeindicamosttulos,leyendas,ejes) Ubicacin(paso4delasistentedondeseleccionamoslaubicacindeseadaparael
grfico).
-
ModificacionesdeGrficosParamodificarelreadegrficosimplementedamosdobleclicsobredichareaynosaparecerlasiguientepantalla:
Aqupodremosindicarnosololosbordesdelrea,permitiendoseleccionarelcolordelborde,elestilodelmismo,ascomotambinelgrosor,sinoquetambinpodremoscambiarlafuente(juntoconsuspropiedades),ascomotambinelfondodelgrfico(rea).Tambinpodemospresionarsobreelbotndeefectoderellenoparamodificarlosefectosqueapliquemossobreelfondodelgrfico,entrelosquepodemos:
-
Aplicardegradado,condiferentesefectosdelmismo,conuncolor,odos,conefectosdetransparencias,yademscondiversosestilosdesombreado.Podemosaplicartambintexturas:
-
AscomotambinindicarleconelbotndeOtraTextura,ybuscarelarchivodondeseencuentrelatexturaquequeramosdarlealreadegrfico.Podremosademsdeseleccionaruncolor,yefectodedegradadoaplicarunatramaenparticular:
-
Porltimosinosparececonveniente,tambinpodremosubicarcomofondodelgrficounaimagen,seleccionandolamismadesdesuubicacineneldisco:
-
Estemismotipodeefectossepuedeaplicarsobrecualquierreadelgrfico,porejemplotambinsobrelasseries,obteniendoentoncesungrficocomoelquesereflejaacontinuacin:Sibiennosonlosmismosdatosqueenelejemplovistoanteriormentelaideaesreflejarnosololoscambiosdelreadegrficosinotambindelreadetrazado,yasuvezdelreadeseries,modificandocadaserieyviendocomoagregarlabanderadelpascomoidentificacindedichaserie.GrficosPersonalizadosGeneraremosenelsiguienteejemplounGrficoquedenominaremospirmidepoblacionalapartirdelasiguienteplanilla:
Enlamismaencontramosuntotaldelamuestra,enestecasodelbarrioMALVINyseparadoporsexo(hombres,ymujeres)yasuvezeltotaldivididoporgrupoetario.Laideaesgraficarestoyquepodamosrepresentarlascantidadesdepersonasdecadasexoycadabarrarepresenteaungrupoetariodiferente.Elresultadofinalsemuestraacontinuacinyluegoveremoselpasoapasoaseguirparaobtenerdichogrfico:
-
Parallegaraesteresultadofinal,comenzaremosporgenerarconlosdatosungrficodebarrasseleccionandoelrangoagraficar(enestecasodesdeA1:K5).AllvamosaInsertarGrfico:
-
SeleccionamoselgrficodetipoBARRASprimersubtipoqueeseldeBARRAAGRUPADA,luegoledamosclicenelbotnsiguiente:
NotemosqueaqucorregimosenprimerlugarelRangodedatos(A4:K5)paratomarnicamentelossexosylosgruposdeedades,quecomprendennicamenteloquevamosagraficar,peroademsvamosadarclicsobrelasolapaseries:
-
AquloquehicimosfueagregarenelRtulodelejedecategorasXelrangoquevadesdeB2:K2dondeindicamoslosttulosdegruposdeedadesqueformarnpartedenuestrogrfico.Ennuestrosiguientepaso:
Aqudefinimoslosnombrestantodelgrficogeneralcomotambindelosejes.
-
Estefueelresultadofinalqueobtuvimos,ahoraveamosloscriteriosquetenemosqueutilizarparaperfeccionarlapirmidepoblacional.Enprimerlugar,paraqueunsexotomevaloresaladerechadelcortedeejeXyelotrosexotomevaloresalaizquierdadelcortedeejeXdebemostomarencuentaquelologramosfcilmentecambiandoelsignoenlaplanillaoriginalcomovemosacontinuacin:
Veamosqueagregamosunalneadondesimplementelecambiamoselsignoalosvalorescorrespondientesalsexofemenino,eincluimosestaseriedentrodelgrficodelasiguientemanera:
-
Aquincluimosdentrodelacategoramujeres,elrangoB6:K6enlugardelrangoB5:K5quetenaanteriormentevaloresnegativos.Recordarparareasignarlasdireccionesdedichorangoaccedemosclickeandoconelbotnderechosobreelreadegrfico(fondoblancodelgrfico)yseleccionandocomoopcinDatosdeOrigen,yallpresionamossobrelapestaadeSerie.
Ahoracambiaremoslaposicindecadaunadelasbarrasparaquesedisponganalineadasysinespaciosinseparacinentrelasmismas.Estolologramospresionandoenunadelasbarrasdelgrfico(cualquieradelasseries),yluegoconelbotnderechodelMouse,seleccionamoslaopcindeFormatodeSeriedeDatos,yenlasolapaOpcionesveremosjustamentedosopciones:
-
EndichasopcionescambiaremoseldatodeSuperposicin,elcualpasaremosaunvalorde100,paraquelasbarrasquedenalineadas,yelanchoderangoavalor0,paraquecadabarraocupeeltotaldereadetrazado,ynoexistanespaciosintermediosentreunabarrayotra.Veamoselefectodelmismo:
Enestesiguientepasovamosaquitarelrtulodelasleyendasencadagrupodeedad:EstolologramospresionandoconelbotnderechodelMousesobreelreadegrficoyluegovamosaOpcionesdeGrficoyluegoenlasolapadeEjedesmarcamoslacasilladeverificacincorrespondientealEjedeCategorasX,comovemosacontinuacin:
VemosqueelefectoinmediatodeestaaccinesquitarlareferenciaalejeX.
-
EnestesiguientepasovamosacambiarelformatodeEjecategorasconlaposibilidaddequepodamosversiempredgitospositivos,peroaambosladosdelcrucedeleje.EstolologramosseleccionandoenprimerlugarelejedecategorasX,yluegoconelbotnderechodelMousedamosclicenlaopcindeFormatodeEjes,yallenlapestaaNmero,aplicamoscomoTipo(0;0)paraque,tantolosvalorespositivoscomonegativosaparezcansinsigno(ni+ni).
AplicandolosretoquesdeFormatoderea,degradados,vistosenelcaptuloanterior,llegamosaunaimagensimilardelgrficoquedebamosgenerar:
-
GrficosconDobleEjeDadalasiguienteplanilla,generaremosungrficodelneasquelarepresente:
Generamosentonceselgrficodelneascorrespondiente,obteniendoelsiguienteresultado:
-
Veamosquemasalldequegraficamosambasseries,VentasyPorcentajes,altenerambasvalorestotalmentedismiles,estonosgeneraunimpactovisualyaquelaseriedeporcentajecontienevaloresentre0y1yporlotantolalneaquedapegadaalejedecategoras.ParaquelaseriedePorcentajetomecomoreferenciaunejesecundario,seleccionamoslaseriedandoclicsobrecualquieradelosvaloresdelalneaquerepresentaadichaserieenelgrficoyconelbotnderechoaccedemosalaopcinFormatoSeriedeDatos.EnestepuntodamosclicsobrelapestaaEjes,yallagregamosomarcamoslaopcindeEjeSecundario.Elimpactodelmismoserelsiguiente:
Parasepararambasseriesyquelosvaloresquedendistanciados,yasuvezquecadaunadelasserieshagareferenciaaunejediferente,presionamossobreelejesecundarioagregado,yconelbotnderechoseleccionamoslaopcinFormatodeEjesenlapestaadeEscalaCambiaremoslaescalaparaqueelvalormximoestedadoenel0,5(osea50%).Pasamosentoncesaobtenerelsiguientegrfico:
Deestamanera,alapersonaquetengaquedarunalecturadelgrficoleresultarmasfacilanalizarambasseriessabiendoqueambastomanescalasdiferentesyhacenreferenciasaejesdiferentesdelgrfico(unaalejeprimario,yotraalsecundario).
-
GrficosdeGANTTDadalasiguienteplanilla,generaremosungrficodeGANTTquenosmuestreladuracindelastareas,ynosdelaopcindeadaptarseautomticamenteantecambiosenfechasdeinicio,oduracindelasmismas.Estegrficoesmuyusado,enproyectosparaencontrarpuntoscrticos,ascomotambindeterminaratrasosenlasentregasyevaluardecisionesatomarantedesvosenelcronogramapropuesto.
Enlasiguienteplanillavemosquetenemosfechainicialdecadatarea,fechadefindecadatarea,ymedianteunaformulacalculamoslosdasquedemoramoseneldesarrollodecadatarea.Apartirdeallgeneramosungrficodebarras,yllegaremosalsiguientegrfico:
-
FormulariosEsteconjuntodeherramientasnosaportarenExcel,unestilogrficoquenospermitirmanejarlaplanilladesdeunentornovisualmsameno.Enelsiguienteejemploveremoscomoutilizarlabarradeherramientas,personalizandovariasopcionesalrespecto.
Enlaplanillaaplicaremosvariasherramientasdeltemaformularios,paraesto,elprimerpasoserdejarvisibledichabarradeherramientas,yparaesovamosalmenVerBarraHerramientasFormularios,comovemosacontinuacin:
Estaopcinnosdesplegarlasiguientebarraconlaquetrabajaremosenlossiguientespasos:
-
LaprimeraherramientaqueaplicaremosserladeCuadroCombinadoparalaspropuestasdediferentestiposdehabitacionesconlasquecuentaelhotel.Paraesto,vamosacolocarunaplanillaauxiliarquenosproveadelasiguienteinformacin:
Vamosatomarentoncesdelabarradeherramientas,elCuadroCombinado,yalseleccionarnospermitirdibujardichocuadrosobrelaplanilla:
-
Paraquedichocuadrodesplieguelasopciones,detiposdehabitaciones,daremosclicderechosobreelcuadrocombinadoquedibujamos,yseleccionamoslaopcindeFormatodeControl.Estonosdesplegarlasiguientepantalla:
AqucompletaremoselRangodeEntrada:ennuestrocasoformadoporelrangoE1:E3(losdistintostiposdehabitacionesquesedesplegarnalpresionarsobreelcuadrocombinado).Lavinculacinconlaceldalaharemosconunaceldaarbitraria(H1),enellamasadelantevisualizaremoselnmerodendiceoposicinqueelusuarioseleccionedelcuadrocombinado.
-
Porltimoenestecuadrolaslneasdeuninverticalesrepresentanlacantidaddedatosquesevanavisualizarporpantallaquesemuestreenelcuadrocombinado.
VeamosquealseleccionarenestecasolahabitacinSINGLE,aparecerelnmero1enlaceldaH1quefuelaceldaconlaquevinculamoselcuadrocombinado.Encasoqueelusuarioseleccionelahabitacindoble,sereflejarelnmero2enH1,ynmero3encasodeseleccionarlaSUITE.ParaqueautomticamentepodamosdeterminarelpreciodelahabitacinporDIA,utilizaremosunafuncindeExcelqueserINDICE:=INDICE(F1:F3;H1)ConestoobtendremosdelrangoF1:F3,elnmerodeposicinquesedeterminaenlaceldaH1.Enestesiguientepasovamosautilizarotrodeloscontrolesdelabarradeformularios,queserelControldeNmeros:
Enestapantallacontrolaremosnuestroformulario.Aplicaremosunvaloractual.Elvalormnimoloestableceremosen1,yelvalormximoen30,yelincrementoen1.Estoquieredecirqueel
-
mnimodedasdeestadaser1,yelmximodedasdeestadaser30.LaceldaconlacualvincularemosserlaceldaH2(celdaarbitraria).EnlaceldaB5,aplicaremoscomofrmulaunareferenciaalaceldaH2yaqueestacontendrelvalorseleccionadoenelformulario.ParaelcasodelaeleccindecocheraoptaremosporuncontroldenominadoCasilladeVerificacin(delamismabarradeformularios).Estonosdaruncheckboxconvaloresdeverdaderoofalso,segnlacasillaestemarcadaono.
EstableceremoselvalordelacocheraenbasealaceldaH3,porlotantoennuestraceldaB6aplicaremoslasiguienteformula:=SI(H3;5;0)*B5Estaformulanospresentarelvalor5encasodequelacasilladeverificacinestemarcadayceroencasodequenoestemarcada,basndoseenelvalordelaceldaH3queserverdaderoofalso,yestolomultiplicamosporlaceldaB5quetienelacantidaddedasdeestadaenelhotel.Laideaesquemedianteelejemploveamoselusodediferentesformularios,perotambincadaunolopuedeadaptaralasnecesidadesdelaplanillaqueesteimplementando.
-
Enelsiguientecasoparalasformasdepago,dibujaremosuncuadrodelista,yentoncesdaremoscomorangodeentradalasceldasquecontienenlasdiferentesopcionesencuantoaformasdepago.EnelcasodelporcentajedeintersnuevamenteutilizaremoslafuncinINDICEcomoaplicamosanteriormente.Veamoslaplanillafinalizada,eimplementandolosdiferentesformularios:
Existendiferentesbotonesdelabarradeformulariosque,sibiennofueronutilizadosenesteejemplosontilesendiferentescasoscomoson:
Etiqueta Cuadrodegrupo Botn Botndeopcin Barradesplazamiento
-
MDULO
MACROS
EN
EXCEL
-
MduloMacrosenExcelConceptoGeneral:
Macro:UnprogramaescritoograbadoporelusuarioquealmacenaunaseriedecomandosdeMicrosoftExcelquepuedenutilizarseposteriormentecomounnicocomando.Mediantelasmacrospuedenautomatizarselastareascomplejasypuedenreducirseelnmerodepasosnecesariospararealizarlastareasqueseejecutanconmsfrecuencia.LasmacrossegrabanenellenguajedeprogramacindeVisualBasicparaAplicacionesdeMicrosoft.TambinpuedenescribirselasmacrosdirectamenteenelEditordeVisualBasic.LaideadegenerarmacrosenMicrosoftExcelradicaenlaautomatizacindetareasenlaplanillaelectrnica.DeestamaneraquedarimplementadaunasolucinenVisualBasicparaaplicaciones(VBA)queesellenguajedeprogramacinqueseutilizaenlasuitedeOfficeparadesarrollarMacros.Existenbsicamentedosformasdedesarrollarmacros:
MedianteelusodelaGrabadoradeMacros MedianteelEditordeVisualBasicparaaplicaciones
Comencemosconelusodelagrabadoraenunejemplodondeapliquemostrestareas,enprimerlugarescribiremosHolaenlaceldaA1,luegopondremosNegritayporltimopintaremosdefondoamarillodichacelda.Paraesto,comenzaremosporencenderlagrabadora,paraquecaptecadaunadelastareasquevamosrealizando:LagrabadoralaencendemosmedianteelmendeHerramientasMacroGrabarnuevamacro,comovemosacontinuacin:
-
Nosaparecerlasiguientepantallaparaconfigurarlagrabacindedichomacro:
Acadamacroquegrabemoslepodemosasignarunnombre,enformapredeterminadalagrabadoraasignarMacro1,Macro2.LuegopodremostambinasignarunMtodoAbreviado,paraqueelusuarioquedeseeejecutarrpidamenteunmacropuedaacudiraesteatajodeteclado(porejemploctrl.+T).Podremosgrabarelmacroenelmismolibroenelcualestamostrabajando,podremosgrabarloenunlibroindependiente,otambincomoopcinadicionalpodremosgrabarloenelLibroPersonal,queesalgoascomounabibliotecademacrospersonalesquepodemosejecutarencualquierarchivodeExcelquedeseemoseldademaana.Enladescripcinpodemosdarpautasprecisasdedeterminadosdetallesdelastareasqueejecutarnuestromacro.Cuandoconfiguramosdichapantalla,alpresionarAceptar,lagrabadoradeMacrosgeneraruncdigoVBAporcadaunadelastareasquevayamosrealizandodeahoraenmas(nocaptalosmovimientosdelMouse,nidelcursorquerealicemos,perosielingresoacualquieradelasopcionesdeExcel).Realizamosacontinuacinlastrestareaspropuestas,yluegodetenemoslagrabacinmedianteelmendeHerramientasMacroDetenerGrabacin.
Bueno,ahoraveamoscomorepetimoslastareasejecutandoelmacrograbadoenestaetapaanterior.UnadelasposibilidadesquetenemosesejecutarelmacromedianteelmendeHerramientasMacroMacros
-
Seleccionamoselmacroaejecutaryluegopresionamossobreelbotnejecutartalcualapareceenlapantallaacontinuacin:
Enestapantallanosolopodemoselegirelmacroaejecutar,yluegorealizarlaejecucinsinoquetambinencasoquequeramosdarunmtodoabreviadobastarconseleccionarelmacroyconelbotndeopcionesnosaparecerelsiguientecuadrodondeasignaremoselmtodoabreviadoquedeseemos:
EnestecasoelusuarioquepresionelacombinacinCTRL+tejecutarelmacroquedesarrollamosanteriormente.Noolvidemosqueelmacronoeliminaelcontenidodelaceldaparaejecutar,sinoquelohacesobrescribiendoelcontenidoanteriordedichacelda.Podramosbiencrearunmacroquenospermitaborrarparaluegovolveraejecutar.
-
EnelcasoquedeseemoscambiarelmtodoabreviadovolveremosarepetirelprocedimientodeiralmenHerramientasMacroMacros(omedianteelaccesodirectodeALT+F8),seleccionamoselMacroalquelequeramoscambiarelmtodoabreviadoyconelbotnopcionesaccedemosalamismapantalladondereasignaremoselabreviado.Ahora,sinosotrosquisiramosejecutarelmacrodeunaformamssimpleyrpidatambintenemoslaposibilidaddeinsertarunbotndesdelabarradeformularios,yasignarlealmismounmacro.EstoloharemosmedianteelmenVerBarraHerramientasFormularios,comovemosacontinuacin:
Enlabarradeherramientasdeformulariosseleccionaremoselbotndecomandoylodibujaremosenlaplanillaconlaqueestamostrabajando.
Elbotndecomandonospermitirdibujarlosobrecualquierlugardelaplanillaconlacualestemostrabando.Esimportanteacotarquedichobotnquedarsobrelaplanillaynoformandopartedelamismaenunaceldaenparticular.Unavezquedibujemosdichobotndecomando,alsoltarelMousenospermitirasignarleunmacroalmismo.EnelcasodequehayamossoltadoelMouseynosquedemossinasignarunmacroalmismo,podemosmedianteelbotnderechosobreelbotndibujadoseleccionarlaopcindeAsignarMacro.
-
Adichobotnpodremoscambiarleelnombre,modificarleeltamaocambiareltextoqueaparecedentrodelbotn.RecordarqueparaseleccionarelbotnsimplementeconelCTRLpresionadodamosclicsobredichobotnyyapasamosalmodoedicindondeaparecenlospuntosdeagarresobredichobotn.Deahoraenmas,simplementeelusuariopresionardichobotnparaejecutarelmacroasignado.NOTA:Siqueremosasignarunmacroaunaimagenoaunmacropodemoshacerelmismoprocedimiento,osea,insertarlaimagenoelgrficoyconelbotnderechoseleccionarlaopcindeasignarmacroparaindicarquemacroasignaremosadichaimagen.PorotroladootramaneraquetenemosdegenerarunaformarpidadeejecucindemacrosesgenerandouniconoenlabarradeherramientasdeExcel.ParaestopresionaremossobrelabarradeherramientasestndarconelBOTNDERECHODELMOUSE,yseleccionamoslaopcinPERSONALIZAR.
-
Nosaparecerlasiguientepantalla:
EnlasolapaComandos,buscaremoslacategoraMacrosyaladerechaenlalistadecomandosveremosdostiposquesern:PersonalizarelementodemenyPersonalizarbotn,estaltimaopcinserlaqueutilicemosparaarrastrarelicono(medianteelbotnizquierdodelMousepresionado)haciaunlugardelabarradeherramientasestndardeExcel.
Elbotnnosquedenlabarradeherramientasysimplementecuandopresionemosporprimeravezendichobotnnospermitirasignarleelmacrocorrespondiente.
-
Encasodequenosotrosqueramosmodificarelmacroydeahoraenmsdeseemoscambiarlaestructura,paraqueloapliqueaunconjuntodeceldas,oparaquenosescribadiferentespalabrasporcadacelda,nonosquedarotraqueacudiraleditordeVisualBasicparaAplicacionesparacambiarlasintaxisdelagrabacin.ConlacombinacinALT+F11pasaremosrpidamentealentornoVBA,tambinpodramospasaradichapantallamedianteelmendeHerramientasMacrosEditorVisualBasic
Nosdesplegarlapantallaquevemosacontinuacin:
Enestapantallatrabajaremosescribiendonuestrospropiosmacros.Comovemossobrelaparteizquierdadeestapantalla,tenemosunacarpetadeMdulosdondeencontraremoslosdiferentesmacrosquesehayandesarrollado.EnnuestrocasosolocontamosconelMdulo1queesdondeseencuentraelmacrograbadoanteriormente.AldardobleclicsobreelMdulo1veremosaladerechadelapantallaelcdigoqueanteriormentelagrabadorafueescribiendoautomticamentemientrasnosotrosrealizbamoslastareas.
-
CDIGOVBAElcdigoVBAsemanejaenidiomaingls.Engeneralellenguajebsicamentesemanejaorientadoaeventos.Cadaobjetoseseparamedianteel.(Punto)delasdiferentespropiedadesqueposee.
Conceptosesenciales.
Clase:Esunaagrupacindeobjetosconlasmismascaractersticasypropiedades.
Objeto:Sonelementosquesecaracterizanporposeerpropiedadesencomn.Mtodo:Cualquieroperacinpasibledeserejecutadasobreunobjeto.Ejemplo: Clase:MediosdeTransporte(generalizacin) Subclase:Autos(especializacin)
Variable:Unlugardealmacenamientoconnombrequepuedecontenerciertotipodedatos.Cadavariabletieneunnombrenicoque la identifica.Nombresdevariabledebencomenzarconun carcteralfabtico,debensernicosdentrodelmismombito,nodebencontenermsde255caracteresynopuedencontenerunpunto.CadamacroquevayamosescribiendoeneleditordevisualBasic,debecomenzarconlasentenciaSub,yterminarconlasentenciaEndSub.
-
Veamosennuestroprimerejemplo.DentrodelacarpetaMdulostenemosnuestroModulo1ydentrodelmismodesarrollamosdosmacros.NuestroMacro1fuegrabadomedianteelusodelagrabadoraparamacrosyluegocomenzamosmediantelaordenSubelmacrodenominadoPrimeroquesimplementeescribelapalabraHOLAenlaceldaA1.EnformapredeterminadacuandohacemosreferenciaalaceldaA1,MicrosoftExcellotomarsobrelahojaactiva(hojaenlaqueestamosposicionadosalejecutarelmacro).Formasdereferiralahoja:ActiveSheet.Range(A1).valueAquhacemosreferenciaalaceldaA1delahojaactivaSheets(1).Range(A1).ValueAquhacemosreferenciaalahojaconndice1,celdaA1dellibroactivoSheets(Hoja1).Range(A1).ValueAquhacemosreferenciaalahojadenominadaHoja1,celdaA1RepetimosqueenformapredeterminadaExceltomaActivesheetcuandonosreferimosaunaceldadeterminada.
Mtodos.Lamayoradeobjetostienencomportamientosorealizanacciones,porejemplo,unaaccinevidentedeunobjetococheeseldemoverseoloqueeslomismo,trasladarsedeunpuntoinicialaunpuntofinal.Cualquierprocesoqueimplicaunaaccinopautadecomportamientoporpartedeunobjetosedefineensuclaseparaqueluegopuedamanifestarseencualquieradesusobjetos.As,enlaclasecochesedefiniranenelmtodomovertodoslosprocesosnecesariosparallevarloacabo(losprocesosparadesplazardeunpuntoinicialaunpuntofinal),luegocadaobjetodelaclasecochesimplementetendraqueinvocarestemtodoparatrasladarsedeunpuntoinicialaunpuntofinal,cualesquieraquefueranesospuntos.RepasemosacontinuacintodosestosconceptosperoahoradesdeelpuntodevistadealgunosdelosobjetosquenosencontraremosenExcelcomoWorkSheet(Objetohojadeclculo)oRange(Objetocasillaorangodecasillas).UnobjetoRangeestdefinidoporunaclasedondesedefinensuspropiedades,recordemosqueunapropiedadesunacaracterstica,modificableono,deunobjeto.Entrelaspropiedadesdeun
-
objetoRangeestnValue,quecontieneelvalordelacasilla,ColumnyRowquecontienenrespectivamentelafilaylacolumnadelacasilla,Fontquecontienelafuentedeloscaracteresquemuestralacasilla,etc.Range,comoobjeto,tambintienemtodos,recordemosquelosmtodossirvenllevaracabounaaccinsobreunobjeto.PorejemploelmtodoActivate,haceactivaunaceldadeterminada,Clear,borraelcontenidodeunaceldaorangodeceldas,Copy,copiaelcontenidodelaceldaorangodeceldasenelportapapeles,...
Conjuntos.Unaconjuntoesunacoleccindeobjetosdelmismotipo,paralosqueconozcanalgnlenguajedeprogramacinesunarraydeobjetos.Porejemplo,dentrodeunlibrodetrabajopuedeexistirmsdeunahoja(WorkSheet),todaslashojasdeunlibrodetrabajoformanunconjunto,elconjuntoWorkSheets.Cadaelementoindividualdeunconjuntosereferenciaporunndice,deestaforma,laprimera,segundaytercerahojadeunlibrodetrabajo,sereferenciarnporWorkSheets(1),WorkSheets(2)yWorkSheets(3).
ObjetosdeObjetos.Esmuyhabitualqueunapropiedaddeunobjetoseaotroobjeto.Siguiendoconelcoche,unadelaspropiedadesdelcocheeselmotor,yelmotoresunobjetoconpropiedadescomocubicaje,caballos,nmerodevlvulas,etc.ymtodos,comoaumentar_revoluciones,cargar_combustible,mover_pistones,etc.EnExcel,elobjetoWorkSheetstienelapropiedadRangequeesunobjeto,RangetienelapropiedadFontqueestambinunobjetoyFonttienelapropiedadBold(negrita).TengaestomuypresenteyaqueutilizaremosfrecuentementePropiedadesdeunobjetoqueserntambinObjetos.Dichodeotraforma,haypropiedadesquedevuelvenobjetos,porejemplo,lapropiedadRangedeunobjetoWorkSheetdevuelveunobjetodetipoRange.
Insertarunnuevomdulo.Unmdulosirveparaagruparprocedimientosyfunciones.Elprocedimientoylafuncinsonentidadesdeprogramacinquesirvenparaagruparinstruccionesdecdigoquerealizanunaaccinconcreta.ParainsertarunmduloactiveopcindelmenInsertar/Mdulo.Seactivarunanuevaventana,siaparecedemasiadopequea,maximcela.
Insertarunprocedimiento.Yahemosdichoqueunprocedimientoesunbloquedeinstruccionesdecdigoquesirvenparallevaracaboalgunatareaespecfica.Unprocedimientoempiezasiempreconlainstruccin
-
SubNombre_ProcedimientoYterminaconlainstruccinEndSub.Acontinuacincrearemosunprocedimientoparaponereltexto"Hola"enlacasillaA1.Ejemplo1SubPrimeroRange("A1").Value="Hola"EndSubObserveelcdigo.Range("A1").Value="Hola"EnestalneaestamosindicandoquetrabajamosconunobjetoRange.ParaindicarlequenosreferimosalacasillaA1,encerramosentreparntesisestareferencia(msadelanteverotraformadereferirnosalascasillas).Deesteobjeto,indicamosquequeremosestablecerunnuevovalorparalapropiedadValue,observequeparasepararelobjetodesupropiedadutilizamoslanotacinpunto.RecuerdequeelconjuntoRangeesunobjetoquependedelobjetoWorkSheets,asporejemploelsiguientecdigoharalomismoqueelanterior.WorkSheets(1).Range("A1").Value="Hola"Bueno,dehechonohacelomismo,enlaprimeraopcin,eltexto"Hola"seponedentrodelacasillaA1delahojaactiva,mientrasqueenelsegundoesenlacasillaA1deprimerahoja(delconjuntodehojas).Lasegundanotacinesmslarga,perotambinmsrecomendableyaqueseespecificantodoslosobjetos.Enmuchasocasionessepuedenomitiralgunosobjetosprecedentes,noleaconsejamoshacerlo,susprogramasperdernclaridadyconcisin.SideseahacerreferenciaalahojaactivapuedeutilizarActiveSheet,as,elprimerejemplolodejaremosdelamanerasiguiente.SubPrimeroActiveSheet.Range("A1").Value="Hola"EndSubSideseaponer"Hola"(ocualquiervalor)enlacasillaactiva,puedeutilizarlapropiedad(objeto)ActivecelldeWorkSheets.Asparaponer"Hola"enlacasillaactivadelahojaactivaseria,
-
SubPrimeroActiveSheet.ActiveCell.Value="Hola"EndSubParaterminarconesteprimerejemplo.WorkSheetsestndentrodelObjetoWorkBooks(librosdetrabajo)yWorkBooksestndentrodeApplication.Applicationeselobjetosuperior,eselquerepresentalaaplicacinExcel.As,elprimerejemplo,siguiendotodalajerarquadeobjetosquedaradelaformasiguiente.SubPrimeroApplication.WorkBooks(1).WorkSheets(1).Range("A1").Value="Hola"EndSubInsistiendoconlanomenclatura,Applicationcasinuncaesnecesarioespecificarlo,piensequetodoslosobjetospendendeeste,WorkBookssernecesarioimplementarlosienlasmacrossetrabajacondiferenteslibrosdetrabajo(diferentesarchivos),apartirdeWorkSheets,esaconsejableincluirloenelcdigo,sobretodosisequieretrabajarcondiferenteshojas,ver,sinembargo,queenmuchasocasionesnoseaplica.Ejecutarunprocedimientoofuncin.Pruebeejecutarelprimerprocedimientodeejemplo.
1. Siteelcursordentrodelprocedimiento.2.ActiveopcindelabarrademensEjecutar/EjecutarSubUserform.Tambinpuedehacer
clicsobreelbotnopulsarlateclaF5.
Paraejecutarelprocedimientodesdelahojadeclculo.Debeestarenunahoja,noeneleditordeVisualBasic
1. ActiveopcindelabarrademensHerramientas/Macro/Macros.Sedespliegaunaventanaquemuestraunalistadondeestntodaslasmacrosincluidasenellibrodetrabajo.
2. SeleccionelamacrodelalistaypulsesobreelbotnEjecutar.Ejemplo2Enestesegundoejemplosimplementeampliaremoslafuncionalidaddelamacrodelejemplo1.Ademsdeescribir"Hola"enlacasillaA1delaceldaA1,lapondremosennegritayledaremoscoloraltexto.
-
ParaelloutilizaremoslaspropiedadesBoldyColordelobjetoFont.SubSegundoActiveSheet.Range("A1").Value="Hola"ActiveSheet.Range("A1").Font.Bold=TrueActiveSheet.Range("A1").Font.Color=RGB(255,0,0)EndSubTrue.True,quetraducidoesverdadero,simplementeindicaquelapropiedadBoldestactivada.Sisedesearadesactivar,bastaraconigualarlaalvalorFalse.LafuncinRGB.ObservequeparaestablecerelcolordelapropiedadseutilizalafuncinRGB(Red,Green,Blue),lostresargumentosparaestafuncinsonvaloresdel0a255quecorrespondenalaintensidaddeloscoloresRojo,VerdeyAzulrespectivamente.
Referenciarunrangodeceldas.SlotienequecambiaralaformaCasilla_Inicial:Casilla_Final.PorejemploaplicarelltimoejemploalrangodecasillasquevadelaA1alaA8,ponga.SubSegundoActiveSheet.Range("A1:A8").Value="Hola"ActiveSheet.Range("A1:A8").Font.Bold=TrueActiveSheet.Range("A1:A8").Font.Color=RGB(255,0,0)EndSub
Variables.AcontinuacinvamosarepetirelprogramaEjemplo1,peroenlugardeponer"Hola"enlacasillaA1delahojaactiva,dejaremosqueelusuarioentreuntextodesdetecladoyacontinuacinguardaremosesevalorenesacasilla.ObservequeelvalorqueingreseelusuariodebeguardarseenalgnlugarparapoderponerlodespusenlacasillaA1;puesbien,esevalorseguardarenunavariable.Unavariableessimplementeuntrozodememoriaquelafuncinoprocedimientosereservaparaguardardatos,laformageneraldedeclararunavariableesDIMvariableAStipo.
-
SiendovariableelnombrequeseasignaalamismayTipoeltipodedatosqueseguardarn(nmeros,texto,fecha,booleanos,...).Ennuestroejemplo,declararemoslavariabledetipoString(tipotexto),yloharemosdelaformasiguiente.DimTextoAsStringConestoestamosindicandoquesereserveuntrozodememoria(elquesea),quesellamaTextoyqueeltipodedatosqueseguardarnahserncaracteres.
LaFuncinInputBox.Estafuncinmuestraunaventanaparaqueelusuariopuedatecleardatos.CuandosepulsasobreAceptar,losdatosentradospasanalavariablealaquesehaigualadolafuncin.Vealalneasiguiente.Texto=InputBox("Introduzcaeltexto","Entradadedatos").SienlaventanaquemuestraInputBoxpulsasobreelbotnAceptar,losdatostecleadosseguardarnenlavariableTexto.
SintaxisdeInputBox.InputBox(Mensaje,Ttulo,Valorpordefecto,Posicinhorizontal,PosicinVertical,ArchivoAyuda,Nmerodecontextoparalaayuda).Mensaje:Eselmensajequesemuestraenlaventana.SideseaponermsdeunalneapongaChr(13)paracadanuevalnea,veaelejemplosiguiente.Ttulo:EselttuloparalaventanaInputBox.Esunparmetroopcional.Valorpordefecto:Eselvalorquemostrarpordefectoelcuadrodondeelusuarioentraelvalor.Parmetroopcional.PosicinHorizontal:LaposicinXdelapantalladondesemostrarelcuadro,concretamenteeslaposicinparalaparteizquierda.Siseomiteelcuadrosepresentahorizontalmentecentradoalapantalla.PosicinVertical:LaposicinYdelapantalladondesemostrarelcuadro,concretamenteeslaPosicinparalapartesuperior.SiseomiteelcuadrosepresentaverticalmentecentradoalaPantalla.ArchivoAyuda:Eselarchivoquecontienelaayudaparaelcuadro.Parmetroopcional.
-
Nmerodecontextoparalaayuda:Nmeroasignadoquecorrespondealidentificadordelarchivodeayuda,sirveparalocalizareltextoquesedebemostrar.Siseespecificaesteparmetro,debeespecificarseobligatoriamenteelparmetroArchivoAyuda.Ejemplo3SubEntrar_ValorDimTextoAsString'Chr(13)sirveparaqueelmensajesemuestreendosLneasTexto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos")ActiveSheet.Range("A1").Value=TextoEndSubEsteejemplotambinsepuedehacersinvariables.SubEntrar_ValorActiveSheet.Range("A1").Value=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos")EndSubEjemplo4Repetiremoselejemplo3,peroenlugardeentrarlosvaloressobrelacasillaA1,haremosqueelusuariopuedaelegirenquecasillaquiereentrarlosdatos,esdecir,selepreguntaralusuariomedianteunsegundoInputboxsobrequecasillaquiereentrarelvalordelprimerInputbox.Sernnecesariasdosvariables,unaparaguardarlacasillaqueescojaelusuarioyotraparaguardarelvalor.OptionExplicitSubEntrar_ValorDimCasillaAsStringDimTextoAsStringCasilla=InputBox("Enquecasillaquiereentrarelvalor","EntrarCasilla")Texto=InputBox("Introduciruntexto"&Chr(13)&"Paralacasilla"&Casilla,"Entradadedatos")ActiveSheet.Range(Casilla).Value=Texto
-
EndSubLasentenciaOptionExplicit.Envisualbasicnoesnecesariodeclararlasvariables,porejemplo,enelprogramaanteriorsehubierapodidoprescindirdelaslneasDimCasillaAsStringDimTextoAsStringA pesar de ello, le recomendamos que siempre declare las variables que va a utilizar, de estaforma sabr cualesutilizaelprocedimientoyqu tipodedatosguarda cadauna,piensequeamedidaquevayaaprendiendo,crearprocedimientoscadavezmscomplicadosyquerequerirnelusodemsvariables, sinodeclara lasvariablesalprincipiodelprocedimientoocurrirndoscosas.Primero, lasvariablesnodeclaradas sonasumidascomo tipoVariant (esteesun tipodedatosquepuedealmacenarcualquiervalor,nmero,fechas,texto,etc.perotengaencuentaqueocupa 20 Bytes y para guardar una referencia a una casilla, la edad de alguien, etc. no sonnecesarios tantos bytes); segundo, reducir considerablemente la legibilidad de susprocedimientosyaque lasvariables las ircolocandoamedidaque lasnecesite,esto,a la largacomplicarlacorreccinomodificacindelprocedimiento.Bueno,puestoda laexplicacinanterioresparaquedeclaretodas lasvariablesquevaautilizar.LasentenciaOptionExplicitalprincipiodelmdulofuerzaaquesedeclarentodaslasvariables.Sialejecutarelprograma,seencuentraalgunavariablesindeclararseproducirunerrorynosepodrejecutarelprogramahastaquesedeclare.SitodavanosehaconvencidosobrelaconvenienciadedeclararlasvariablesyutilizarOptionExplicit,pruebeelprocedimientosiguiente,cpielotalcual(TextoyTestoestnpuestosadredesimulandoquenoshemosequivocadoalteclear).SubEntrar_ValorTexto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos")ActiveSheet.Range("A1").Value=TestoEndSubObservequeelprogramanohaceloquesepretendaquehiciera.Efectivamente,TextoyTestosondosvariablesdiferentes,comonosehadeclaradoningunanisehautilizadoOptionExplicitVisualBasicnodaningntipodeerroryejecutaelprograma.Pruebeelsiguientemduloeintenteejecutarlo.OptionExplicit
-
SubEntrar_ValorDimTextoAsStringTexto=InputBox("Introduciruntexto"&Chr(13)&"ParalacasillaA1","Entradadedatos")ActiveSheet.Range("A1").Value=TestoEndSubObservequeelprogramanoseejecuta,alponerOptionExplicit,forzamosaquesedeclarentodaslasvariables.VisualBasicdetectaquelavariableTestonohasidodeclaradayasloindicamostrandoError,entoncesescuandoesmsfcildarnoscuentadelerrorquehemoscometidoalteclearycambiamosTestoporTexto.Ahoraimaginequeelerrorseproduceenunprogramadecientosdelneasquenecesitaotrastantasvariables.
TiposdedatosenVisualBasicparaExcel.(TablacopiadadelaayudaenlneadeVisualBasicparaExcel).Tipodedatos TamaoAlmacenamiento IntervaloByte 1byte 0a255Boolean 2bytes TrueoFalseInteger 2bytes 32.768a32.767Long(enterolargo) 4bytes 2.147.483.648a2.147.483.647Single(comaflotante/precisinsimple)
4bytes 3,402823E38a1,401298E45paravaloresnegativos;1,401298E45a3,402823E38paravalorespositivos
Double(comaflotante/precisindoble)
8bytes 1,79769313486232E308a4,94065645841247E324paravaloresnegativos;4,94065645841247E324a1,79769313486232E308paravalorespositivos
Currency(enteroaescala)
8bytes 922.337.203.685.477,5808a922.337.203.685.477,5807
Decimal 14bytes +/79.228.162.514.264.337.593.543.950.335sinpuntodecimal;+/7,9228162514264337593543950335con28posicionesaladerechadelsignodecimal;elnmeromspequeodistintodeceroes+/0,0000000000000000000000000001
Date 8bytes 1deenerode100a31dediciembrede
-
9999Object 4bytes CualquierreferenciaatipoObjectString(longitudvariable)
10bytes+longituddelacadena
Desde0a2.000millones
String(longitudfija) Longituddelacadena Desde1a65.400aproximadamenteVariant(connmeros) 16bytes Cualquiervalornumricohastael
intervalodeuntipoDouble
Variant(concaracteres)
22bytes+longituddecadena
ElmismointervaloqueparauntipoStringdelongitudvariable
Definidoporelusuario(utilizandoType)
Nmerorequeridoporloselementos
Elintervalodecadaelementoeselmismoqueelintervalodesutipodedatos.
ConversindeTiposdedatos.CopieelsiguienteEjemplo.Simplementesepidendosnmeros,sesumanyseguardanellacasillaA1delahojaactiva.Ejemplo5OptionExplicitSubSumar()DimNumero1AsIntegerDimNumero2AsIntegerNumero1=InputBox("Entrarelprimervalor","Entradadedatos")Numero2=InputBox("Entrarelprimervalor","Entradadedatos")ActiveSheet.Range("A1").Value=Numero1+Numero2EndSubEjecuteelprocedimientoypongarespectivamentelosvalores25y25.ObservequetodohaidocorrectamenteyenlacasillaA1delahojaactivaapareceun50.Ahora,vuelvaaejecutarelprogramaycuandoselepideelprimervalorteclee"Hola".Observequeelprogramasedetieneindicandounerroreneltipodedatos.Efectivamente,observequelafuncinInputBoxdevuelvesiempredatostipoString,enelprimerejemplonohahabidoningnproblema,alentrarcaracteresnumricos1,estospuedenasignarseavariablestipoIntegerporqueVisualBasichaceautomticamentelaconversin,peroalentrartextoeintentarloasignaraunavariableIntegerVisualBasicmuestraunerrorindicandoquelavariablenoesadecuadaparalosdatosquesedeseanguardar.
-
Parasolucionarestosproblemassedebenutilizarfuncionesdeconversindetipo.Estasfunciones,comosunombreindica,conviertendatosdeuntipoaotro,deStringaInteger,deIntegeraString,deDateaString,...Aselprocedimientoanteriorquedara.OptionExplicitSubSumar()DimNumero1AsIntegerDimNumero2AsIntegerNumero1=Val(InputBox("Entrarelprimervalor","Entradadedatos"))Numero2=Val(InputBox("Entrarelprimervalor","Entradadedatos"))ActiveSheet.Range("A1").Value=Numero1+Numero2EndSubLafuncinVal(DatoString),convierteunacadenadecaracteresavalornumrico.Silacadenaaconvertircontienealgncarcternonumricodevuelve0.As,sialpedirunvalorseteclea"Hola",lafuncinVal,devolveruncero.
Funcionesdeconversindetipos.(TablacopiadadelaayudaenlneadeVisualBasicparaExcel).Val(Cadena).Conviertelacadenaaunvalornumrico.Str(Nmero).Convierteelnmeroaunaexpresincadena.CDate(Fecha).Conviertecualquiercadenaafecha.ObjetoCells(fila,columna).Sirve,comoelobjetorange,parareferenciarunacasillaorangodecasillas,peroenlugardeutilizarlareferenciadelaformaA1,B1,X320,...utilizalafilaylacolumnaqueocupalacasilladentrodelahoja(oobjetoWorkSheet).Porejemplo,paraponerholaenlacasillaA1delahojaactivaseria:ActiveSheet.Cells(1,1).Value="Hola"
UtilizarCellsparareferenciarunrango.EstoseraelequivalenteaRange("Casilla_Inicial:Casilla_Final").LaformaqueseobtieneutilizandoCellsesunpocomslarga,peroseverqueavecesresultamuchomsfuncionalqueutilizandonicamenterange.ParareferirnosalrangoA1:B8,pondremos:
-
Range(Cells(1,1),Cells(8,2)).Value="Hola"OtraformainteresantedeCellseslasiguiente:Range("A5:B10").Cells(2,1).Value="Hola"PondrenlaceldaA6elvalor"Hola",observequeenesteejemploCellscomienzaacontarfilasycolumnasapartirdelrangoespecificadoenelobjetoRange.
VariablesdeObjetos.Unavariableobjetosirveparahacerreferenciaaunobjeto,estosignificaquepodremosaccederalaspropiedadesdeunobjetoeinvocarasusmtodosatravsdelavariableenlugardehacerlodirectamenteatravsdelobjeto.Posiblementenoseutilicedemasiadoestaclasedevariables(estclaroqueestodependerdelaspreferenciasdelprogramador),perohaycasosenlosquenohaymsremedioqueutilizarlas,porejemploenestructurasForEach...Nextcomoveremos,ocuandoseanecesarioconstruirfuncionesquedevuelvanrangos,referenciasahojas,etc.ParadeclararunavariableobjetoseutilizatambinlapalabraDimdelaformasiguiente,DimVar_ObjetoAsObjetoPorEjemplo:DimRAsRangeDimHojaAsWorkSheetParaasignarunobjetoaunavariabledebeutilizarlainstruccinSet.SetVariable_Objeto=ObjetoPorEjemploSetR=ActiveSheet.Range("A1:B10")SetHoja=ActiveSheetSetHoja=WorkSheets(1)Veamosacontinuacinunejemplodecmoutilizarestetipodevariables,Ejemplo6.Algomuysimple,llenarelrangodeA1aB10conlapalabra"Hola"ydespusponernegrita,observecomoseasignaunavariableobjetoalobjetoyluegocomosetrabajaconesavariabledelamismaformaquetrabajaradirectamentesobreelobjeto.Subobj()
-
DimRAsRangeSetR=ActiveSheet.Range("A10:B15")R.Value="Hola"R.Font.Bold=TrueEndSub
Estructurascondicionales.Ahoraqueyahaexperimentadoconunoscuantosobjetosypropiedades,nosdetendremosaestudiarlasestructurascondicionales.Lasestructurascondicionalessoninstruccionesdeprogramacinquepermitencontrolarlaejecucindeunfragmentodecdigoenfuncindesisecumpleonounacondicin.EstudiaremosenprimerlugarlainstruccinifCondicinthen..Endif(SiCondicinEntonces...FinSi)LaestructuracondicionalqueseconstruyeconlainstruccinSiCondicinEntonces...FinSitienelaformasiguiente.SiCondicinEntoncesSentncia1Sentncia2..SentnciaNFinSi..CuandoelprogramallegaalainstruccinSiCondicinEntonces,seevalalacondicin,siestasecumple(escierta),seejecutantodaslassentenciasqueestnencerradasenelbloque,sinosecumplelacondicin,sesaltanestassentencias.EstaestructuraenVisualBasictienelasintaxissiguiente:IfCondicinThenSentncia1Sentncia2..SentnciaNEndIfEjemplo6
-
EntrarunacantidadquerepresentaelpreciodealgoporeltecladoconlainstruccinInputBoxyguardarloenlaceldaA1delahojaactiva.Sielvalorentradodesdeelteclado(yguardadoenA1)essuperiora1000,pedirdescuentoconotroInputBoxyguardarloenlacasillaA2delahojaactiva.CalcularenA3,elpreciodeA1menoseldescuentodeA2.SubCondicional()ActiveSheet.Range("A1").Value=0'Ponerlascasillasdondeseguardanlosvalores0.ActiveSheet.Range("A2").Value=0ActiveSheet.Range("A3").Value=0ActiveSheet.Range("A1").Value=Val(InputBox("Entrarelprecio","Entrar"))'SielvalordelacasillaA1esmayorque1000,entonces,pedirdescuentoIfActiveSheet.Range("A1").Value>1000ThenActiveSheet.Range("A2").Value=Val(InputBox("EntrarDescuento","Entrar"))EndIfActiveSheet.Range("A3").Value=ActiveSheet.Range("A1").Value_ActiveSheet.Range("A2").ValueEndSubEjemplo7.Elmismoqueelanteriorperoutilizandovariables.OptionExplicitSubCondicional()DimPrecioAsIntegerDimDescuentoAsIntegerPrecio=0Descuento=0Precio=Val(InputBox("Entrarelprecio","Entrar"))'Sielvalordelavariableprecioesmayorque1000,entonces,pedirdescuentoIfPrecio>1000ThenDescuento=Val(InputBox("EntrarDescuento","Entrar"))EndIf
-
ActiveSheet.Range("A1").Value=PrecioActiveSheet.Range("A2").Value=DescuentoActiveSheet.Range("A3").Value=PrecioDescuentoEndSubViendolosdosprogramasanteriorespuedequelesurjaladudadesiemplearvariablesodirectamentevaloresalmacenadosenlasceldas.Lasolucinesfcil,loqueleparezcamsconvenienteencadacasoconcretoquedeseesolucionar.Lasvariables,aunquemuchasveces"innecesarias",quizsdejanlosprogramasmslegiblesyclaros.Ylalegibilidaddeunprogramaeslomsvaliosodelmundoparaunprogramador(profesionalmentehablando),sobretodosisedaelcaso(inevitableel99,999...%delasocasiones)quesetengaquemodificarunprogramaparadotarledemsfuncionalidades,facilitarsumanejo,etc.Enlamayoradeejemplosqueencontrarenestemanualverqueseutilizanvariablespreferentemente.Aunquemuchasvecessufuncinseasimplementerecogerdatosdelasceldasparaoperarlasydejarlasenotrasceldasy,consecuentemente,aumenteelnmerodeoperaciones,creemosqueconelloseganaenlegibilidadyflexibilidad.Ejemplo8.MacroquecomparalosvaloresdelascasillasA1yA2delahojaactiva.Sisonigualesponeelcolordelafuentedeambasenazul.SubCondicional2()IfActiveSheet.Range("A1").Value=ActiveSheet.Range("A2").ValueThenActiveSheet.Range("A1").Font.Color=RGB(0,0,255)ActiveSheet.Range("A2").Font.Color=RGB(0,0,255)EndIfEndSub
EstructuraIf..ElseEstaestructuraseutilizacuandoserequiereunarespuestaalternativaaunacondicin.Suestructuraeslasiguiente.SiCondicinEntoncesSentncia1Sentncia2..SentnciaN
-
SinoSentncia1Sentncia2..SentnciaNFinSiObserveque,sisecumplelacondicin,seejecutaelbloquedesentenciasdelimitadoporSiCondicinEntoncesySinosecumplelacondicinseejecutaelbloquedelimitadoporSinoyFinSi.EnVisualBasiclainstruccinSiCondicinEntonces...Sino...FinSiseexpresaconlasinstruccionessiguientes.IfCondicinThenSentncia1Sentncia2..SentnciaNElseSentncia1Sentncia2..SentnciaNEndIfEjemplo9.EntrarunacantidadquerepresentaelpreciodealgoporeltecladoconlainstruccinInputBoxyguardarloenlaceldaA1delahojaactiva.Sielvalorentradodesdeelteclado(yguardadoenA1)essuperiora1000,seaplicaundescuentodel10%sinoseaplicaundescuentodel5%,eldescuentoseguardaenlacasillaA2delahojaactiva.ColocarenA3,eltotaldescuentoyenA4eltotalmenoseldescuento.SubCondicional_Else()DimPrecioAsSingleDimDescuentoAsSinglePrecio=0
- Precio=Val(InputBox("Entrarelprecio","Entrar"))'Sielvalordelavariableprecioesmayorque1000,entonces,aplicardescuentodel10%IfPrecio>1000ThenDescuento=Precio*(10/100)ActiveSheet.Range("A2").Value=0,1Else'SinoAplicardescuentodel5%Descuento=Precio*(5/100)ActiveSheet.Range("A2").Value=0,05EndIfActiveSheet.Range("A1").Value=PrecioActiveSheet.Range("A3").Value=DescuentoActiveSheet.Range("A4").Value=PrecioDescuento