Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¡Pero qué libro más bueno!
jatrini 2018
jatrini - Excelente - 12/MAR/2019
1 CONTENIDO
Contenido 1
Introducción 5
Fórmulas 6
Valores especiales 6
En caso de ERROR 6
Blancos y NA() 6
Números 6
Números positivos 6
Valor enésimo más pequeño de una lista 6
Valor enésimo más grande de una lista 6
Suma con SUBTOTAL 6
Suma condicional 7
Suma de valores de filas impares 7
Suma de valores de filas pares 7
Suma de valores cada tres filas 7
Tendencia 7
Cadenas 7
Suma de caracteres de una columna 7
Fechas 8
Día actual 8
Menor que fecha actual 8
Número de semana 8
Inicio del semestre siguiente 8
Fin de mes 8
Un mes más 8
Cuarto del año 9
Último día de la semana dada 9
Suma de días laborables 9
Imprimir fecha con formato 9
Cambiar idioma en las fechas impresas 9
Búsquedas 10
1
jatrini - Excelente - 12/MAR/2019
Fórmulas matriciales 12
Máximos y mínimos 12
Máximo valor de una ocurrencia en array 12
Mínimo valor de una ocurrencia en array 12
Cadenas 12
Traducción de una cadena 12
Macros 12
Celdas 13
Ir a celda inicial 13
Valor de celda 13
Recalcular celda 13
Obtener última fila con valor 13
Rangos 13
Borrar el contenido de una hoja 13
Borrar un rango de celdas específico 14
Copiar varios rangos con formato en libro nuevo 14
Formatos 14
Formatear celdas 14
Escribir formato condicional 15
Borrar formatos condicionales 15
Contar Celdas por color 15
Cadenas 15
Función APLANAR texto 16
2
jatrini - Excelente - 12/MAR/2019
Elementos/Controles 16
Ajustar escalas gráfico a valores determinados cuando hay cambios 16
Aplicar misma escala a dos gráficos dinámicos 17
Modificar máximo y mínimo de SCROLLBAR en función de elemento seleccionado 18
Hyperlinks 18
Modificar hyperlinks 18
Modificar hyperlinks (versión RegExp) 19
Sistema 19
Referenciar variable de entorno 19
Ejecutar fichero BAT 19
Cargar XML desde web 19
Cargar información de varios ficheros excel 20
Activar y desactivar refrescos de pantalla 21
Grabar como y cerrar 21
Leer usuario y contraseña al abrir el libro 21
Borrar contraseña al cerrar el libro 22
Crear catálogo de nombres definidos en el libro 22
Crear PDF 22
Enviar correo formateado desde Outlook 23
Formatos condicionales 26
Destacar celdas con fecha menor a la actual 26
Destacar valores no encontrados en una lista 26
Construir un diagrama de Gantt con formato condicional 26
Trucos 26
Cambiar tipo de celda referenciada en la barra de fórmula 27
Evaluar fórmula en la barra de fórmula 27
Intercambiar visualización entre valores y fórmulas 27
Depuración de fórmula 27
Opciones de cálculo 27
Copiar/Duplicar rápidamente 28
Añadir un valor a un rango 28
Encontrar una referencia a libro externo 28
Fichero corrupto; tamaño grande 28
3
jatrini - Excelente - 12/MAR/2019
4
jatrini - Excelente - 12/MAR/2019
2 INTRODUCCIÓN
5
jatrini - Excelente - 12/MAR/2019
3 FÓRMULAS
=IFERROR(A1-A2;A1)
=IF(ISBLANK(A1);NA();"-")
3.2 NÚMEROS
6
jatrini - Excelente - 12/MAR/2019
Suma de valores en columna “B” para los valores de la columna “A” que coinciden con “Valor”.
=SUMIF(A1:A10;"Valor";B1:B10)
o
=SUMPRODUCT(--(A1:A10="Valor");B1:B10)
“--“ se emplea para convertir valores binarios en números: --TRUE=1 y --FALSE=0. Así, cuando
la condición se cumple, el valor TRUE se convierte a 1.
=SUMPRODUCT(MOD(ROW(1:10);2);B1:B10)
=SUMPRODUCT(MOD(ROW(1:10)+1;2);B1:B10)
=SUMPRODUCT(--(MOD(ROW(1:10);3)=1);B1:B10)
3.2.9 Tendencia
=TREND(B1:B10;{0;5;10;15;20;25;30;35;40;45};100)
3.3 CADENAS
=SUMPRODUCT(LEN(A1:A10))
7
jatrini - Excelente - 12/MAR/2019
3.4 FECHAS
=TODAY()
=A1<NOW()
=WEEKNUM(A1)
o
=WEEKNUM(A1;21)
=ISOWEEKNUM(A1)
Las dos últimas consideran como primera semana la que contiene el primer jueves del año (ISO
8601, empleado en Europa).
=IF(MONTH(A1)/6<1;DATE(YEAR(A1);"7";"1");DATE(YEAR(A1)+1;"1";"1"))
o
=DATE(YEAR(A1);--((MONTH(A1)>5)+1)*6+1;"1")
=EOMONTH(A1;0)
=EDATE(A1;1)
8
jatrini - Excelente - 12/MAR/2019
="Q"&INT((ISOWEEKNUM(A1)-1)/13+1)
Obtenemos el “09/04/2018”.
Obteniendo el “11/04/2018”.
=TEXT(A1;"aaaa-mmm")
o
="Informe generado el: "&TEXT(NOW();"dddd dd/mm/aaaa hh:mm:ss")
Se debe especificar el “locale code”, en hexadecimal. Por ejemplo, con el código 409, inglés de
Estados Unidos, aparecerán las etiquetas “Mon, Monday, Nov, Novembre”, etc.
=TEXT(F13;"[$-409]mmm")
9
jatrini - Excelente - 12/MAR/2019
3.5 BÚSQUEDAS
=IF(SUM(COUNTIF(A1;{"Dispatched";"Cancelled";"Closed";"Transferred"}))>0;"SI";
"NO")
o
=IF(SUM(COUNTIF(A1;{"*pe*";"*ss*"}))>0;"NO";"SI")
=SUMPRODUCT(--(A1:A10="Open"))
3.6 REFERENCIAS
=IFERROR(SUM(INDIRECT(A1&"!A:A"));"")
10
jatrini - Excelente - 12/MAR/2019
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
=ISREF(INDIRECT(“Hoja1”&"!A1"))
=SUM(Hoja1:Hoja2!A1)
=ADDRESS(5;2)
Devuelve “$B$5”.
Devuelve “Hoja1!R5C2”.
11
jatrini - Excelente - 12/MAR/2019
4 FÓRMULAS MATRICIALES
Estas fórmulas aplican sobre rangos de celdas, es decir, matrices de datos. Se introducen en
Excel pulsando [CTRL+MAYUS+INTRO], con lo que aparecerán automáticamente las llaves que
engloban la fórmula (no hay que teclearlas).
{=MAX(IF(LEFT(A1:A10;3)="ene";B1:B10))}
o
{=MAX(IF(B1:B10=A1;C1:C10))}
{=MIN(IF(B1:B10=A1;C1:C10))}
4.2 CADENAS
Existe una tabla de TRADUCCIONES con los campos SUBCADENA (cadena a coincidir) y
TRADUCCIÓN (cadena traducida).
12
jatrini - Excelente - 12/MAR/2019
5 MACROS
5.1 CELDAS
5.2 RANGOS
' Al inicio
Range("A1").Select
End Sub
13
jatrini - Excelente - 12/MAR/2019
Sheets("MiHoja").Select
Range("B2:C4").Select
Selection.ClearContents
' Al inicio
Range("A1").Select
End Sub
5.3 FORMATOS
' Formatear
Cells.Select
Selection.RowHeight = 11.25
Columns("A:A").ColumnWidth = 2
Columns("B:B").ColumnWidth = 9
Columns("G:I").ColumnWidth = 10
Columns("C:C").Select
Range("C2").Activate
With Selection
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
14
jatrini - Excelente - 12/MAR/2019
.ReadingOrder = xlContext
.MergeCells = False
End With
Sub FormatosCondicionales()
' Formato para destacar los márgenes por debajo del objetivo (en C3)
Columns("C:C").Select
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
Application.Volatile
End Function
15
jatrini - Excelente - 12/MAR/2019
5.4 CADENAS
5.4.1 Función APLANAR texto
Los valores referenciados están en hoja aparte: “F_Aplanar”, celdas A1 y A2. Es una forma de
no incluir las cadenas en código VBA, donde hay problemas de codificación de caracteres entre
Mac y Windows.
Acentos = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ,/ºª"
Regular = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy "
For i = 1 To Len(Acentos)
A = Mid(Acentos, i, 1)
B = Mid(Regular, i, 1)
Cadena = Replace(Cadena, A, B)
Next
APLANAR = Cadena
End Function
5.5 ELEMENTOS/CONTROLES
Sub AjustaEscalas()
' No refresco pantalla
Application.ScreenUpdating = False
16
jatrini - Excelente - 12/MAR/2019
ActiveSheet.Unprotect
' Al inicio
Range("A1").Select
End Sub
Se tienen dos gráficos “Creados” y “Resueltos”, a los que se les pone la misma escala cuando
se modifica la fuente de datos, que es la tabla dinámica “ElementosCreados”. La función de
actualización debe estar en la hoja en la que reside la tabla dinámica.
En la celda F10 se calcula el máximo del eje Y, dando por ejemplo un 10% más del valor
máximo de los datos por estética:
=TRUNC(MAX(Datos!A1:H50)*110%)
Sub AjustaEscalas()
17
jatrini - Excelente - 12/MAR/2019
ActiveSheet.ChartObjects("Resueltos").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MaximumScale = Cells(10, "F").Value
' Al inicio
Range("A1").Select
La macro debe ir en la hoja donde se encuentre la celda que define el elemento a gestionar por
la Scrollbar. En la celda A1 se encuentra el máximo valor para ese elemento.
5.6 HYPERLINKS
Sub ModificarHyperLink()
viejotexto = "../../.."
nuevotexto = "https://www.web.com"
18
jatrini - Excelente - 12/MAR/2019
enlace.Address = Application.WorksheetFunction.Substitute(enlace.Address,
viejotexto, nuevotexto)
End If
Next
End Sub
Sub ApuntarLinksASharepoint()
End Sub
5.7 SISTEMA
19
jatrini - Excelente - 12/MAR/2019
="https://www.web.com/"&A3&"?tempMax=10000&username="&A1&"&password="&A2
' Variables
Link = Sheets("MiHoja").Range("A4").Value
' Variables
Dim Ficheros As Variant
Dim Cont As Long
Dim Libro As Workbook
' Pegar
Windows("MiExcel.xlsm").Activate
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
'ActiveWindow.WindowState = xlNormal
ActiveSheet.Paste
' A Casa
20
jatrini - Excelente - 12/MAR/2019
Windows("MiExcel.xlsm").Activate
Range("A1").Select
ActiveWindow.Close
21
jatrini - Excelente - 12/MAR/2019
ActiveCell.FormulaR1C1 = Dato
End Sub
End Sub
Sub ActualizarListaNombres()
Sheets("Nombres").Select
' Actualizar
RowNum = 6: ColNum = 2
22
jatrini - Excelente - 12/MAR/2019
RowNum = RowNum + 1
Next
' Ir a A1
Range("A1").Select
End Sub
Sub CrearPDF()
' Imprimir
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF,
Filename:=Environ("USERPROFILE") & "\Desktop" & "\OSS-DM_" & Format(Date,
"yyyymmdd") & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True,
IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
' Inicio
With Application
.EnableEvents = False
.ScreenUpdating = False
23
jatrini - Excelente - 12/MAR/2019
End With
With Correo
.To = Sheets("Pendientes").Range("C9")
.CC = Sheets("Pendientes").Range("C10")
.BCC = Sheets("Pendientes").Range("C11")
.Subject = Sheets("Pendientes").Range("C7") &
Sheets("Pendientes").Range("C8")
.HTMLBody = ConvertirAHTML(Rango)
.Display
'.Send
End With
' Fin
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
24
jatrini - Excelente - 12/MAR/2019
SourceType:=xlSourceRange, _
Filename:=TempFich, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
End Function
25
jatrini - Excelente - 12/MAR/2019
6 FORMATOS CONDICIONALES
Tenemos por ejemplo las cabeceras de las semanas en el formato “WXX” en las celdas O1 a
BN1. De la fila 2 a la 10, por ejemplo, las tareas. En la columna M tenemos calculado el número
de la semana de inicio, y en la N el de la semana de fin de cada tarea.
Para el rango:
=$O$2:$BN$10
26
jatrini - Excelente - 12/MAR/2019
7 TRUCOS
Cuando se edita una fórmula, se puede evaluar para introducir el valor calculado en vez de la
fórmula pulsando la tecla F9. También funciona seleccionando parte de la fórmula.
Con esta opción de menú se puede depurar la fórmula de la casilla paso a paso. También son
útiles las opciones de ver precedentes, dependientes y comprobación de errores.
A veces ocurre que después de modificar el valor de las celdas involucradas en el cálculo de
una fórmula, el resultado no se modifica. Cuando esto sucede se debe a la configuración del
cálculo automático de fórmulas.
Esta opciones se pueden cambiar en el menú de configuración y también existe una opción de
menú.
27
jatrini - Excelente - 12/MAR/2019
Se puede hacer con “arrastrar y soltar” mientras se pulsa la tecla [CTRL]. Funciona con hojas,
rangos, celdas, etc.
Usar la opción de búsqueda. Una vez abierto el diálogo, buscar en el libro entero el texto “.xl.”.
Si el libro sigue dando problemas al abrir, revisar también las posibles referencias en los
formatos condicionales.
Grabar el libro con formato “xlsx”. Cambiar la extensión a “.zip” y decomprimirlo. Revisar los
ficheros, debe haber un directorio con las hojas y un fichero “xml” por cada hoja. Abrir el de
mayor tamaño.
Un ejemplo puede ser que exista un atributo tal y como este para cada columna:
En este caso, este atributo hace referencia a la colocación del texto dentro de la celda.
Seleccionando todas las celdas, cambiando el formato de esta propiedad, y grabando
finalmente el fichero, el problema queda solucionado.
28
jatrini - Excelente - 12/MAR/2019
https://support.microsoft.com/es-es/help/3114374/december-8-2015-update-for-excel-2016-
kb3114374
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options
Tras copiar celdas o hojas de otras hojas excel es posible que nos encontremos con referencias
no visibles en nuestro fichero. La opción de romper vínculos no funciona, quedando el vínculo
siempre presente. Conviene revisar los formatos condicionales de las hojas y celdas que se han
copiado, porque a veces ese vínculo se encuentra en dicho formato. Borrando el formato ya es
posible posteriormente eliminar el vínculo.
Para hacer filtros por varios criterios, se especifican en un rango las cabeceras de los campos a
filtrar, y en las columnas de dicho rango se enumeran los valores por los que se quiere filtrar.
Las columnas suponen operadores “O” del filtro, mientras que las filas “Y”, interpretándose la
celda vacía como cualquier valor. Posteriormente, se elige la opción de menú “Filtro
Avanzado”, detallando el rango donde están los valores a filtrar y el rango donde se
encuentran los criterios.
Genéricos/Trucos:
● http://chandoo.org/wp/
● http://www.rondebruin.nl/
● http://spreadsheetpage.com/
Gráficos:
● https://sites.google.com/site/e90e50charts/
29