variable valor una ultima tomar seleccionar referencia rango posicion otra obtener numero macro hoja hasta hacer fila desde datos con celda activa excel vba merge cell

excel - valor - seleccionar rango variable vba



Obtener el valor de una celda fusionada de un Excel desde su dirección de celda en vba (3)

Cómo obtener el valor de una celda fusionada de Excel que tiene una dirección de rango como "$ B $ 4: $ B $ 11" en vba


Esto se puede hacer en 2 pasos:

Nombre el rango de las celdas combinadas; resalte la celda fusionada y luego vaya a la barra de la cinta: Formulas Tab --> Define Name;

Asegúrese de que no haya espacios en el nombre. Ejemplo: defined_Name . Vaya a la celda deseada para ver la salida / resultado. En esa celda, escriba: =defined_Name .

Presiona intro porque has terminado.


Incluso si realmente se desaconseja utilizar celdas de combinación en Excel (use Center Across Selection por ejemplo, si es necesario), la celda que "contiene" el valor es la que está en la esquina superior izquierda (al menos, esa es una forma de expresarlo).

Por lo tanto, puede obtener el valor de las celdas combinadas en el rango B4:B11 de varias maneras:

  • Range("B4").Value
  • Range("B4:B11").Cells(1).Value
  • Range("B4:B11").Cells(1,1).Value

También puede observar que todas las otras celdas no tienen ningún valor en ellas. Mientras realiza la depuración, puede ver que el valor está empty .

También tenga en cuenta que el Range("B4:B11").Value no funcionará (genera un error de ejecución número 13 si intenta Debug.Print . Debug.Print ) porque devuelve una matriz.


Josh Brown dio (en un comentario) lo que creo que es la mejor respuesta:

Cuando no conozco los límites del área fusionada, obtengo el valor con

Range("B6").MergeArea.Cells(1,1).Value

Esto es útil en VBA cuando, por ejemplo, está recorriendo archivos que podrían haber combinado celdas de rangos desconocidos, por lo que puede ser mucho más general con este método. Gracias Josh!