** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Combinación de celdas especial.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCombinación de celdas especial.

 Responder Responder
Autor
Mensaje
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5558
Enlace directo a este mensaje Tema: Combinación de celdas especial.
    Enviado: 11/Junio/2014 a las 20:09
 

En ocasiones queremos que ciertos datos no se vean (por ejemplo salarios, precios, etc.) sin necesidad de ocultar columnas o filas, ya que la ausencia de las letras de dichas columnas (o números de filas)  delatan "el truco" empleado.

 
Podemos hacerlo combinando el rango en una sola celda, pero... conservando los valores de las celdas (la combinación "normal" de Excel conserva solamente el valor de la primera celda).
 

Con un pequeño truco podemos lograrlo: 1) Combinamos otro rango de igual tamaño que el que queremos agrupar, 2) damos a copiar en ese segundo rango y 3) en el primer rango damos a Pegar solo formatos.

 
 
Si lo queremos automatizar, el siguiente código realiza lo explicado arriba:
 

Sub CombinaT()

' ——————————————————————————————————————————————————————————————————————————————————————————————

' Combino un rango de celdas, conservando los valores individuales de         º   º º º       /

' cada una de las celdas.                                                    / \ º     \     /

' Las celdas conservan la opción de operar con ellas aunque no se vea el    /   \ º º º \   /

' contenido de las mismas (Contar, sumar, promedio, mínimo,... etc.).      /     \     º \ /

' Proceso: Selecciona el rango y ejecuta "CombinaT".   11 Jun 2014.       /       º º º   º

' ——————————————————————————————————————————————————————————————————————————————————————————————

  Dim cont&, filaD&, miRango1 As Range, miRango2 As Range

'Rango a combinar.

  Set miRango1 = Selection

'Desplazamiento, para preservar posibles datos adyacentes por abajo.

  filaD = miRango1.Cells.Count + 100

1

  cont = cont + 1

'Rango auxiliar.

  Set miRango2 = miRango1.Offset(filaD)

'Si el rango auxiliar contiene datos re-desplazo el rango auxiliar.

  If WorksheetFunction.CountA(miRango2) > 0 Then

    If filaD > 900000 Or cont > 1000 Then GoTo error

    filaD = filaD + 1000

    GoTo 1

  End If

 

  With miRango2

    With .Resize(1, 1)

'Para centrar el texto visible.

      .HorizontalAlignment = xlCenter

      .VerticalAlignment = xlCenter

    End With

'Combino y Copio el rango auxiliar.

    .MergeCells = True

    .Copy

  End With 'miRango2

'Combino en una sola celda el rango seleccionado.

  miRango1.PasteSpecial Paste:=xlPasteFormats

'Descompongo el rango auxiliar.

  miRango2.UnMerge

'Evito el mensaje de error.

  Exit Sub

error:

'Mensaje de error.

  MsgBox " ¡ NO SE HA PODIDO COMBINAR !" & vbCr & vbCr & "En la hoja existen datos adyacentes" _

      & vbCr & "remotos que serían borrados." & vbCr & vbCr & "           ( fila: " & filaD _

      & " )", vbCritical, "ASV  -  Proceso cancelado"

End Sub 'CombinaT

 
 
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable