Pregunta

Estoy haciendo un hlookup contra un valor que abarca varias columnas. Mis datos son similares a esto:

      A      B      C      D 
  ---------------------------  
1|       Col1          Col2
2|     x      y      z      w
3|
4|

En las filas 3 y 4 (A3, B3, C3, D3, etc.), me gustaría poner fórmulas que hagan una búsqueda en otro lugar del libro. El truco es que me gustaría que busque "Col1" para las columnas A y B y '' Col2 '' para las columnas C y D. '' Col1 '' está en A1, pero es realmente A1 y B1 fusionados. Cuando hago referencia a A1, " Col1 " aparece, pero cuando hago referencia a B1, el valor de retorno está en blanco.

¿Alguna idea?

¿Fue útil?

Solución

Para obtener acceso a " Col1 " y "Col2" etiquetas, puede usar lo siguiente:

  

= ÍNDICE ($ 1: $ 1,1, COLUMNA () - MOD (COLUMNA () - 1,2))

Nota: Esto supone que está agrupando el mismo número de celdas. Si fueran tres celdas, simplemente cambiaría el último número de la fórmula a 3, y así sucesivamente.

Editar: Así es como funciona:

INDEX ($ 1: $ 1,1, x) devuelve el valor de la celda en la fila 1, columna x. Si su tabla no se encuentra realmente en la esquina superior izquierda de la hoja de trabajo, puede cambiar esto al rango real que incluye todas sus etiquetas fusionadas. En este caso, sería: ÍNDICE ($ A $ 1: $ D $ 1,1, x)

COLUMN () devuelve el número de columna de la celda actual (1 en la columna A, 2 en la columna B, etc.)

MOD (COLUMN () - 1, x) devuelve un desplazamiento de la columna actual a la columna que contiene la etiqueta adecuada

Otros consejos

Aquí hay otra solución que también puede funcionar cuando las celdas combinadas son de diferentes anchos, permítanme ilustrar con un ejemplo:

  1. Abra un Excel nuevo, combine B1, C1, D1
  2. Escriba Col1 en la celda combinada
  3. En B2 , escriba la fórmula = B1 , y en C2 = C1 , en D2 =D1
  4. Debería ver que B2 es Col1 mientras que C2, D2 son 0
  5. En B3 , escriba la fórmula = A3 , cópiela
  6. Haga clic derecho en la celda combinada B1: D1 , seleccione " pegar especial - > fórmulas "
  7. Debería ver que la celda combinada es 0
  8. Escriba Col1 en la celda combinada
  9. Ahora debería ver que todos los B2, C2, D2 son Col1 , es decir, ahora puede hacer referencia a la celda combinada como espera que sea.

Si puede combinar varias celdas, cada una de diferentes anchuras, simplemente pegue la fórmula en todas ellas de una vez.

La razón detrás de esto funciona debido a una elección de diseño perculier de Microsoft. Parece que cuando pega fórmulas en celdas combinadas, cada celda subyacente recibe la fórmula (en contraste, si ingresa un valor, solo la celda superior izquierda la obtiene) Para que pueda usarla a su favor y pegue una fórmula que haga referencia la celda al lado, y luego sobrescribe la celda superior izquierda con el valor que desee, entonces cada celda subyacente a la celda combinada tendrá ese valor.

He creado una función simple en vba que resolverá este problema:

Function mergedText(rngMergedCell As Range)

    If rngMergedCell.MergeCells = True Then
        mergedText = rngMergedCell.MergeArea(1, 1)
    Else
        mergedText = rngMergedCell
    End If

End Function

Si la celda es una celda fusionada, la función devolverá el valor en el primer elemento de la celda fusionada; aquí es donde la celda fusionada almacena su valor

Una variante más genérica de la propuesta de e.James es:

={INDEX($A$1:A1, 1, MAX(NOT(ISBLANK($A$1:A1))*COLUMN($A$1:A1)-COLUMN($A$1)+1))}

Esto se basa en el hecho de que las celdas combinadas están vacías, excepto la primera (a menos que esté en un caso como la propuesta de Martin).

Nota: Las llaves están ahí para marcar una fórmula de matriz (no las ingrese, solo presione alt + retorno para validar la fórmula en la celda).

Me doy cuenta de que llego tarde a este hilo, pero encontré una respuesta muy simple para esto.

Si, por ejemplo, su etiqueta se fusiona en 4 columnas a1: d1, y si hace referencia a b1, devolverá " " ;. Para encontrar dinámicamente las etiquetas correctas, use este fx en su nueva tabla:

=if(OriginalTable!B1="",ThisTable!A1,OriginalTable!B1)

Estoy seguro de que se dará cuenta de que esto capturará rangos en e1: h1, etc. a medida que lo arrastre.

Eso es todo. Espero que ayude a alguien.

Las celdas B1 y D2 no contienen valores, solo A1 y C1 tienen algo dentro de ellas.

Entonces, solo tendrá que asegurarse de que sus fórmulas en las columnas A y B se refieren a A1 como el valor de búsqueda, y que sus fórmulas en las columnas C y D se refieren a C1 para el valor de búsqueda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top