You are on page 1of 17

ALGUNOS RECURSOS CON EXCEL

Algunos de estos recursos slo estn disponibles para versiones superiores a Excel 2003. El camino para llegar hasta ellos es a travs de los Mens (en unos), a travez de la Cinta de opciones (en otros), a travez del Editor VBA para las macros, directamente en las celdas para el caso de las frmulas y en Nombres definidos para el caso de Excel 4.0 .
CONTENIDO:

1. 2. 3. 4. 5. 6. 7. 8. 9.

Asignar un Nombre definido a un rango de datos. Asignar automticamente, Nombres definidos a varios campos de datos. Visualizar Barras de datos en las celdas (para valores numricos). Texto largo en varias filas de la misma celda. Trabajar con Nombres en 2D. Generar un Nombre de rango variable. Atajos de teclado. Instrucciones en el editor de VBA. Frmulas e Instrucciones Excel 4.0.

1.- ASIGNAR UN NOMBRE DEFINIDO A UN RANGO DE DATOS.


1. Selecciona el rango de datos. 2. Frmulas > Nombres definidos > Administrador de nombres. 3. Nuevo: a. Nombre: miRango , o el nombre que prefieras (sin espacios), siempre que no est reservado. Por ejemplo; no se pueden utilizar como nombres AB o UVA ya que estos son nombres de columnas. b. mbito: Libro, o el que prefieras de la lista desplegable. c. Comentario: El que creas oportuno. d. Hace referencia a: El rango de celdas al que quieres aplicar el nombre, p.ej. A2:C14

Ejemplo de trabajo con nombres: =BUSCARV("La Palma";miRango;3;0) , el resultado, segn la Imagen del prximo tema, sera: 769.

Volver a Contenido

2.- ASIGNAR AUTOMTICAMENTE,NOMBRES DEFINIDOS, A VARIOS CAMPOS DE DATOS.


1. Selecciona el rango de datos, incluso los ttulos. Observa la Imagen a la derecha. 2. frmulas > Nombres definidos > Crear desde la seleccin. 3. Marca Fila superior, desmarca el resto y pulsa ACEPTAR. Ejemplo de trabajo con nombres: Si ahora escribimos p.ej. en J6 =En &Mes& el valor fue &Valor, el resultado es En Mayo el valor fue 413, y si esa misma frmula la escribimos p.ej. en E12 el resultado es En Noviembre el valor fue 635.

Volver a Contenido

3.- VISUALIZAR BARRAS DE DATOS EN LAS CELDAS (para valores numricos).


1. Selecciona el rango de datos (en la imagen de la derecha: B2:B13). 2. Inicio > Estilos > Formato condicional > Barras de datos > Elige el color que prefieras. Las barras de datos tendrn un progreso acorde al valor de la celda, respecto al resto de valores del rango formateado.

Este efecto lo puedes combinar con Escalas de color y/o con Conjuntos de iconos, que puedes encontrar en el mismo sitio.

Volver a Contenido

4.- TEXTO LARGO EN VARIAS FILAS DE LA MISM A CELD A.


Un texto como el represent ado en B2 (ocupa ms de una celda), podra verse como en B3, en el caso de que la celda de la derecha est ocupada con un valor. Para que se vea como en B5 (o E5), puedes actuar como se indica a continuacin: 1. Haz clic en la celda que contiene el texto largo. 2. Inicio > Alineacin > Ajustar texto (o tambin: Botn secundario sobre la celda > Formato de celdas > Alineacin > Ajustar texto). Otra forma de conseguir este efecto es; donde quieras un salto de lnea, pulsa: Alt + Intro.

Volver a Contenido

5.- TRABAJAR CON NOMBRES EN 2D.

1. S e l e c c i o n a e l rango de datos, incluso los ttulos (B2:H14). Observa la Imagen de la derecha. 2. Frmulas > Nombres definidos > Crear desde la seleccin. 3. Marca Fila superior y Columna izquierda. 4. Pulsa ACEPTAR. Si ahora escribes en una celda =SUMA(abril:junio manzana:mango) , obtienes 2.484, que es la suma del rango sombreado en amarillo. Si escribes en otra celda =SUMA(mango), obtienes 2.412, que es la suma de los mangos en todo el ao. Aplicando el mismo procedimiento; con =SUMA(julio:septiembre), tendrs la suma del tercer trimestre y con=SUMA(enero:diciembre), obtienes la suma de toda la fruta durante todo el ao.

Volver a Contenido

6.- GENERAR UN NOMBRE DE RANGO VARIABLE.

Puedes crear un nombre que abarque el rango ocupado con los datos, y en caso de que en el futuro se aada(n) nuevo(s) registro(s), o se elimine(n) alguno(s) ya existente(s), se ajustar automticamente al nuevo rango.

