Filtrando por moeda no Excel

1

Eu tenho essa situação no Microsoft Excel:

Ascélulassãoformatadasusando"Formatar células" e definindo a moeda manualmente para cada célula. Então, eles não são cordas simples. Gostaria de somar a filtragem por moeda. Isso é possível? Como?

Obrigado.

    
por lorenzo-s 13.02.2012 / 12:43

1 resposta

2

VBA

Como você usou a opção "format" para formatar essas células, a formatação não está contida no valor da célula, portanto, precisaremos definir uma função no VBA. Coloque isso ( fonte ) em um novo módulo:

Public Function sumFormats(rng As Range) As String
Application.Volatile
Dim cell As Range, dblDollar#, dblPound#
dblDollar = 0: dblPound = 0
For Each cell In rng
If Len(cell.Value) > 0 Then
If Left(cell.Text, 1) = "$" Then
dblDollar = dblDollar + cell.Value
Else
dblPound = dblPound + cell.Value
End If
End If
Next cell
sumFormats = "Sum of currency: $" & dblDollar & "; Sum of Pounds: " & ChrW(163) & dblPound
End Function

Em seguida, use a nova função =sumFormats(A1:A20) para as células que você quiser e você receberá as somas em uma linha. Se você precisar de subtotais em linhas diferentes, precisaremos modificar a saída da função.

Não-VBA

Se você não quiser mexer com o VBA, precisará de uma coluna auxiliar ao lado dos números. Nessa coluna, use a função =cell("format",A1) e isso retornará ,2 para £ e C2 para $. Em seguida, execute uma função =sumif para os subtotais.

=sumif(helpcolumncell,"C2",currencycell) para somar em dólares e substituir C2 por ,2 por libras. Você sempre pode ocultar a coluna de ajuda se não gostar dela. Nesse caso, assumiremos que seus dados estão na Coluna B e o ajudante é a Coluna C.

A             B    C

             Data  Format
              $1    =cell("format",B2) = C2
              £2    =cell("format",B3) = ,2  
              £3    =cell("format",B4) = ,2
              $4    =cell("format",B5) = C2 
sum dollar =sumif($C$2:$C$4,"C2",$B$2:$B$4) = 5

sum pound  =sumif($C$2:$C$4,",2",$B$2:$B$4) = 5

Em seguida, você precisará formatar essas células para obter o sinal de moeda ou adicionar uma =concatenate("$"&sumif(...)) function

    
por 13.02.2012 / 13:16