Trucos Excel. Mapa de México por Estados

7 Abr

mapa_excel_mexico1.png

Hoy os presento la versión inicial del mapa de México por Estados Federales para que le podáis usar en Excel, Powerpoint, Word o alguna de las herramientas habituales de ofimática. Se trata de un archivo Excel con macros que os podéis descargar en este enlace. La hoja Mapa contiene una serie de shapes que están nombrados para poder cambiar de color en función de una variable tramo. Este Excel inicial está preparado para poder pintar hasta 5 tramos, si deseáis más tramos tenéis que meteros en el código Excel que modifica el color de cada uno de los 32 shapes que componen el mapa, posteriormente lo repasamos de forma rápida. Por otro lado tenemos la división de los estados, el nombre de los shapes y los tramos que previamente habremos preparado. Este ejemplo no pinta nada concreto. La hoja Mapa además dispone de dos botones asociados a las dos macros que contiene el Excel. Por un lado tenemos una macro que nos deja los Estados en blanco y por otro tenemos la macro que nos pinta de cada color elegido el mapa.Un vistazo sobre estos elementos de la hoja Excel:

mapa_excel_mexico2.png

El nombre de la columna Estado se puede modificar. Los nombres están sacados de Wikipedia, entiendo que no deberían de plantear ningún problema. Lo que no se puede modificar es la columna  name que contiene el nombre asociado a la imagen de windows. Cada uno de los elementos del mapa se asocian a la variable tramo a través de la columna name. La variable tramo es la que nos realiza el mapa de colores, recordamos que sólo tenemos 5 tramos. Los botones son los que ejecutan las macros.

Las macros que lleva el Excel son:

'Esta macro pone el color de todos los estados en blanco
Sub ColorOriginalFormas()

Dim K As Integer
Dim Hoja As Worksheet

Set Hoja = Worksheets("Mapa")

For K = 1 To Hoja.Shapes.Count
Hoja.Shapes(K).Fill.ForeColor.RGB = RGB(256, 256, 256)
Next K
End Sub

Esta macro recorre todos los shapes de la hoja Mapa y los pone en blanco. La otra macro es:

'Macro para colorear cada Estado en función de una variable tramo.
'Los datos de tramo han de ser hechos.
Sub Tramos()
Dim Poblaciones() As Variant
Dim K As Long
Dim Hoja As Worksheet

Poblaciones = Worksheets("Mapa").Range("Q1").CurrentRegion.Value
Set Hoja = Worksheets("Mapa")

If Hoja.Shapes(1).Type = msoGroup Then Hoja.Shapes(1).Ungroup
For K = 2 To UBound(Poblaciones, 1)
With Hoja.Shapes(Poblaciones(K, 2)).Fill.ForeColor
If Poblaciones(K, 3) = 1 Then .RGB = RGB(0, 0, 256)
If Poblaciones(K, 3) = 2 Then .RGB = RGB(256, 256, 128)
If Poblaciones(K, 3) = 3 Then .RGB = RGB(128, 256, 256)
If Poblaciones(K, 3) = 4 Then .RGB = RGB(128, 128, 256)
If Poblaciones(K, 3) = 5 Then .RGB = RGB(256, 128, 0)
End With
Next K
End Sub

Esta macro, al igual que la anterior, son conocidas por los seguidores del blog porque ya aparecieron en una entrada anterior. Para el rango poblaciones vamos recorriendo el elemento que contiene el nombre y en función de él modificamos el color del objeto seleccionado. Lo hacemos mediante código RGB, si deseamos tener un nuevo tramo podemos añadir una nueva condición, por otro lado si deseamos eliminar un tramo sólo eliminamos la condición. Siempre tendremos en cuenta que si añadimos o eliminamos tramos tenemos que modificar la leyenda.

El mapa tiene algunas limitaciones:

  • Es muy feo
  • No pinta las islas, pero esta labor es sencilla
  • Sólo está preparado para 5 tramos, se debe preparar para más
  • No se actualiza la leyenda
  • Habría que incluir el mar, países limítrofes,…

En fin, si alguien lo mejora o detecta algún error que se ponga en contacto conmigo y solventaremos los posibles problemas. Saludos.

