Usuário com melhor resposta
Dificuldade no Excel -

Pergunta
-
Pessoal,
Estou com um problema em uma planilha do excel.
Em uma Planilha(Plan1) eu tenho os dados cadastrais do Cliente
Na Planilha (Plan2) eu tenho todas as vendas da empresa.
Que o EXCEL busque os nomes dos clientes na Plan2 e coloque na Planilha 1
E distribua todas as vendas só que por mês (Janeiro, Fevereiro...) que estara na planilha 2
Para saber quanto cada cliente pagou por mês).
Alguem poderia me dizer se isso é possível, e como poderia?
deixei um exemplo em
http://www.4shared.com/file/DuNbKzpq/teste1.html
Preciso muito disso e estou completamente perdido.. Tentei a funçao Se a SOMAS - mas nao conseguir.- Movido Fabiosouza sábado, 21 de maio de 2011 16:43 fórum errado (De:Certificação Microsoft - Geral)
Respostas
-
Trabalhe em cima deste modelo:
Private Sub GeraRelatório() Dim ws As Worksheet, wsBanco As Worksheet Dim col As Collection Dim r As Long, lrow As Long, rLast As Long Dim rng As Range Dim c As Long Set wsBanco = Sheets("Banco") Set ws = Sheets.Add With wsBanco rLast = .Cells(.Rows.Count, "D").End(xlUp).Row 'sugiro criar uma rotina para automatizar quantas colunas terá o resultado: ws.Range("A1:J1") = Array("Devedor", "Doc1", "Valor1", "Data1", "Doc2", "Valor2", "Data2", "Doc3", "Valor3", "Data3") For lrow = 2 To rLast Set rng = ws.Columns("A").Find(.Cells(lrow, "D"), , , xlWhole) If rng Is Nothing Then r = ÚltimaLinha(ws, 1) + 1 ws.Cells(r, "A") = .Cells(lrow, "D") Else r = rng.Row End If c = -1 Do c = c + 3 Loop While ws.Cells(r, c) <> vbNullString ws.Cells(r, c) = .Cells(r, "C") ws.Cells(r, c + 1) = .Cells(r, "F") ws.Cells(r, c + 2) = .Cells(r, "G") Next lrow 'Reseta search ao padrão Set rng = .Range("A1").Find("", , , xlPart) End With End Sub Private Function ÚltimaLinha(ws As Worksheet, c As Long) As Long With ws ÚltimaLinha = .Cells(.Rows.Count, c).End(xlUp).Row End With End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Marcado como Resposta Richard Juhasz quinta-feira, 26 de maio de 2011 19:27
Todas as Respostas
-
-
Na célula K2, digite:
=SOMARPRODUTO(--(Plan1!$C$2:$C$1000=$C2);(Plan1!$D$2:$D$1000);--(MÊS(Plan1!$E$2:$E$1000)=MÊS(K$1)))
Copie e cole essa fórmula por todo intervalo desejado.
Para que tal fórmula funcione, K1=1/1/11, L1=1/2/11, M1=1/3/11 e assim por diante, até a coluna V. Se quiser, você pode mudar a formatação dessas células para mostrar somente o nome do mês, e não a data por completo.
Se não entendeu a fórmula, clique aqui: http://www.ambienteoffice.com.br/excel/SOMARPRODUTO/.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br -
BenzaDeus,
Muito obrigado pela sua resposta. Eu na minha extrema limitação conseguir, fazer da certo com a formula SOMASE(E.....
só que estou com um outro problema muito maior.. rs..
Puxei um livro caixa da empresa, de contas a receber. E em uma PLAN está o banco da dados e outra Plan, queria que puxasse da outra planilha, por linha, todas as vendas do determinado cliente, descriminando: NOTA, VALOR e Vencimento. Esses dados precisaria ficar na horizontal, pois usaria depois para criar um banco de dados no access, para envio de mala direta.
Será que isso é possível no excel? Eu to me batendo já tem dois dias..
Por que, não consigo diferenciar Venda1 - Venda2 - Pq a unica coisa em comum, é nome de cliente e um cód do cliente que toda a venda tbm possui, o cod do cliente.
Agradeço a ajuda.
http://www.4shared.com/file/ZlQkPzFr/Teste122.html
Modelo da tabela.
Abraço!
Segue o exemplo da tabela.
-
Bom, a solução mais simples que consigo enxergar para esse caso é o uso da tabela dinâmica.
Soluções alternativas envolveriam uso do VBA ou uso massivo de fórmulas auxiliares na Planilha Form.
Veja em anexo minha solução. Apenas apliquei o estilo de Tabela em seus dados e gerei uma Tabela Dinâmica.
Link: http://www.4shared.com/file/5pI3MlQW/Teste122__rev_1_.html
Felipe Costa Gualberto - http://www.ambienteoffice.com.br -
BenzaDEUS,
A tabela dinamica não consegue me passar as informações que preciso, somente em uma linha.
EX: Linha1 Cliente, end, cidade..... NOTA!,Valor1, Venc1, Nota2, Valor2, Venc2........
Linha2 Cliente B, end, cidade..... NOTA!,Valor1, Venc1, Nota2, Valor2, Venc2........
isso seria para colocar depois no Access e fazer a mala direta.
Vc disse que no VBA conseguiria? Poderia me dizer como eu faço?
*Será que existe maneiras de na tabela do fortamo "banco" conseguiria no WORD, pedir a filtragem por cliente, ou seja, Bucando todas os lançamentos do banco de dados daquele determinado cliente, e inserir na tabela do proprio word, direto na Mala Direta?
Agradeço a AJUDA e atenção, tem sido de grande aproveitamento e auxilio.
Abraços!!
Luis Girardi
-
Trabalhe em cima deste modelo:
Private Sub GeraRelatório() Dim ws As Worksheet, wsBanco As Worksheet Dim col As Collection Dim r As Long, lrow As Long, rLast As Long Dim rng As Range Dim c As Long Set wsBanco = Sheets("Banco") Set ws = Sheets.Add With wsBanco rLast = .Cells(.Rows.Count, "D").End(xlUp).Row 'sugiro criar uma rotina para automatizar quantas colunas terá o resultado: ws.Range("A1:J1") = Array("Devedor", "Doc1", "Valor1", "Data1", "Doc2", "Valor2", "Data2", "Doc3", "Valor3", "Data3") For lrow = 2 To rLast Set rng = ws.Columns("A").Find(.Cells(lrow, "D"), , , xlWhole) If rng Is Nothing Then r = ÚltimaLinha(ws, 1) + 1 ws.Cells(r, "A") = .Cells(lrow, "D") Else r = rng.Row End If c = -1 Do c = c + 3 Loop While ws.Cells(r, c) <> vbNullString ws.Cells(r, c) = .Cells(r, "C") ws.Cells(r, c + 1) = .Cells(r, "F") ws.Cells(r, c + 2) = .Cells(r, "G") Next lrow 'Reseta search ao padrão Set rng = .Range("A1").Find("", , , xlPart) End With End Sub Private Function ÚltimaLinha(ws As Worksheet, c As Long) As Long With ws ÚltimaLinha = .Cells(.Rows.Count, c).End(xlUp).Row End With End Function
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Marcado como Resposta Richard Juhasz quinta-feira, 26 de maio de 2011 19:27
-
Fabio Costa,
O cód está funcionando. Rodando certinho. O problema é que o resultado não está saindo certo.
Quando executo o código, ele cria uma nova planilha, coloca os nomes dos clientes no lugar certo, mas quando eu vou verificar as notas estão repetindo o mesmo valor e algumas estão saindo com o valor de outro cliente.
Como poderia consertar isso?
Obrigado pela atenção e ajuda.
-
Nos teste que fiz, a macro rodou corretamente. Uma hipótese para isto estar acontecendo é o fato da sua estrutura de dados estar diferente da que tenho.
Sugiro você disponibilizar uma parte do seu modelo de dados para que eu possa fazer uns testes e adequar o código.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br