Excel: desborda el texto de una celda a una celda adyacente que contiene una fórmula

Excel: desborda el texto de una celda a una celda adyacente que contiene una fórmula

Tengo una tabla llena de datos que provienen de otras tablas. Las fórmulas en las celdas de mi tabla son bastante simples (referencia a una celda en otra hoja de trabajo).

Ejemplo de tabla

En mi tabla, tengo filas de "Título" (filas 57 y 64 en ese caso) que contienen solo un valor de texto que me gustaría desbordar a las celdas adyacentes, ya que las celdas adyacentes en esas filas siempre estarán vacías.

Si los valores en la tabla se ingresaran manualmente, no habría ningún problema y la celda se vería exactamente como la quiero, como en la imagen a continuación.

La tabla tiene lo que sería si los datos se ingresaran manualmente y ¿lo quiero?

El valor de la primera celda en la fila 57 no se desborda porque la celda adyacente contiene una fórmula (la fórmula es básicamente "=OtraCelda" donde OtraCelda no contiene ningún valor (más específicamente, un valor de ""))

Es importante tener en cuenta que la posición de la fila "título" cambia y ocurre en muchas filas de la tabla, ya que los datos se extraen automáticamente de una base de datos.

Cómo puedo conseguir esto...

  • Sin utilizar intervención manual (esos son informes automatizados, no puedo eliminar fórmulas porque el próximo informe generado será erróneo)
  • Se puede utilizar VBA, pero no de forma que modifique la tabla de forma "irreversible" (de forma que la próxima vez que se calcule la hoja los datos sean erróneos), por el mismo motivo que la intervención manual.

Utilizo Excel 2013, pero creo que esta pregunta se aplica a las versiones 2007+ de Excel.

Respuesta1

La respuesta corta es: no puedes.

La respuesta larga es que sólo las celdas verdaderamente vacías permitirán que el texto de la siguiente celda a la izquierda se extienda y se muestre en esa celda.

Así es como funciona Excel.

Si usted específicamenteexcluirintervención manual, eliminación de fórmulas, así como VBA, realmente no queda nada más que aceptar los valores predeterminados, que es que una fórmula en una celda a la derecha evitará que el texto se derrame hacia la derecha.

No dispares al mensajero.

Respuesta2

Si realmente quisieras hacerlo, podrías crear una fórmula complicada para la celda más a la izquierda que debería manejarlo. No permitiría que los datos de la tabla se usaran directamente en cálculos posteriores, y la segunda y tercera columnas no se usarían realmente, lo que podría molestar al usuario. Pero funcionaría mostrar los datos Y la entrada completa en la primera columna. Se podrían eliminar, lo que podría hacerlo más aceptable para los usuarios.

Dado que hay entradas explícitamente numéricas y entradas alfa en la primera columna, pero NO entradas alfanuméricas, primero se podría probar eso con ISTEXT(). If NOT, then one has the current formula for that column AND the formulas for the second and third columns. One would need toTEXT()`, envolver cada una y agregar espacios según sea necesario para la apariencia, pero se podría lograr la apariencia, aunque con un bastante trabajo.

Si la prueba tiene éxito, entonces la celda simplemente tiene el resultado de texto que tiene ahora sin lectura de la segunda y tercera columnas, ya que, según tengo entendido, no tienen nada.

Si se usara un número determinado de espacios entre la primera/segunda y un número diferente entre la segunda/tercera columna, esa podría ser una base confiable para extraer los datos de la tabla para usarlos en otros lugares.

Sin embargo, si se usa en otro lugar, también se podrían usar simplemente las fórmulas utilizadas para llenar esta tabla directamente, sin buscar nada en la tabla, sino haciendo la búsqueda de primer nivel en los datos de origen. Entonces, una búsqueda directa en lugar de una búsqueda en material ya buscado. Un poco más "limpio" en cierto modo.

Respuesta3

Usando VBA, puedes anular celdas que contengan una fórmula que no produzca nada:

Private Sub CommandButton21_Click()
    For Each c In Worksheets("yourworksheet").Range("yourrange")
        If c.Text = "" Then c.Select: Selection.ClearContents
    Next
End Sub

Por tanto, las celdas adyacentes pueden extenderse sobre celdas vacías.

Respuesta4

Para obtener el aspecto que desea, deberá reestructurar sus datos de origen. En lugar de tener encabezados de sección como este, tome el valor de esos encabezados de sección y colóquelos en una nueva columna, en cada fila asociada con esa sección. Se vería así:

ingrese la descripción de la imagen aquí

Si no puede distribuir sus datos de origen de esta manera de forma nativa, puede hacerlo usted mismo con un uso creativo de BUSCARV y/o ÍNDICE/COINCIDIR para encontrar filas donde la columna B está vacía en los datos de origen.

Luego, puede tomar estos datos y crear una tabla dinámica que los resuma, que puede manipularse en el diseño que deseaba inicialmente. Aquí hay una maqueta de eso (configuré los campos Página, Rev y Descripción para usar el diseño tabular, desactivé todos los totales y desactivé la visualización de los botones expandir/contraer):

ingrese la descripción de la imagen aquí

información relacionada