
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).
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.
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 to
TEXT()`, 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í:
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):