Jump to content
rsacramento

Obter valor para uma célula

Recommended Posts

rsacramento

passo a explicar  :P

estou indeciso entre usar java ou excel para fazer uma pequena aplicação

um dos pontos será o seguinte:

imaginem que tenho várias linhas

A 200

A 199

B 2,7

A 202

C 45

B 2,8

C 44,3

será que consigo ter o a soma de todos os "A" ou "B" ou "C"?

nesse caso como faria?

obrigado antecipadamente pela resposta

Share this post


Link to post
Share on other sites
jmaocubo

Viva....

Estou a admitir que na coluna A tens a letra de identificação (A, B, C, D, ....) e na coluna B os resultados que queres somar.

Folha1: Origem

Folha2: destino da soma

Sub somar()

Application.ScreenUpdating = False

Dim r As Long


With Folha1

   
    r = .Cells(Rows.Count, 1).End(xlUp).Row ' Para a coluna A
    
    
    
     
    ' soma
    Folha2.Range("B2").Value = WorksheetFunction.SumIf(.Range("A2:A" & r), "A", .Range("B2:B" & r)) ' Para a letra A
    Folha2.Range("B3").Value = WorksheetFunction.SumIf(.Range("A2:A" & r), "B", .Range("B2:B" & r)) ' Para a letra B
    '.... para as restantes letras
    

End With

Application.ScreenUpdating = True

End Sub

Share this post


Link to post
Share on other sites
rsacramento

obrigado; entretanto eu tinha já usado isto:

=SOMA.SE($A$2:$A$8;B11;$B$2:$B$8)

e também funcionou  :P

já agora: como é que faço para que aquilo que está numa célula na folha2 apareça numa determinada célula da folha1?

obrigado

Share this post


Link to post
Share on other sites
jmaocubo
já agora: como é que faço para que aquilo que está numa célula na folha2 apareça numa determinada célula da folha1?

Não sei se entendi muito bem o que pretendes, mas se estás a falar em relação ao código VBA podes alterar para:

Folha1.Range("N2").Value = WorksheetFunction.SumIf(.Range("A2:A" & r), "A", .Range("B2:B" & r)) ' Para a letra A

No caso da célula da folha1 que pretendes seja a N2

Share this post


Link to post
Share on other sites
rsacramento

Não sei se entendi muito bem o que pretendes, mas se estás a falar em relação ao código VBA podes alterar para:

Folha1.Range("N2").Value = WorksheetFunction.SumIf(.Range("A2:A" & r), "A", .Range("B2:B" & r)) ' Para a letra A

No caso da célula da folha1 que pretendes seja a N2

realmente não me expliqwuei convenientemente

imaginemos que tenho, na folha1, com col A e col B:

A 14

B 27

o que pretendo é que, em qualquer linha da folha2, se o valor de qualquer célula da coluna A for A, então na coluna B escreve 14, e se for B, escreve 17

espero ter sido mais claro agora

Share this post


Link to post
Share on other sites
jmaocubo

Viva rsacramento

Vamos ver se eu entendi bem o que pretendes....

Sub aa()


Application.ScreenUpdating = False

Dim r As Long


With Folha2

   
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range("B1:B" & r).Formula = "=IF(Folha2!RC[-1]=""A"",Folha1!R1C2,IF(Folha2!RC[-1]=""B"",Folha1!R2C2,""""))"


End With

Application.ScreenUpdating = True

End Sub

Este código analisa todas as células na coluna A na folha 2 que estão preenchidas e se preenchidas verifica se têm a letra A ou a letra B... depois vai à folha 1 e de acordo com o valor da célula B1 (para a letra A) e B2 (para a letra :D que lá estiver...

Espero que seja o que pretendias

cumprimentos, :thumbsup:

Share this post


Link to post
Share on other sites
rsacramento

😳

perdoa-me a nabice, mas não estou a conseguir adaptar ao meu caso, já que não vejo onde usas a(s) coluna(s) "B"...

Share this post


Link to post
Share on other sites
rsacramento

Penso que deverias mostrar seu ficheiro...

como é que ponho aqui o meu excel?

Share this post


Link to post
Share on other sites
rsacramento

o upload para esse site já está feito; o ficheiro chama-se duvida.xls

a questão é a seguinte: na folha 1 tenho duas colunas; o que pretendo é que logo que insira um valor na coluna "VALOR" da folha1, esse valor apareça automaticamente escrito na coluna "VALOR" da folha2, na linha respectiva

por exemplo: ao inserir "1,2" para "nome1", esse valor apareça automaticamente na folha2 na célula I10, neste caso

espero ter sido claro

Share this post


Link to post
Share on other sites
rsacramento

Olá rsacramento

Esqueces-te o link de download do teu ficheiro....

Segue um exemplo...

http://www.2shared.com/file/XTyJd2MG/PAP_Duvida.html

obrigado!

esse código funciona, mas não serve para o meu caso, porque a letra "A" e a "B" não podem ser pré-definidas: na tua coluna "A" tanto pode vir a ser escrito:  Volatility Equities como BlackRock Gold Trust blabla, de maneira que continuo sem saber como fazer  :thumbsup:

além disso essa coluna "A" terá um número indeterminado de linhas..

Share this post


Link to post
Share on other sites
jmaocubo

Viva...

Tens mesmo que colocar aqui um exemplo.... da outra vez fizeste o upload do ficheiro, mas não colocaste aqui o link para se descarregar....

Share this post


Link to post
Share on other sites
joseA

Queres que apenas os valores apareçam ou queres a soma, se for soma sem VBA segue um exemplo com função:

=SOMARPRODUTO((Folha1!$G$9:$G$11=Folha2!G10)*Folha1!$H$9:$H$11)

Share this post


Link to post
Share on other sites
rsacramento

Queres que apenas os valores apareçam ou queres a soma, se for soma sem VBA segue um exemplo com função:

=SOMARPRODUTO((Folha1!$G$9:$G$11=Folha2!G10)*Folha1!$H$9:$H$11)

o que pretendo é simplesmente o valor: que o valor que introduzo na folha1 apareça automaticamente na respectiva célula da folha2

Share this post


Link to post
Share on other sites
rsacramento

possivelmente seria melhor código, por exemplo no evento deactivate... digo eu que não percebo disto

Share this post


Link to post
Share on other sites
joseA

o que pretendo é simplesmente o valor: que o valor que introduzo na folha1 apareça automaticamente na respectiva célula da folha2

Penso que deverias editar o título do tópico: Somar se o nome noutra linha é idêntico

Teste esse procedimento, que deverás inserir no evento activate da folha:

Private Sub Worksheet_Activate()
Dim Qtde As Long
Qtde = Plan1.[G8].CurrentRegion.Rows.Count + 8

Plan2.Range("G9:G" & Qtde).Value = Plan1.Range("G8:G" & Qtde).Value
Plan2.Range("I9:I" & Qtde).Value = Plan1.Range("H8:H" & Qtde).Value

End Sub

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.