0% encontró este documento útil (0 votos)
283 vistas8 páginas

Objetos Excel

Este documento contiene instrucciones sobre el uso de funciones y comandos en Visual Basic para Aplicaciones (VBA) en Excel. Algunas de las cosas que se pueden hacer incluyen abrir libros y páginas web, modificar formatos, activar eventos, insertar saltos de página, filtrar datos, agregar nombres, proteger hojas y más. El documento proporciona códigos VBA breves para realizar diversas tareas comunes en Excel.

Cargado por

IcehellFrias
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
283 vistas8 páginas

Objetos Excel

Este documento contiene instrucciones sobre el uso de funciones y comandos en Visual Basic para Aplicaciones (VBA) en Excel. Algunas de las cosas que se pueden hacer incluyen abrir libros y páginas web, modificar formatos, activar eventos, insertar saltos de página, filtrar datos, agregar nombres, proteger hojas y más. El documento proporciona códigos VBA breves para realizar diversas tareas comunes en Excel.

Cargado por

IcehellFrias
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1.- INSTRUCCIONES EN EL EDITOR DE VBA.

Funciones Excel: Application.WorksheetFunction. ????? Abre un libro con contrasea: Workbooks.Open "libro1.xls", , , , "Contrasea" Abre una pgina Web desde VBA: ActiveWorkbook.FollowHyperlink Address:="http://www.nombrepagina.com" Activa el botn COPIAR FORMATO: application.commandbars.findcontrol(Id:=108).enabled=true Activa/desactiva la actualizacin de pantalla: Application.ScreenUpdating = True False Activa/Desactiva los eventos: Application.EnableEvents = True False (luego guardar y ponerlo a True) Activa/desactiva los mensajes de alerta: Application.DisplayAlerts = True False Activa/Desactiva un botn en el cuadro de controles: ActiveSheet.OLEObjects("boton1").Enabled = True/False Actualiza la hoja al rango ocupado con datos (barra de Despl. con arrastre pequeo): ActiveSheet.UsedRange Asigna un nombre a un rango: ActiveWorkbook.Names.Add Name:="lista", RefersTo:=Range(Cells(1, 1), Cells(f, c)) Asigna una macro a una autoforma: ActiveSheet.Shapes("miAutoforma").OnAction = "miMacro" (= "" la desactiva) Borrar hipervnculos de un rango: Range("B1:B120").Hyperlinks.Delete Botn derecho no muestra men contextual: Application.CommandBars("Cell").Enabled = False ' True para activar Cambia el color del indicador de error: Application.ErrorCheckingOptions.IndicatorColorIndex = 2 Carga/cambia una imgen en un control de imgen ActiveX (desde disco duro): Image1.Picture = LoadPicture("C: \Mis documentos\Imagen.jpg") Cede el control al sistema operativo: OpenForms = DoEvents Celda en el encabezado (o pie de pg.): Sheets("Hoja1").PageSetup.LeftHeader = Sheets("Hoja1").Range("A1").Value Celda sobre la que se encuentra un botn (u otra fig): MsgBox ActiveSheet.Shapes("boton").TopLeftCell.Address Coleccin de controles por el nombre: Me.Controls("TextBox" & n).Value = Cells(fila, n) ' n=un nmero Coloca botones, en columna de celda activa: ActiveSheet.Shapes.Range(Array("OptionButton1", "OptionButton2")).Left = ActiveCell.Left Color de etiqueta de hoja (amarillo): ActiveWorkbook.Sheets(ActiveSheet.Name).Tab.Color = 65535 Comprueba si existe una carpeta (si no; la crea): If Dir("D:\Copias\", vbDirectory) = "" Then MkDir "D:\Copias\" Comprueba si hay un filtro presente (con filtrado): If ActiveSheet.FilterMode = False Then Exit Sub Comprueba si hay un filtro presente (con o sin filtrado): If Not ActiveSheet.AutoFilterMode Then Exit Sub Comprueba si una celda tiene una frmula: ActiveCell.HasFormula ( en Excel 4.0: =indicar.celda(48+0*hoy(),!a1) [nombre definido] ) Concatena un texto (fijo) a cada celda de un rango: (en ventana inmediato de VBA) [b2:b12] = [transpose(transpose("SC "&b2:b12))] Concatena/aade a valores existentes, un valor dado: [a1:a1000] = evaluate("a1:a1000&""(1)""") concatena con "(1)" (sin comillas) Convierte nmero tipo 19440724 a fecha 1944-07-24 (Inmediato): [a1:a5] = [transpose(transpose(text(a1:a5,"0000\/00\/00")))] Convierte una frmula de ingls a espaol: Activecell.Formulaarray = "=left(b7)&mid(b7,match(1,

--isnumber(match(mid(b7, Row(indirect(""2:15"")),1), {""a"";""e"";""i"";""o"";""u""},0)),0)+1,1)" Copia un rango en otra ubicacin: Worksheets("Hoja1").Range("B2:C5").Copy Worksheets("Hoja2").Range("D15") Copia/Pega sin seleccionar rangos: Range(ActiveCell, ActiveCell.Offset(5, 3)).Copy Destination:= Worksheets("Hoja1").Range("E5") Copia/Pega, un rango en otro: (incluso formatos) [A1:A3].Copy [H2] (slo valores) [F8:F10].Value = [A1:A3].Value Cuadro de dilogo de las fuentes: application.dialogs(xlDialogFont).show Cuenta las celdas con datos en un rango: conteo = Application.Count(Range("A:A")) [ slo nmeros ]. Cuenta las celdas con datos en un rango: conteo = Application.CountA(Range("A:A")) [celdas no vacias] Cuenta las celdas con datos en un rango: conteo = Application.CountIf(Range("A:A"), "Marzo") [ condicional ]. Cuenta datos en otro libro: conteo = Application.CountA(Workbooks("Libro2.xls").Sheets("Hoja1").Range("C:C")) Cuenta nmero de hojas: Worksheets.Count Declara una constante. Declarada a nivel global funciona para varios mdulos: Const miConstante = 1944 Delimita el rango en que se pueden seleccionar celdas: ActiveSheet.ScrollArea="$B$1:$C$20" Desactiva el boton cerrar (X) de Excel: ActiveWorkbook.Protect ,,True Desactiva la barra de mens: Application.CommandBars("Worksheet Menu Bar").Enabled = True Descarga/Cierra un formulario: Unload Me ( Me o el nombre del formulario) Deshace una entrada en una celda (condicional): If "condicin" Then Application.Undo Desmarca todos los botones de opcin de una hoja: Activesheet.OptionButtons.Value = false Devuelve si un fichero fue abierto como de slo lectura: ((GetAttr(ActiveWorkbook.FullName) And vbReadOnly) = vbReadOnly) Devuelve un carcter Unicode: ChrW(cdigo) cdigo abarca hasta 65000. Devuelve un valor; "negativo", "cero" o "positivo": =ELEGIR(SIGNO(nmero) +2;"negativo";"cero";"positivo") Dia de la semana: dia = Choose(Weekday(date,vbMonday), "Lun", "Mar", "Mi", "Jue", "Vie", "Sab","Dom") Ejecuta la Calculadora: RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) Ejecuta un programa ejecutable: Shell("C:\WINDOWS\SYSTEM32\CALC.EXE", 1) (Ayuda > estilos) Ejecuta una macro de otro libro: application.run "'C:\ruta y sub\carpeta al\libro2.xls'!nombre_de_la_macro" Elige una constante segn un nmero de ndice: miVariable = Choose(numInd, "const1", "const2", 50, 70, "otra") Elimina celdas vacias: [a1:f10].specialcells(xlcelltypeblanks).delete shift:=xltoleft Equivalencia con rango: Range(Cells(1, 1), Cells(10, 10)) = "A" equivale a Range("A1:J10")="A" Escribe en la ventana Inmediato: Debug.Print . . . Escribe en varias celdas al mismo tiempo: Range("A2:E2") = Array("Ruta", "Nombre", "Tamao", "Modificado", "Tipo") Escribe en hoja protegida: Worksheets("miHoja").Protect UserInterfaceOnly:=True Evita que la seleccin cambie en una celda al pulsar Intro: Application.MoveAfterReturn = Target.Address <> "$A$1" Fecha y hora de creacin de un fichero (cerrado): FileDateTime("Clientes.xls") Fila en que se encuentra un dato: fila = Worksheets(1).Range("A3:A23").Find(miDato).Row Frmulas/Resultados. Muestra/Oculta : ActiveWindow.DisplayFormulas = True /False IF para VBA: iif(expresin;verdadero;falso) (verdadero y falso, siempre

son evaluados) Imagen en comentario de celda: ActiveSheet.Shapes("Comment 1").Fill.UserPicture "C:\Imgenes\foto.jpg" Impide Copiar/Pegar : Application.CutCopyMode = False Impide mover/arrastrar celdas/rangos: Application.CellDragAndDrop = False Imprime todas las hojas del libro: Sheets.PrintOut Incrementa 5% (Ventana INMEDIATO): For Each Celda In Selection: Celda.Value = 1.05 * Celda: Next Interseccin o cruce de 2 rangos: If Application.Intersect(Target, Range("B2:B11")) is Nothing Then Invierte un texto: miTexto = StrReverse(Texto) Maysculas (1), minsculas (2) y Nombre prpio (3) : Target.Value = StrConv(Target.Value, 3) Tambien: vbUpperCase, vbLowerCase y vbProperCase Mensaje en la barra de estado: Application.StatusBar="Estamos en la linea: " & F al final del proceso: Application.StatusBar=False Mensaje temporal (de n seg. + 5 aprox.): CreateObject("wscript.shell").popup "Una prueba", n, "AnSanVal" Minimiza la cinta de opciones (1): If ExecuteExcel4Macro("get.toolbar(5,""ribbon"")") > 80 Then SendKeys "^{f1}" Minimiza la cinta de opciones (2): If Application.CommandBars("ribbon").Height > 80 Then SendKeys "^{f1}" Nombre de fichero mediante C. dilogo ABRIR: nombrefich = Application.GetOpenFilename Nombre de la unidad: nombre = Dir("d:\", vbVolume) Nombre definido (asigna/actualiza) al rango actual: ActiveWorkbook.Names.Add Name:="datos", RefersToR1C1:=ActiveCell.CurrentRegion Nombre del autor de un fichero: MsgBox ActiveWorkbook.BuiltinDocumentProperties("Author") Nombre del ltimo que modific un fichero: MsgBox ActiveWorkbook.BuiltinDocumentProperties("Last Author") Nombres ocultos. Visualiza los (Ventana Inmediato): For Each n In Names: n.Visible = True: Next Nm. de pginas que se imprimirn en la hoja activa: MsgBox ExecuteExcel4Macro("Get.Document(50)") & " pg." Oculta / Muestra un libro: Windows("Libro1.xls").Visible = False / True Oculta ciertas filas segn una condicin: Rows("10:20").EntireRow.Hidden = Range("A5").Value = "pagado" Oculta la barra de frmulas: Application.DisplayFormulaBar = True v Oculta un libro (Explorador): SetAttr "C:\Temp\Prueba.xls", vbHidden Pantalla completa: Application.DisplayFullScreen = True Pega en hoja activa sin seleccionar destino: ActiveSheet.Paste Destination:=Worksheets("Hoja1"). Range("A5:A7) ' rango destino completo. Pega en otra hoja solo valores, sin cambiar de hoja: Worksheets("Hoja2").Cells(65536,1).End(xlup).Offset(1).PasteSpecial xlPasteValues Posicin de una cadena dentro de otra, buscando desde el final.: InStrRev("Constantino", "t") devuelve 8. Primera fila visible en la zona mvil de una hoja con paneles inmovilizados: fila = ActiveWindow.ScrollRow Pulsaciones de teclado. Para enviar INTRO (teclado numrico): Application.SendKeys "{ENTER}" (truco, VBA) Rango de datos en serie de grfico: MsgBox Worksheets("Hoja1").ChartObjects(1).Chart.SeriesCollection(1).Formula Rango variable: Names.Add Name:="BaseProveedores", RefersTo:="= offset(Proveedores!$A$2,0,0,counta(Proveedores!$A:$A)-1,counta(Proveedores! $2:$2))" Rangos filtrados (slo celdas visibles): Range("A1:A14").SpecialCells(xlCellTypeVisible).Copy

Destination:=Range("D25") Recalcular funciones personalizadas, junto con el libro: Application.Volatile Recorre los valores de una matriz: For Clave = 0 To UBound(Claves) Next clave Reemplaza un texto por otro dentro de una cadena de texto: celda = Replace(celda.Value, ",", "") Repite un texto en todo un rango: Range("A100:A150").FormulaArray = "Texto a repetir" Ruta completa de un archivo (en el ejemplo del libro personal): Workbooks("Personal.xls").FullName Salto de pgina -(Insertar) ActiveSheet.HPageBreaks.Add ActiveCell (horizontal) ActiveSheet.VPageBreaks.Add ActiveCell (vertical) Salto de pgina manual: Worksheets("Sheet1").Rows(25).PageBreak = xlPageBreakManual Selecciona las celdas que devuelven un error: Cells.SpecialCells(xlCellTypeFormulas, 16).Select Selecciona un rango con celda sup. Izq. en esquina sup. Izq. De pantalla: Application.Goto Reference:= Range("B12"), Scroll:=True Selecciona unas figuras SI y otras NO: ActiveSheet.Shapes.Range(Array(1, 2, 4)).Select Selecciona y visualiza a partir de una celda: Application.Goto Reference:=Sheets(1).Range("Z127"), Scroll:=True Seleccionar un rango, a partir de una celda dada (redimensionar): ActiveCell.Resize(3, 4).Select Situar figura segn celda activa: ActiveSheet.Shapes("miFlecha").Left = Target.Left y ActiveSheet.Shapes("miFlecha").Top = Target.Top + Target.Height Sumar un rango: Range("resultado").Value = Application.WorksheetFunction.Sum(Range( "B2,E2,B6,B9,D6:E6,D10:E10,E14")) Temporizador (utilizar DoEvents para que el libro quede activo): Application.OnTime Tipo de error (nmero) existente en una celda: MsgBox Evaluate("error.type($C$4)") 2= #DIV/0! 3= #VALOR! 7= #N/A Tipo de objeto seleccionado: TypeName(Selection) "Range", "TextBox", "Oval", etc. Traduce la frmula de la celda activa a ingls (Inmediaiato en el editor VBA): ? activecell.formula ltima celda ocupada de una columna: Cells(Rows.Count, "A").End(xlup).row ltima columna ocupada de una fila: Cells(1,Columns.Count).Select Trabajar con una variable opcional: If IsMissing(Fecha) Then Fecha = Date Variables del entorno del sistema: variable = Environ(num) (num = desde 1 hasta 40)

Volver a Contenido

1.- FRMULAS EN LA HOJA DE CLCULO.


Extrae de una cadena el texto comprendido entre el 4 espacio y el 6 espacio. =EXTRAE(A1;HALLAR(""$"";SUSTITUIR (A1;"" "";""$"";4))+1;HALLAR(""$"";SUSTITUIR(A1;"" "";""$"";6))HALLAR(""$"";SUSTITUIR(A1;"" "";""$"";4))-1)" Aos meses o das, entre dos fechas: =SIFECHA(A1;B1;"Y")&" aos "&SIFECHA(A1;B1;"YM")&" meses y "&SIFECHA(A1;B1;"MD")&" das." Aplica distintos porcentajes a distintos valores: =ELEGIR(COINCIDIR(f2;{0\0,5\1,5\2,5\3\5\6}*1000);5;7;10;12;15;20;22)% Aplicar distintos porcentajes a distintos valores: =A2*COINCIDIR(A2;{0\16\31}) %

Autonumrico para datos filtrados (o no filtrados): =Subtotales(3,b$2:b2) Busca en C y devuelve K : =BUSCAR("Pedro";C:K) o tambin =SI(ESERROR(COINCIDIR("Pedro";C:C));"";BUSCAR("Pedro";C:K)) Busca en rangos de distintas hojas: =BUSCARV(I2;ELEGIR(COINCIDIR(A6; {211\220\228};0);Hoja2!A3:G2642; Hoja3!A3:H338;Hoja4!A2:G673);2;FALSO) Cantidad de domingos en el mes de la fecha que est en A1 (matricial) [ en A1 p.e.: 1944 ]: {=SUMA(( DIASEM(FILA(INDIRECTO(FECHA(AO(A1);MES(A1);1)&"":""&(FECHA(AO(A1);MES(A1)+1;1) )-1)))=1)*1)} Cantidad de meses entre dos fechas: =SIFECHA(fechaInicio;fechaFin;"m") Comprueba si A11 est entre los valores 5 y 12: =ELEGIR(COINCIDIR(A11; {0;5;12});"Fuera de rango"; "Dentro de rango";"Fuera de rango") Contar con varias condicones: =SUMA(CONTAR.SI($C$1:$C$20;{"A";"B";">D"})) Contar registros nicos (A) condicionales (B): =SUMAPRODUCTO((B2:B15="pan")*(COINCIDIR(A2:A15&"|"; A2:A15&"|";0)=FILA(A2:A15)-FILA(A1))) CONTAR.SI con mltiples condiciones: =SUMAPRODUCTO((CONTAR.SI(A1:F10; {1\3\5\7}))) Controla mediante Validacin Texto en maysculas: =IGUAL(A1;MAYUSC(A1)) CONVERTIR entre unidades de medida: =CONVERTIR(3000;"W";"HP") =CONVERTIR(2;"m";"cm") Convierte un literal (invertido) a fecha (19440724 >> 16277 >> 24/07/1944): =-TEXTO("19440724";"00-00-00") Crear nombres Def. en seleccin ( truco / atajo ): Control + Mayscula + F3 . . . Cuenta coincidencias ( z ) en un rango: =SUMAPRODUCTO(LARGO(A1:G5)LARGO(SUSTITUIR(A1:G5;"z";""))) Cuenta los caracteres que se repiten a la izquierda: =hallar(izquierda(sustituir(A1;izquierda(A1);""));A1)-1 Cuenta los NO repetidos: =SUMAPRODUCTO((A1:A35<>"")/CONTAR.SI(A1:A35;A1:A35&"")) Cuenta los registros nicos en un rango: =SUMAPRODUCTO(-(FRECUENCIA(A:A;A:A)>0)) Cuenta los valores nicos en un rango: =SUMAPRODUCTO(1/CONTAR.SI(A2:A11;A2:A11)) Cuenta maysculas en un texto: =SUMAPRODUCTO(LARGO(A1)LARGO(SUSTITUIR(A1;CARACTER(FILA(INDIRECTO("65:90")));""))) Cuenta segn condicipn exepto 4, 6 y 12: =CONTAR.SI(C2:C30;"<20")-SUMAPRODUCTO(--ESNUMERO(COINCIDIR(C2:C30; {4\6\12};0))) Devuelve los cabeceros (a,b, c) que coincidan con los valores mximos de A2:C2: =ELEGIR(SUMAPRODUCTO({1;2;4}*(A2:C2=MAX(A2:C2)));"a";"b";"ab";"c";"ac";"bc";"abc ") Distancia entre 2 puntos: =RAIZ(((X2-X1)*(X2-X1))+((Y2-Y1)*(Y2-Y1))) <> =RAIZ((X2-X1)^2+(Y2-Y1)^2) <> = raiz ( x2 + y2 ) Domingos entre dos fechas: =SUMAPRODUCTO(-(DIASEM(FILA(INDIRECTO(A1&":"&A2));2)=7)) A1=fechaInicio A2=fechaFin Edad en aos, meses y das: =SIFECHA(E2;HOY();"y")&" ao(s), "&SIFECHA(E2;HOY();"ym")& " mes(es) y "&SIFECHA(E2;HOY();"md")&" da(s)." Elimina el carcter de la derecha (de un nmero): =SUSTITUIR(A2;CARACTER(CODIGO(DERECHA(A2;1)));"")+0 En ASD345 dejar slo 345: =REEMPLAZAR(A1;1;MIN(HALLAR({0;1;2;3;4;5;6;7;8;9};A1&"0123456789")-1);"") Encuentra la primera celda vacia despus de un rango (1): {=COINCIDIR(VERDADERO;B12:$B$65536="";)} Encuentra la primera celda vacia despus de un rango (2): =INDICE(COINCIDIR(VERDADERO;B12:$B$65536="";);1)

Extrae el mnimo, excluyendo el cero: {=MIN(SI($B$3:$B$24<>0;$B$3:$B$24;FALSO))} Extrae el promedio, excluyendo los ceros: {=SI(SUMA(B4:B15)=0;0;PROMEDIO(SI(B4:B15<>0;B4:B15;"")))} Extrae Nm. de un texto: {=1*EXTRAE(A1;COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$9);1));0); CONTAR(1*EXTRAE(A1;FILA($1:$9);1)))} Extrae un dgito de un nmero COMO NMERO: =--IZQUIERDA(A1;1) (tambin =-IZQUIERDA(A1) ] Fila en que se encuentra un error #VALOR! : {=K.ESIMO.MAYOR((FILA($A$2:$A$6))* (ESNUMERO(--(TIPO.DE.ERROR($A$2:$A$6)=3)));1)} Fila o Columna de la celda activa (es necesario Calcular [F9 o VBA]): CELDA("fila") o CELDA("columna") [ p.e.: SI(CELDA("fila")=1; ] Filas impares (p.e.: para formato condicional): =residuo(fila(),2) Formato condicional para numeros que contengan cierta cifra: =NO(ESERROR(ENCONTRAR(5;A2))) Formato condicional. Resalta fila (o columna, o rango): =FILA()=CELDA("fila") Formato de celda personalizada, para positivos (azul) y negativos (rojo): [Azul]#.##0,00 ? ;[Rojo]-#.##0,00 ?_;# Formato para horas, minutos, segundos y milisegundos: [h]:mm:ss,000 Formato personalizado con condiciones: [Azul][>=100]0;[verde][>=10]0,0; [Rojo]0,00 (3 condiciones) Frmula para celdas validadas que impide la entrada de registros duplicados: =CONTAR.SI(A:A;A1)<2 Frmulas/Resultados. Muestra/oculta (atajo de teclado): Alt + Fracciones impropias (numerador>denominador): =TEXTO("3 5/4";"???/???") =TEXTO(3,25;"???/???") Imita Mround(n;m) : =REDONDEAR(n/m;0)*m n = nmero m = mltiplo Impide escribir en un rango validado, mientras en E6 diga "algo": =$E$6<>"algo" Incrementa Precio 1,5% cada mes: =B1*(1,015)^SIFECHA(A1;HOY();"M") [A1]=fecha [B1]= Precio [C1]=frmula Incrementa/decrementa una fecha determinado nmero de meses: FECHA.MES(fecha_inicial:meses) (necesita Herramientas para anlisis). Indica si una celda tiene frmula con F. condicional: =INDICAR.CELDA(48;INDIRECTO("fc";FALSO)) Jerarqua en registros nicos: {=SUMA(SI($F$3:$F$17<F3;1/CONTAR.SI( $F$3:$F$17;$F$3:$F$17);0))+1} Jerarqa (incluso con repetidos) 1: {=SUMA(SI($F$3:$F$17>F3;1/CONTAR.SI($F$3:$F$17;$F$3:$F$17);0))+1} Jerarquia (incluso con repetidos)2: =SUMAPRODUCTO(($F$3:$F$17>=F3)*(1/CONTAR.SI($F$3:$F$17;$F$3:$F$17))) K.ESIMO de varias hojas: =K.ESIMO.MAYOR('Hoja1:Hoja3'!E$2:E$25;1) Letra del NIF : =EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(A1;23)+1;1) Letra que ms se repite: { =caracter(moda(si(largo(b8:b23);codigo(b8:b23)))) } Listado de Nombres definidos: F3 > Pegar lista Matriz "manualmente". Selecciona 4 columnas por 3 filas: { ={1;2;3;4\5;6;7;8\9;10;11;12} } Mximo Comn Divisor (MCD): =gcd(A15:A20) Mximo entre dos lmites: {=MAX(($A$2:$A$13>=D2)*($A$2:$A$13<=E2)*$B$2:$B$13)} Mximo valor (B) para un mes dado (A), segn D2: {=SUMAPRODUCTO(MAX((MES(A2:A10)=D2)*(B2:B10)))} Mensaje en la propia celda: [>900000]"Excelente";[<300000] "Estudiar";"" (formato personalizado) Mensaje segn valor de otra celda: =SI(A2="";"";ELEGIR(COINCIDIR(A2; {0\300000\900000}); "Estudiar";"";"Excelente")) Mnimo entre dos lmites: {=MIN(SI($A$2:$A$13>=LimInf;1;5000)*SI($A$2:$A$13<= LimSup;1;5000)*($B$2:$B$13))} Mnimo que sea mayor que "nmero" : =K.ESIMO.MENOR(datos;CONTAR.SI(datos;"<="& numero)+1)

Moda inversa (nmero o texto menos repetido): {=INDICE(valores;COINCIDIR(MIN(CONTAR.SI( valores;valores));CONTAR.SI(valores;valores);0))} MODA para texto (matricial): {=INDICE(A2:A20;COINCIDIR(MAX(CONTAR.SI(A2:A20;A2:A20)); CONTAR.SI(A2:A20;A2:A20);0))} Modo de poner un condicional en SUMAR.SI: =SUMAR.SI(A2:A10;">"&J1;C2:C10) No grafica valores cero: =SI(E2>0;E2;NOD()) (o directamente #N/A) Nombre de la hoja: =DERECHA(CELDA("nombrearchivo");LARGO(CELDA("nombrearchivo"))ENCONTRAR("]";CELDA("nombrearchivo"))) Nombre del libro: =EXTRAE(CELDA("nombrearchivo";A1);ENCONTRAR("[";CELDA("nombrearchivo";A1)) +1;ENCONTRAR("]";CELDA("nombrearchivo";A1))ENCONTRAR("[";CELDA("nombrearchivo";A1))-1) Nombre/Frmula (Insertar>Nombre>Definir). Esta devuelve la formula que est en A2: =indicar.celda(6+0*hoy();!$a2) (49 indica si es matricial) Nmero ms cercano a cero: =INDICE(A1:A20;COINCIDIR(MIN(ABS(A1:A20));ABS(A1:A20);-1)) Nmeros pares/impares menores/mayores que "num": =SUMAPRODUCTO((A1:E1<50)*(RESIDUO(A1:E1;2)=0)) Para graficar y no ver frmulas que devuelven cero(0): =si(formula>0,formula,nod()) Para NO visualizar un dato en un grfico: =SI(A1="";NOD();A1) Periodo de das, meses, etc. entre dos fechas: =SIFECHA(fecha1;fecha2;"d") Proporcional Inversa: =INDICE((B$1/SUMA(A$2:A$4))*A$2:A$4;JERARQUIA(A2;A$2:A$4)) B1=cantidad a repartir. Raiz cbica de un nmero (nm. en A1): =POTENCIA(A1;1/3) Redondea a la centena ms prxima: =REDONDEAR(nm;-2) (;-1 ;-3 etc. para: decenas, millares, etc.) Redondea un nmero, por grupos de valor: =MRound(38;5) devuelve 40. Precisa herramientas para Anlisis. Redondea una hora en mdulos de 30 minutos: =MULTIPLO.SUPERIOR(B2;1/48) Redondea ( a la dcima ms prxima) =REDONDEAR(A1;1) ( hacia arriba) =REDONDEAR.MAS(A1;1) Redondeo en fracciones de 0,05 (si>2 redondeo hacia arriba, resto al ms prximo): =ENTERO(A2*20+SI(A2>2;0,9;0,5))/20 Rellena con puntos la celda despues del texto: ;;;@*. (Formato personalizado) Resultado de varios posibles: =BUSCAR(G2;{0\5\7\9}; {"Insuficiente"\"Suficiente"\"Notable"\"Sobresaliente"}) Ruta completa del libro y hoja (debe estar guardado): =CELDA("nombrearchivo") Seleccionar el rango actual: Ctrl* Seleccionar rango con datos (incluso celdas vacias intermedias): Ctrl+Maysc+Fin Separa nm. de texto AAAA AA AAA 271,00: =IZQUIERDA(A2;HALLAR("|";SUSTITUIR(A2;" ";"|";LARGO(A2)LARGO(SUSTITUIR(A2;" ";""))))-1) Suma de importes correspondientes a un mes determinado: =SUMAPRODUCTO((MES(A2:A2000)=3)*(B2:B2000)) Suma los 4 valores ms altos de un rango: =SUMAPRODUCTO(K.ESIMO.MAYOR(A1:A12; {1\2\3\4})) Suma una cantidad dgito a dgito, y devuelve el resultado en un slo dgito: =residuo(cantidad,9)+9*(residuo(cantidad,9)=0) p.e. 47=2 (4+7=11, 1+1=2) Sumar columnas alternas: =SUMAPRODUCTO((A1:I3)*(RESIDUO(COLUMNA(A1:K100);2)=1)) (1= impares, 0= pares) (cambiar el 2= cada 3, cada 4, etc.) Sumar con varias condicones: =SUMA(SUMAR.SI($E$1:$E$25;{"<7";9;">120"})) Sumar desde 1 hasta n : = n*(n+1)/2 (Julian - Valencia) Sumar mismo rango de varias hojas: =SUMA(Hoja1:Hoja15!A1)

=SUMA(Primera:ultima!A1:D15) Ttulo de campo del dato encontrado: {=INDICE(A1:L1;1;MIN(SI(A1:L32=B35; COLUMNA(A1:L1))))} Trimestre de una fecha: ="Trimestre " & COINCIDIR(MES(A1);{1\4\7\10}) & "" >>> ( {1\3\5\7\9\11} para bimestres y {1\7} para semestres) Turno de trabajo: ="Turno de "&INDICE({"noche"\"maana"\"tarde"\"noche"};COINCIDIR(A1; --{"0:00"\"6:30"\"14:30"\"22:30"})) A1=hora ltima coincidencia: =BUSCAR(2;1/($B$1:$B$30="La Gomera");$C$1:$C$30) ltima fecha de un registro: {=SI(MAX($A$2:$A$9*($B$2:$B$9=$G2))<1; "No hay datos";MAX($A$2:$A$9*($B$2:$B$9=$G2)))} ltimo dato en un rango: =BUSCAR(2;1/(D2:O2<>"");D2:O2) (en fila) = BUSCAR(2;1/(A2:A30<>"");A2:A30) (en columna) ltimo dato escrito en columna A. Para nmeros: =BUSCAR(9e307;a:a) ltimo dato escrito en columna A. Para textos: =COINCIDIR("zzzzzz";a:a) ltimo valor escrito en un rango: =BUSCAR(2;1/(B1:B10<>"");B1:B10) Validacin a mltiples columnas: =SUMAPRODUCTO(-(($C$1:$C1&"@"&$D$1:$D1)=($C1&"@"&$D1)))<2 impide parejas. Veces que se encuentra un texto en un rango: =SUMAPRODUCTO(1 ESERROR(HALLAR("Acero"; A$2:A$7))) Nota: Las funciones entre llaves, por ejemplo {=Formula}, son matriciales y deben ser entradas con: Control + Mayscula + Intro. No escribir las llaves, estas entran solas.

También podría gustarte