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!