1. Frmulas > Nombres definidos > Asignar nombre a un rango. 2. Definir nombre. 3. Nuevo: a. Nombre: miRango , o el nombre que prefieras (sin espacios), siempre que no est reservado. Por ejemplo; no se pueden utilizar como nombres AB o UVA ya que estos son nombres de columnas. b. mbito: Libro, o el que prefieras de la lista desplegable. c. Comentario: El que creas oportuno. d. Hace referencia a: =DESREF(Hoja1!$A$1;1;0;CONTAR(Hoja1!$A:$A);4) . Con esta frmula, miRango abarca A2:D10 en el caso de la figura de la izquierda (CONTAR(A:A) = 9), y A2:D13 en el caso de la figura de la derecha (CONTAR(A:A) = 12).

Volver a Contenido

7.- ATAJOS DE TECLADO.


Por cuestiones de funcionalidad y diseo, algunos atajos funcionan slo en versiones anteriores a E2007, y otros slo a partir de E2007.
FUNCIN O TAREA TECLADO Abrir. Administrador de nombres. Administrador de tareas de Windows. Ayuda. Barras de herramientas. Cont. A Cont. F3 FUNCIN O TAREA TECLADO Formato Porcentaje sin Cont. May. % decimales. Guardar. Cont. G Cont. May. : Cont. + Cont. Alt K

Cont. May. Hora actual. esc. F1 Insertar celdas. Cont. 7 Insertar hipervnculo

Borrar seleccin (incluso formato). Buscar y reemplazar (1). Buscar y reemplazar (2). Cambiar Excel < > VBA.

Cont. D (Delete) Cont. B Cont. L Alt F11

Interupcin en VBA (marca/desmarca). Ir a Libro nuevo.

F9 F5 Cont. U Cont. 6 Cont. ) Cont. ( Alt Cont. N Cont. 2 Cont. 9 Cont. 0 F7 Cont. V F3 Cont. May. _ F4 Cont. Y INTRO Cont. esp. Cont. May. * (no nm.) May. esp. Cont. E Cont. May. esp. Cont. 4

Mostrar/Ocultar objetos ( o marcadores ). Muestra las columnas Cerrar aplicacin activa. Alt F4 ocultas de la seleccin. Cerrar, Restaurar, Muestra las filas ocultas Alt esp. Minimizar, de la seleccin. Contorno a las celdas Cont. May. Muestra/Oculta seleccionadas. & frmulas/resultados. Copia/Pega la celda Cont. J Negrita(1). superior (1). Copia/Pega la celda Cont. ' Negrita(2). superior (2). Copia/Pega la celda Cont. May. Oculta columna. superior (3). " Copiar. Cont. C Oculta fila. Cortar. Cont. X Ortografa. Crear tabla (lista). Cont. Q Pegar. Cursiva (itlica) (1). Cont. 3 Pegar nombre. Quita el contorno de las Cursiva (itlica) (2). Cont. K celdas seleccionadas. Deshacer. Cont. Z Referencias: Abs... Editar celda. F2 Rehacer. Rellena la seleccin con Eliminar celdas. Cont. la entrada actual. Esquema. Cont. 8 Selecciona columna. Evalua frmula Selecciona el rango con seleccionada (o F9 datos actual. porcin). Expande/Contrae barra Cont. May. Selecciona fila. de frmulas. U Selecciona toda hoja o el Fecha actual. Cont. , rango actual (1). Fija para seleccinar Selecciona toda hoja o el F8 celdas. rango actual (2). Formato de celdas. Cont. 1 Subrallado (1).

Formato Fecha con el da, mes y ao. Formato Moneda con dos decimales. Formato numrico Exponencial (2 decimales).

Cont. May. Subrallado (2). # Cont. May. Tachado. $ Cont. May. Tamao de fuente (o ^ Tabla).

Cont. S Cont. 5 Cont. T

Volver a Contenido

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(A 1)+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";"b c";"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"\"Sobresalient e"}) 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.

Volver a Contenido

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2")) Is Nothing Then If Target <> Empty Then ActiveSheet.Name = Range("a2").Value End If End Sub

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$J$11" Then ActiveSheet.Name = Target.Value End Sub

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

On Error GoTo NombreDuplicado

If Range("J11") <> Empty Then Sh.Name = Range("J11")

Exit Sub

NombreDuplicado: MsgBox "Ya existe una hoja llamada '" & Range("J11") & "'" & _ vbNewLine & vbNewLine & "No se pueden tener dos hojas con el mismo nombre" Range("J11").Activate

End Sub

You might also like