Extraer el contenido de una celda de un rango.

Buenas tardes,

Tengo un rango de celdas, de las cuáles sólo una tiene datos numéricos informados (si los tiene más de una la fórmula no debe funcionar) y quiero extraer el valor de esta celda en la celda de otra pestaña.

Por ejemplo de A1:A5 sólo A3 tiene contenido, en concreto 3.000 ¿qué formula puedo introducir en otra celda para que cuando haya contenido en alguna de las celdas de este rango, me lo muestre? Y si hay contenido en más de una de las celdas de este rango que no me muestre nada.

Muchas gracias por anticipado.

1 Respuesta

Respuesta
1

Puedo darte la solución con una macro, ¿quieres?

Si es así, me puedes decir,

1. El rango de celdas puede ser toda la columna A o siempre es de A1:A5

2. ¿En cuál celda de la hoja destino?

3. ¿Cómo se llama la hoja con datos?

4. ¿Cómo se llama la hoja destino?

Saludos. DAM

Buenos días DAM,

En primer lugar quiero agradecer tu atención.

Por supuesto que me interesa la solución con una macro. Es algo que voy a tener que utilizar en varias ocasiones.

1. El rango de celdas van a ser varios, pero creo que con tener una como ejemplo y que luego yo pueda replicarlo en otros. Por ejemplo:

Rango 1- D8:H8

Rango 2- I8:M8

Rango 3 -N8:R8

............

2. La celda de la hoja de destino:

Para el Rango 1- Celda de destino D4

Para el Rango 2 - Celda de destino D10

Para el Rango 3 - Celda de destino D 16

.....

3. La hoja / pestaña con datos se llama "Resultado"

4. La hoja / pestaña de destino se llama "Plantilla"

Un saludo,

Camila

Sigue las Instrucciones para poner la macro en worksheet
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Resultado)
4. Del lado derecho copia la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
rangos = Array("D8:H8", "I8:M8", "N8:R8")
destinos = Array("D4", "D10", "D16")
For i = LBound(destinos) To UBound(destinos)
    Sheets("plantilla").Range(destinos(i)) = ""
Next
For i = LBound(rangos) To UBound(rangos)
    c = 0
    For Each celda In Range(rangos(i))
        If celda <> "" Then
            c = c + 1
            valor = celda
            If c > 1 Then Exit For
        End If
    Next
    If c = 1 Then Sheets("plantilla").Range(destinos(i)) = valor
Next
End Sub

Indicaciones :
Si quieres otros rangos o más rangos u otras celdas destinos, cambia la macro, en estas líneas
rangos = Array("D8:H8", "I8:M8", "N8:R8")
destinos = Array("D4", "D10", "D16")
Ejemplos:
Si quieres modificar un rango, quedaría así
rangos = Array("D9:H9", "I8:M8", "N8:R8")
Si quieres modificar una celda destino, quedaría así
destinos = Array("E4", "D10", "D16")
Si quieres agregar un rango, quedaría así
rangos = Array("D8:H8", "I8:M8", "N8:R8", "S8:W8")
Además, si agregas un rango, deberás agregar la celda destino, así
destinos = Array("D4", "D10", "D16", "D20")
Como puedes observar, cada rango en el array “rangos”, tiene su correspondiente celda destino en el array “destinos”, así que si pones 10 rangos, deberás poner 10 celdas destino.

Prueba y me comentas

Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas