Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tudo que estiver relacionado ao Excel básico, como somar, calcular média, colocar bordas, etc.
  • Avatar do usuário
  • Avatar do usuário
#5777
Olá a todos,

Estou criando uma planilha no Excel 2013, vou tentar explicar a planilha para assim, quem puder, me ajudar.

Em uma planilha tenho duas abas, "Clientes" e "Situação Financeira". O que desejo fazer é, todos os nomes dos clientes localizados em B3 em diante sejam copiadas a partir de B3 da aba "Situação Financeira". O grande problema é que preciso que a tabela de "Situação Financeira" seja atualizada automaticamente assim que incluir mais algum cliente na primeira tabela.
#5784
olha só
para fazer oq vc quer pode usar formula , ou macro,
colar como vinculo nada mais é do que colar como formula
imagina que eu copiei a celula B3 da Plan1 e colei como vinculo em outra aba
o resultado seria esse
=Plan1!B3

vc pode simplesmente arrastar a celula até onde vc quer
#5787
Te explicar o que pretendo fazer e vc me da um conselho de como.
Preciso fazer uma planilha onde na primeira tabela tenha os dados do Cliente, na segunda tabela vai mostrar o nome de todos clientes da primeira tabela e mostrar a situação financeira, se estão devendo ou não.
Lembrando que quem vai mexer na planilha, não sabe nada de excel, então toda vez que for criar um novo cliente, o ideal é que ele apareça sozinho na segunda tabela.
#5788
como falei na primeira resposta,
sem uma planilha de exemplo com alguns dados "não precisa ser os originais, apenas do mesmo tipo"
e uma explicação mais detalhada fica dificil te ajudar
mesmo pq se é para colocar em uma e aparecer na outra a mesma coisa pq não ter uma só ?
#5793
E aí Rafa, bom dia!

O que o Edcronos sugeriu funciona, mas tem a desvantagem de que a planilha fica limitada a um número "x" de linhas, sendo necessário que "arraste" a fórmula manualmente para conter mais linhas... além disso, se sua planilha já tiver muitas fórmulas, ela pode ficar pesada.

Então estou te encaminhando uma segunda opção, com macro; vê se te atende também.
Você não está autorizado a ver ou baixar esse anexo.
#5794
Olá amigo,
É exatamente isso! Muito obrigado, mas não querendo abusar e já abusando, tentei ver aqui o macro e a formula usada para aprender, só que não consegui. Teria como explicar um pouco o que fez para chegar ao resultado? Por que vou ter mais planilhas que farei da mesma forma.
Desculpa a encheção de saco, mas estou querendo aprender um pouco sobre excel avançado.

Abraços
#5807
Rafa,

Então cara, é um pouco complicado explicar se você não é familiarizado com VBA, até porque cada um tem uma forma de programar (pois pensamos diferente).
Se você pretende aprender a programar, eu te recomendo o livro Programando Excel VBA Para Leigos; eu peguei com ele

De qualquer forma tentei descrever abaixo, mas não sei se você vai conseguir entender...

O código que fiz não foi incluído em um módulo, mas na primeira aba, dessa forma:

Imagem

O que mandei o código fazer é, basicamente, sempre que você alterar algo na primeira aba, o Excel verificará se a célula alterada encontra-se na coluna B e, caso sim, atualiza os dados da segunda aba.

Abaixo posto o código utilizado, com comentários. Vai ficar mais fácil de ler se você copiar e colar em um módulo qualquer do Excel (porque ele pinta os comentários de outra cor).
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range) 'Executar toda vez que algo mudar (change) na aba CLIENTE

'Observação: Variante "Target" já definida na declaração acima (ByVal Target As Range); refere-se à célula que foi alterada (change)

Dim cell As Range 'Determinar variante Range (intervalo

On Error GoTo Erro 'Se der erro, é que não funcionou; dar mensagem ao usuário