57 respuestas a «Trucos Excel. Mapa de México por Estados»

  1. Hola! Este post me sirve en demacía pero supongamos que yo lo necesito reproducir pero con el mapa de USA tendrás alguna entrada de como hacer desde el mapa?

    Me ayudarías muchisimo

    Gracias

  2. Sentí la necesidad de manifestar mi agradecimiento. Es lo que necesitaba. Gracias.
    Y es sobre el mapa de mi país.

  3. Muchas gracias, se están cocinando nuevas versiones mejoradas, muy mejoradas, de los mapas en Excel. Además del mapa de Colombia. Saludos.

  4. ME Podrias decir como aumento el rango de estados, necesito más solo tiene 32 quiero aumentar ese rango

  5. Sólo tienes que ponerlos en la columna Q. Pero ojo, si añades más estados necesitas que tengan su correspondiente shape asociado.

    Este excel lo que hace es asociar un shape a una característica. Es la versión más simple.

  6. mil y un gracias! está padrísimo el mapa. Tendrán un mapa mundi así??
    Graacias graacias!

  7. Buenas tardes:

    El Mapa de Colombia en excel lo tendrias?. Si me lo pudieras facilitar te lo agradeceria.

  8. Excelente aportación, yo lo utilicé en mi trabajo haciendo algunas modificaciones en el código de visual basic, de manera que ahora ilumina solo los estados que seleccionamos, y de acuerdo al volumen de venta en cada estado, este se va iluminando de verdes-amarillos-naranjas-rojos. Dejando en negro aquellos estados que no tienen venta.

    EXCELENTE APORTACIÓN.

  9. Mi estimado, yo no manejo prácticamente nada de VB y requiero algo similar a lo que mencionó Homero que hizo con tu plantilla.

    Sin embargo, quiero agradecerte el excelente aporte y sobre todo por compartirlo abiertamente, en verdad felicitaciones!

  10. Muchas gracias por tu aporte… Me ayudó bastante en un proyecto… Rediseñé los parámetros y me funcionó de maravilla… MUCHAS GRACIAS…

  11. Homero! No se usar Visual Basic podras compartir el archivo relacionado con ventas me serviria muchisimo!

  12. Hola,

    Homero, no creo que vayas a leer esto. No me di cuenta en su momento. ¿Podías enviar esa versión del mapa de México para Excel?

    Saludos.

  13. hola homero magnifica creacion podria regalarnos una copia, creo serie muchisima utilidad para mas de uno saludos

  14. Hola, muchas gracias por compatir está excelente y muy útil. Sería posible que se puedan agregar 2 tramos más? Me ayudaría muchísimo. Necesito dividir el país en al menos 6 regiones. Mil gracias

  15. Hola, oye que buen trabajo bro, de verdad muy bueno, oye una pregunta, como le puedo hacer para hacer básicamente la misma idea pero por municipio, cada municipio de cada estado y poder colorearlo por tramos?

    Saludos.

  16. No te imaginas como te agradezco que hayas compartido esto, me ayudaste mucho para mi tesis.

    Ojalá existiera más gente como tú que comparte lo que sabe y lo que hace!!!

    ¡¡¡MUCHÍSIMAS GRACIAS!!!!
    Saludos

    Karla

  17. Mil gracias , con esta ayuda hoy si podre dormir tranquilo, viendo los comentarios si llegaras a tener otros mapas mucho te agradecere los dejes linkeados, son de gran ayuda.

  18. Hola, La herramienta está excelente, sabrás si existe una de México pero por municipios? -Estoy dispuesto a comprarlo de ser necesario, pero no lo encuentro en google. :( Alguien conoce un mapa como este por municipios?

  19. Muchas gracias por tan valiosa y útil herramienta; hace tiempo venía buscando algo similar para utilizar en la oficina y esto resultó ser justo lo que necesitaba.

  20. Hola Thelma, no te queda otra que añadir un cuadro de texto a cada forma, además si trabajas con ese cuadro de texto puedes hacer unos mapas espectaculares.

  21. Hola :

    Como podria elaborar algo similar pero de la Ciudad de Mexico y su area metropolitana

    De hecho tengo el mapa

    Saludos

    Julio Cesar Gonzalez Cruz

  22. Excelente aporte, solo una cosa Homero nos podemos ayudar con el mapa que vos realizaste.
    Gracia!!

  23. Buena tarde. Aprecio muy funcional el mapa aunque me gustaría saber cómo puedo cambiar los colores que tiene predeterminados.

  24. Emmanuel. Los colores los fijas en:

    If Poblaciones(K, 3) = 1 Then .RGB = RGB(0, 0, 256)
    If Poblaciones(K, 3) = 2 Then .RGB = RGB(256, 256, 128)
    If Poblaciones(K, 3) = 3 Then .RGB = RGB(128, 256, 256)
    If Poblaciones(K, 3) = 4 Then .RGB = RGB(128, 128, 256)
    If Poblaciones(K, 3) = 5 Then .RGB = RGB(256, 128, 0)

    Juega con los RGB y podrás modificar estos colores. Saludos.

  25. Muchas gracias!!!
    es una forma interesante de ver mi pais con macros y la de utilidad que se le puede dar.
    MUCHAS GRACIAS

  26. Hola, muchas gracias por la plantilla .xls, la verdad que es muy práctica, me gustaría saber si Homero ha subido ya su adaptación o si existe una versión mejorada?, quiero agregrar un color diferente a cada Estado y de acuerdo a las estadísticas que varíe la graduación, tal como existe en la funcion de formato condicional del programa excel, ya se imaginarán lo complicado que es para mí siendo que no soy programador, por lo menos he aprendido mucho en unas cuantas horas, saludos.

  27. les envío en forma de agradecimiento, los primeros 29 colores en degradado que usé para agregarlos a su proyecto, sólo 29 se que están bien porque fueron los que yo necesitaba para las categorías que hice, al final puse sin corroborar un tono negro, y dos intermedios entre ellos para que ya tengan los 32 estados azulez. saludos

    Sub Tramos()
    Dim Poblaciones() As Variant
    Dim K As Long
    Dim Hoja As Worksheet

    Poblaciones = Worksheets(«Mapa»).Range(«Q1»).CurrentRegion.Value
    Set Hoja = Worksheets(«Mapa»)

    If Hoja.Shapes(1).Type = msoGroup Then Hoja.Shapes(1).Ungroup
    For K = 2 To UBound(Poblaciones, 1)
    With Hoja.Shapes(Poblaciones(K, 2)).Fill.ForeColor
    If Poblaciones(K, 3) = 1 Then .RGB = RGB(247, 251, 255)
    If Poblaciones(K, 3) = 2 Then .RGB = RGB(240, 246, 252)
    If Poblaciones(K, 3) = 3 Then .RGB = RGB(233, 242, 250)
    If Poblaciones(K, 3) = 4 Then .RGB = RGB(226, 237, 248)
    If Poblaciones(K, 3) = 5 Then .RGB = RGB(219, 233, 246)
    If Poblaciones(K, 3) = 6 Then .RGB = RGB(213, 229, 244)
    If Poblaciones(K, 3) = 7 Then .RGB = RGB(206, 224, 241)
    If Poblaciones(K, 3) = 8 Then .RGB = RGB(199, 220, 239)
    If Poblaciones(K, 3) = 9 Then .RGB = RGB(190, 215, 236)
    If Poblaciones(K, 3) = 10 Then .RGB = RGB(179, 210, 232)
    If Poblaciones(K, 3) = 11 Then .RGB = RGB(168, 206, 228)
    If Poblaciones(K, 3) = 12 Then .RGB = RGB(156, 201, 224)
    If Poblaciones(K, 3) = 13 Then .RGB = RGB(142, 193, 221)
    If Poblaciones(K, 3) = 14 Then .RGB = RGB(128, 186, 218)
    If Poblaciones(K, 3) = 15 Then .RGB = RGB(114, 178, 215)
    If Poblaciones(K, 3) = 16 Then .RGB = RGB(102, 170, 212)
    If Poblaciones(K, 3) = 17 Then .RGB = RGB(90, 162, 207)
    If Poblaciones(K, 3) = 18 Then .RGB = RGB(79, 155, 203)
    If Poblaciones(K, 3) = 19 Then .RGB = RGB(68, 147, 198)
    If Poblaciones(K, 3) = 20 Then .RGB = RGB(58, 138, 194)
    If Poblaciones(K, 3) = 21 Then .RGB = RGB(49, 129, 189)
    If Poblaciones(K, 3) = 22 Then .RGB = RGB(40, 120, 184)
    If Poblaciones(K, 3) = 23 Then .RGB = RGB(31, 111, 179)
    If Poblaciones(K, 3) = 24 Then .RGB = RGB(24, 101, 172)
    If Poblaciones(K, 3) = 25 Then .RGB = RGB(16, 92, 164)
    If Poblaciones(K, 3) = 26 Then .RGB = RGB(9, 82, 157)
    If Poblaciones(K, 3) = 27 Then .RGB = RGB(8, 71, 142)
    If Poblaciones(K, 3) = 28 Then .RGB = RGB(8, 59, 124)
    If Poblaciones(K, 3) = 29 Then .RGB = RGB(8, 48, 107)
    If Poblaciones(K, 3) = 30 Then .RGB = RGB(8, 38, 81)
    If Poblaciones(K, 3) = 31 Then .RGB = RGB(8, 28, 60)
    If Poblaciones(K, 3) = 32 Then .RGB = RGB(8, 8, 40)

    End With
    Next K

    End Sub

  28. Hola buenas noches tu mapa me ha sido muy útil… lamentablemente no se programación y no se como agregar tramos. Me podrías orientar para agregar otros 4 colores? Y si se pudiera por municipios creo que ya es mucho pedir, pero es excelente el mapa!!

  29. Pingback: Creación personalizada de mapa en VBA/Excel | MeXcel Plus

Los comentarios están cerrados.