lupum Posted February 3, 2014 at 04:53 PM Report #543712 Posted February 3, 2014 at 04:53 PM (edited) Boa tarde, Já andei às voltas e não consigo chegar a uma solução para o meu problema. Passo a explicar: Ficheiro Excel, Coluna A - Coluna B PORTUGAL - $25 ESPANHA - 25€ EUA - 356,55€ FRANÇA - $256 ESPANHA - 36€ etc etc Posto isto, como é que numa outra célula consigo Somar, por exemplo valores para Espanha em Euros e numa outra célula Valores para Espanha, em Dólares? Obrigado e cumprimentos Edited February 3, 2014 at 04:57 PM by lupum
nelsonr Posted February 3, 2014 at 05:06 PM Report #543715 Posted February 3, 2014 at 05:06 PM Provavelmente tens de ter ai uma celula com a moeda e respectivo cambio para o euro
lupum Posted February 3, 2014 at 05:08 PM Author Report #543716 Posted February 3, 2014 at 05:08 PM Provavelmente tens de ter ai uma celula com a moeda e respectivo cambio para o euro Câmbio? Não... Imagina que Portugal tem umas 50 linhas com valores formatados em Euros e umas 60 com valores formatados em Dólares. Quero "apenas" que numa célula me seja apresentada a soma dos valores em Euros para Portugal e noutra célula que me seja apresentada a soma dos valores em dólares para Portugal.
nelsonr Posted February 3, 2014 at 05:26 PM Report #543721 Posted February 3, 2014 at 05:26 PM Ah ok, tinha percebido que querias somar os valores e mostrar em euros.
nelsonr Posted February 3, 2014 at 05:59 PM Report #543734 Posted February 3, 2014 at 05:59 PM Bem, andei a inventar um bocado Sub Button1_Click() Dim Linha As Integer Dim TotalRegistos As Integer Dim Procura As Integer Dim Encontrou As Boolean Dim Pais As String Dim Valor As Double Dim Formato As String Dim ResultadoPais() As String Dim ResultadoValor() As Double Dim ResultadoFormato() As String Dim ColunaPais As String Dim ColunaValor As String Dim PrimeiraLinha As Integer Dim ColunaResultadoPais As String Dim ColunaResultadoValor As String Dim PrimeiraLinhaResultado As Integer ' Origem ColunaPais = "A" ColunaValor = "B" PrimeiraLinha = 2 ' Resultado ColunaResultadoPais = "E" ColunaResultadoValor = "F" PrimeiraLinhaResultado = 2 TotalRegistos = 0 Linha = PrimeiraLinha Do ' Pais = Worksheets("Sheet1").Range("$" & ColunaPais & "$" & Linha).Value Formato = Worksheets("Sheet1").Range("$" & ColunaValor & "$" & Linha).NumberFormat Valor = Worksheets("Sheet1").Range("$" & ColunaValor & "$" & Linha).Value ' If Pais = "" Then Exit Do End If Encontrou = False For Procura = 1 To TotalRegistos If ResultadoPais(Procura) = Pais And ResultadoFormato(Procura) = Formato Then ResultadoValor(Procura) = ResultadoValor(Procura) + Valor Encontrou = True Exit For End If Next If Not Encontrou Then TotalRegistos = TotalRegistos + 1 ReDim Preserve ResultadoPais(TotalRegistos) ReDim Preserve ResultadoValor(TotalRegistos) ReDim Preserve ResultadoFormato(TotalRegistos) ' ResultadoPais(TotalRegistos) = Pais ResultadoValor(TotalRegistos) = Valor ResultadoFormato(TotalRegistos) = Formato End If ' Linha = Linha + 1 Loop ' If TotalRegistos > 0 Then For Procura = 1 To TotalRegistos ' Worksheets("Sheet1").Range("$" & ColunaResultadoPais & "$" & (PrimeiraLinhaResultado + Procura - 1)).Value = ResultadoPais(Procura) ' Worksheets("Sheet1").Range("$" & ColunaResultadoValor & "$" & (PrimeiraLinhaResultado + Procura - 1)).NumberFormat = ResultadoFormato(Procura) Worksheets("Sheet1").Range("$" & ColunaResultadoValor & "$" & (PrimeiraLinhaResultado + Procura - 1)).Value = ResultadoValor(Procura) Next End If End Sub 1 Report
lupum Posted February 3, 2014 at 10:09 PM Author Report #543787 Posted February 3, 2014 at 10:09 PM Bemmmmmm, vou ter de testar isso no trabalho amanhã, mas... A ideia era algo via formulas... Eu a olhar para isto só apanho uns 50% do que está aí LOL Mesmo assim, MUITO OBRIGADO pelo teu esforço e rápida resposta.
lupum Posted February 4, 2014 at 08:51 AM Author Report #543854 Posted February 4, 2014 at 08:51 AM Hummm Não está a funcionar correctamente. Basicamente está a copiar os valores e não a fazer somas de valores separados por países e dentro dos países, por moeda. Há alguma outra maneira, via formula, por exemplo?
lupum Posted February 4, 2014 at 09:23 AM Author Report #543858 Posted February 4, 2014 at 09:23 AM Haaa haaaa Perdão, afinal parece estar a funcionar. Foi apenas um erro meu. Esta será uma das soluções, sim. Obrigado, mas por curiosidade, há alguma maneira de colocara a funcionar, exclusivamente por fórmulas? Obrigado pelo enorme esforço nelsonr.
lupum Posted February 4, 2014 at 10:38 AM Author Report #543866 Posted February 4, 2014 at 10:38 AM Encontrei aqui um bom pedaço de código que faz QUASE o que preciso, mas precisava de uma ajuda... Public Function sumFormats(rng As Range) As String Application.Volatile Dim cell As Range, dblDollar#, dblEuro# dblDollar = 0: dblEuro = 0 For Each cell In rng If Len(cell.Value) > 0 Then If Left(cell.Text, 1) = "$" Then dblDollar = dblDollar + cell.Value Else dblEuro = dblEuro + cell.Value End If End If Next cell sumFormats = "Sum of currency: $" & dblDollar & "; Sum of Euro: " & ChrW(8364) & dblEuro End Function Ele basicamente cria uma formula para somar os valores separados dentro de um range. É possível alterar, por forma a que: A1 A2 A3 PORTUGAL $3560 2522€ ...... E por aí em diante? Ou seja, na A1 já estão os Países (são apenas uns 5/6 países) e à frente que me apresentasse os tais valores...
lupum Posted February 4, 2014 at 09:27 PM Author Report #543972 Posted February 4, 2014 at 09:27 PM Bem, andei a inventar um bocado Sub Button1_Click() Dim Linha As Integer Dim TotalRegistos As Integer Dim Procura As Integer Dim Encontrou As Boolean Dim Pais As String Dim Valor As Double Dim Formato As String Dim ResultadoPais() As String Dim ResultadoValor() As Double Dim ResultadoFormato() As String Dim ColunaPais As String Dim ColunaValor As String Dim PrimeiraLinha As Integer Dim ColunaResultadoPais As String Dim ColunaResultadoValor As String Dim PrimeiraLinhaResultado As Integer ' Origem ColunaPais = "A" ColunaValor = "B" PrimeiraLinha = 2 ' Resultado ColunaResultadoPais = "E" ColunaResultadoValor = "F" PrimeiraLinhaResultado = 2 TotalRegistos = 0 Linha = PrimeiraLinha Do ' Pais = Worksheets("Sheet1").Range("$" & ColunaPais & "$" & Linha).Value Formato = Worksheets("Sheet1").Range("$" & ColunaValor & "$" & Linha).NumberFormat Valor = Worksheets("Sheet1").Range("$" & ColunaValor & "$" & Linha).Value ' If Pais = "" Then Exit Do End If Encontrou = False For Procura = 1 To TotalRegistos If ResultadoPais(Procura) = Pais And ResultadoFormato(Procura) = Formato Then ResultadoValor(Procura) = ResultadoValor(Procura) + Valor Encontrou = True Exit For End If Next If Not Encontrou Then TotalRegistos = TotalRegistos + 1 ReDim Preserve ResultadoPais(TotalRegistos) ReDim Preserve ResultadoValor(TotalRegistos) ReDim Preserve ResultadoFormato(TotalRegistos) ' ResultadoPais(TotalRegistos) = Pais ResultadoValor(TotalRegistos) = Valor ResultadoFormato(TotalRegistos) = Formato End If ' Linha = Linha + 1 Loop ' If TotalRegistos > 0 Then For Procura = 1 To TotalRegistos ' Worksheets("Sheet1").Range("$" & ColunaResultadoPais & "$" & (PrimeiraLinhaResultado + Procura - 1)).Value = ResultadoPais(Procura) ' Worksheets("Sheet1").Range("$" & ColunaResultadoValor & "$" & (PrimeiraLinhaResultado + Procura - 1)).NumberFormat = ResultadoFormato(Procura) Worksheets("Sheet1").Range("$" & ColunaResultadoValor & "$" & (PrimeiraLinhaResultado + Procura - 1)).Value = ResultadoValor(Procura) Next End If End Sub Mas pegando neste teu exemplo... Ele vai colar os valores numa determinada coluna... Se eu já tiver definida a célula, por exemplo B4 - ESPANHA, B5 - PORTUGAL, etc... Como colar as somas no local correcto? Por exemplo, Soma Dólares da Espanha - C4, Soma Euros da Espanha - D4, etc... Se der para mim é óptimo... Andei a tentar inventar, mas...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now