If Target.Column = 2 Then 'Se a coluna da célula alterada for igual a 2, então... (2 pois é a coluna B)
    Application.ScreenUpdating = False 'Desabilitar atualizações de tela (isso faz com que a macro fique uns... milésimos mais rápida nesse caso; coloquei mais por uma questão de costume
    
    If Target = "" Or Target.Row <> Sheets(2).Range("B1000000").End(xlUp).Row Then 'Executar se: a) a célula que foi alterada foi deletada, ou b) a linha da célula alterada for diferente da última linha preenchida na planilha "SITUAÇÃO FINANCEIRA"
        Sheets(2).ListObjects("Tabela5").Resize Range("$B$2:$N$" & Sheets(1).Range("B1000000").End(xlUp).Row & "") 'Se tudo isso for verdadeiro, redefinir o tamanho da tabela da aba SITUAÇÃO FINANCEIRA, para o seguinte endereço: B2:N? - sendo "?" igual à última linha da aba "CLIENTE".
        'Quando uma tabela é redimencionada, ela puxa as fórmulas para baixo automaticamente... então dá certo. Se não fosse uma tabela, eu teria que adicionar aqui o comando Range("x").filldown, que é o equivalente a você apertar CTRL + D no teclado
    End If
    Cells(Target.Offset(1, 0).Row, 2).Select 'Seleciona uma célula abaixo da célula alterada (só um detalhe)
        Application.ScreenUpdating = True 'Reabilitar atualizações de tela

End If
Exit Sub 'Sair da macro


Erro: 'Se veio para cá, é sinal que deu erro. Avisar usuário
MsgBox "Aviso: as fórmulas da aba " & Sheets(2).Name & " não puderam ser atualizada automaticamente!", vbExclamation

End Sub

#5821
eu não uso tabelas do excel então não estou familiarizado com elas
para falar a verdade nem pensei que ele estivesse usando

eu pensei em vba no inicio
mas como ele tem dificuldade até com formulas fiquei com receio

mas oq tem aparecido gente usando as tabelas do excel
#5868
Parkeless escreveu:Rafa,

Então cara, é um pouco complicado explicar se você não é familiarizado com VBA, até porque cada um tem uma forma de programar (pois pensamos diferente).
Se você pretende aprender a programar, eu te recomendo o livro Programando Excel VBA Para Leigos; eu peguei com ele

De qualquer forma tentei descrever abaixo, mas não sei se você vai conseguir entender...

O código que fiz não foi incluído em um módulo, mas na primeira aba, dessa forma:

Imagem

O que mandei o código fazer é, basicamente, sempre que você alterar algo na primeira aba, o Excel verificará se a célula alterada encontra-se na coluna B e, caso sim, atualiza os dados da segunda aba.

Abaixo posto o código utilizado, com comentários. Vai ficar mais fácil de ler se você copiar e colar em um módulo qualquer do Excel (porque ele pinta os comentários de outra cor).
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range) 'Executar toda vez que algo mudar (change) na aba CLIENTE

'Observação: Variante "Target" já definida na declaração acima (ByVal Target As Range); refere-se à célula que foi alterada (change)

Dim cell As Range 'Determinar variante Range (intervalo

On Error GoTo Erro 'Se der erro, é que não funcionou; dar mensagem ao usuário

If Target.Column = 2 Then 'Se a coluna da célula alterada for igual a 2, então... (2 pois é a coluna B)
    Application.ScreenUpdating = False 'Desabilitar atualizações de tela (isso faz com que a macro fique uns... milésimos mais rápida nesse caso; coloquei mais por uma questão de costume
    
    If Target = "" Or Target.Row <> Sheets(2).Range("B1000000").End(xlUp).Row Then 'Executar se: a) a célula que foi alterada foi deletada, ou b) a linha da célula alterada for diferente da última linha preenchida na planilha "SITUAÇÃO FINANCEIRA"
        Sheets(2).ListObjects("Tabela5").Resize Range("$B$2:$N$" & Sheets(1).Range("B1000000").End(xlUp).Row & "") 'Se tudo isso for verdadeiro, redefinir o tamanho da tabela da aba SITUAÇÃO FINANCEIRA, para o seguinte endereço: B2:N? - sendo "?" igual à última linha da aba "CLIENTE".
        'Quando uma tabela é redimencionada, ela puxa as fórmulas para baixo automaticamente... então dá certo. Se não fosse uma tabela, eu teria que adicionar aqui o comando Range("x").filldown, que é o equivalente a você apertar CTRL + D no teclado
    End If
    Cells(Target.Offset(1, 0).Row, 2).Select 'Seleciona uma célula abaixo da célula alterada (só um detalhe)
        Application.ScreenUpdating = True 'Reabilitar atualizações de tela

End If
Exit Sub 'Sair da macro


Erro: 'Se veio para cá, é sinal que deu erro. Avisar usuário
MsgBox "Aviso: as fórmulas da aba " & Sheets(2).Name & " não puderam ser atualizada automaticamente!", vbExclamation

End Sub

Me ajudou muito, vou da uma lida conforme sua dica sobre o assunto, até a poucos dias atrás, não tinha interesse na plataforma.

Forte abraço!
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord