Excel - Transbordo o texto de uma célula para uma célula adjacente que contém uma fórmula

Excel - Transbordo o texto de uma célula para uma célula adjacente que contém uma fórmula

Tenho uma tabela preenchida com dados provenientes de outras tabelas. As fórmulas nas células da minha tabela são bastante simples (referência a uma célula de outra planilha).

Exemplo de tabela

Na minha tabela, tenho linhas de "Título" (linhas 57 e 64 nesse caso) que contêm apenas um valor de texto que gostaria de transbordar para células adjacentes, pois as células adjacentes nessas linhas estarão sempre vazias.

Se os valores da tabela fossem inseridos manualmente, não haveria problema e a célula ficaria exatamente como eu quero, como na imagem abaixo.

A tabela seria se os dados fossem inseridos manualmente e eu quero

O valor da primeira célula na linha 57 não transborda porque a célula adjacente contém uma fórmula (a fórmula é basicamente "=OtherCell" onde OtherCell não contém nenhum valor (mais especificamente, um valor de ""))

É importante observar que a posição da linha “título” muda e ocorre em muitas linhas da tabela, pois os dados são extraídos automaticamente de um banco de dados.

Como posso conseguir isso...

  • Sem usar intervenção manual (são relatórios automatizados, não posso excluir fórmulas porque o próximo relatório gerado estará errado)
  • O VBA pode ser utilizado, mas não de forma que modifique a tabela de forma "irreversível" (de forma que faça com que na próxima vez que a planilha for calculada os dados estejam errados), pelo mesmo motivo da intervenção manual.

Eu uso o Excel 2013, mas acredito que esta questão se aplica às versões 2007+ do Excel.

Responder1

A resposta curta é: você não pode.

A resposta longa é que apenas células verdadeiramente vazias permitirão que o texto da próxima célula à esquerda transborde e seja exibido nessa célula.

É assim que o Excel funciona.

Se você especificamenteexcluirintervenção manual, exclusão de fórmulas, assim como VBA, não resta realmente nada além de aceitar os padrões, ou seja, uma fórmula em uma célula à direita impedirá que o texto passe para a direita.

Não atire no mensageiro.

Responder2

Se você realmente quisesse fazer isso, você poderia fazer uma fórmula complicada para a célula mais à esquerda que deveria lidar com isso. Não permitiria que os dados da tabela fossem usados ​​diretamente em cálculos posteriores, e a segunda e a terceira colunas não seriam realmente usadas, o que poderia perturbar o usuário. Mas funcionaria mostrar os dados E a entrada completa na primeira coluna. Poderíamos removê-los, o que poderia torná-los mais palatáveis ​​para os usuários.

Como há entradas numéricas explícitas e entradas alfa na primeira coluna, mas NÃO há entradas alfanuméricas, pode-se primeiro testar isso com TEXT 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()` agrupar cada uma e adicionar espaços conforme necessário para a aparência, mas a aparência pode ser alcançada, embora com um bastante trabalho.

Se o teste for bem-sucedido, a célula simplesmente terá o resultado do texto que possui agora, sem leitura da segunda e terceira colunas, pois elas não têm nada, pelo que entendi.

Se alguém usasse um determinado número de espaços entre a primeira/segunda e um número diferente entre a segunda/terceira colunas, isso poderia ser uma base confiável para extrair os dados da tabela para uso em outro lugar.

No entanto, se for usado em outro lugar, pode-se também simplesmente usar as fórmulas usadas para preencher esta tabela diretamente, não procurando algo na tabela, mas sim fazendo a pesquisa de primeiro nível nos dados de origem. Portanto, uma pesquisa direta em vez de uma pesquisa no material já pesquisado. De certa forma, um pouco "mais limpo".

Responder3

Usando o VBA, você pode anular células contendo uma fórmula que não produz nada:

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

Assim, as células adjacentes podem estender-se sobre células vazias.

Responder4

Para obter a aparência desejada, você precisará reestruturar seus dados de origem. Em vez de ter cabeçalhos de seção como este, pegue o valor desses cabeçalhos de seção e coloque-os em uma nova coluna, em cada linha associada a essa seção. Ficaria assim:

insira a descrição da imagem aqui

Se você não conseguir organizar seus dados de origem dessa maneira nativamente, poderá fazer isso sozinho com algum uso criativo de VLOOKUP e/ou INDEX/MATCH para encontrar linhas onde a coluna B está vazia nos dados de origem.

Em seguida, você pode pegar esses dados e criar uma tabela dinâmica resumindo-os, que pode ser manipulada no layout desejado inicialmente. Aqui está um modelo disso (configurei os campos Página, Rev e Descrição para usar o layout tabular, desativei todos os totais e desativei a exibição dos botões expandir/recolher):

insira a descrição da imagem aqui

informação relacionada