Oi Jairo!
Muito obrigada pela explicação. Vou tentar seguir ela direitinho.
Valeu!
Até mais,
Milena.
On Wed, 9 Nov 2005 18:48:30 -0300, Jairo Ferreira Alves wrote
> Oi Milena,
>
> A solução para o seu caso não é muito trivial, mas tem jeito.
>
> É um processo um pouco longo para explicar, logo, quem não tiver
> interesse nesse problema, pode parar de ler por aqui e apagar o e-mail.
>
> Como a lista não permite anexos, vou ter que colocar o passo-a-passo
> do exemplo e da solução que eu consegui por aqui, o que vair tornar
> o texto bem grande, mas para os que resistiram até aqui, vamos lá.
>
> Fiz um exemplo para testar com as seguintes características:
>
> Na coluna A, iniciando em A1, tenho os seguintes dados:
>
> FaixaIni
> 0,00
> 500,01
> 1.000,01
> 2.000,01
> 3.000,01
> 4.000,01
> 5.000,01
> 6.000,01
> 7.000,01
> 8.000,01
> 9.000,01
>
> Na coluna B, iniciando em B1, tenho os seguintes dados:
>
> FaixaFim
> 500,00
> 1.000,00
> 2.000,00
> 3.000,00
> 4.000,00
> 5.000,00
> 6.000,00
> 7.000,00
> 8.000,00
> 9.000,00
> 50.000,00
>
> Estas são as colunas de parâmetros que vou usar para definir se um
funcionário
> cai em uma faixa ou em outra.
>
> Em uma coluna qualquer, no meu exemplo a D, iniciando em D1, tenho
> os nomes de trinta funcionários (fictícios). Essa coluna não será
> utilizada nos cálculos, mas serve para fins didáticos.
>
> Funcionário
> Jose
> Rosler
> Nubia
> Schiezaro
> Guedes
> Manoel
> Marinheiro
> Porfirio
> Coelho
> Grellet
> Gazzoli
> Gorito
> Guerta
> Harumi
> Haseyama
> Jimenez
> Machado
> Mallet
> Mesquita
> Mitie
> Maria
> Moreira
> Naomi
> Nascimento
> Pires
> Pozzi
> Raquel
> Scarpim
> Xavier
> Garcia
>
> Na coluna E, à partir de E1 tenho os salários:
>
> Salário Base
> 3.511,00
> 1.796,00
> 8.003,00
> 7.972,00
> 2.461,00
> 827,00
> 5.670,00
> 6.481,00
> 6.043,00
> 5.831,00
> 3.159,00
> 6.271,00
> 6.629,00
> 8.008,00
> 6.420,00
> 1.339,00
> 3.195,00
> 7.014,00
> 10.214,00
> 9.709,00
> 6.263,00
> 3.028,00
> 1.298,00
> 4.740,00
> 3.325,00
> 8.335,00
> 2.030,00
> 217,00
> 1.978,00
> 1.797,00
>
> Agora começa a parte complicada:
>
> Para fazer os cálculos do número de funcionários que caem em uma determinada
> faixa salarial, temos que usar uma fórmula meio esquisita baseada na
> função =Soma() com características de fórmulas de matriz.
>
> Mas que *&#$@ esse cara está falando???
>
> Calma, na ajuda do OpenOffice.org dá para tentar entender um pouco
> sobre isso, mas vou ver se consigo explicar um pouco mais no final
> desse documento.
>
> Na coluna G, iniciando em G1, coloque, somente para ficar mais
> bonito, as faixas salariais, usando as fórmulas abaixo:
>
> Faixas Salariais
> =TEXTO(A2;"#.##0,00") & " -> " & TEXTO(B2;"#.##0,00")
> =TEXTO(A3;"#.##0,00") & " -> " & TEXTO(B3;"#.##0,00")
> =TEXTO(A4;"#.##0,00") & " -> " & TEXTO(B4;"#.##0,00")
> =TEXTO(A5;"#.##0,00") & " -> " & TEXTO(B5;"#.##0,00")
> =TEXTO(A6;"#.##0,00") & " -> " & TEXTO(B6;"#.##0,00")
> =TEXTO(A7;"#.##0,00") & " -> " & TEXTO(B7;"#.##0,00")
> =TEXTO(A8;"#.##0,00") & " -> " & TEXTO(B8;"#.##0,00")
> =TEXTO(A9;"#.##0,00") & " -> " & TEXTO(B9;"#.##0,00")
> =TEXTO(A10;"#.##0,00") & " -> " & TEXTO(B10;"#.##0,00")
> =TEXTO(A11;"#.##0,00") & " -> " & TEXTO(B11;"#.##0,00")
> =TEXTO(A12;"#.##0,00") & " -> " & TEXTO(B12;"#.##0,00")
> Totais
>
> Essas fórmulas irão pegar o texto das células das colunas A e B e
> exibí-los como mostrado abaixo:
>
> Faixas Salariais
> 0,00 -> 500,00
> 500,01 -> 1.000,00
> 1.000,01 -> 2.000,00
> 2.000,01 -> 3.000,00
> 3.000,01 -> 4.000,00
> 4.000,01 -> 5.000,00
> 5.000,01 -> 6.000,00
> 6.000,01 -> 7.000,00
> 7.000,01 -> 8.000,00
> 8.000,01 -> 9.000,00
> 9.000,01 -> 50.000,00
> Totais
>
> Finalmente estamos chegando aos cálculos que interessam. Na coluna H,
> iniciando em H1, coloque
>
> Número de Funcionários
>
> Em H2, coloque:
>
> =SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2))
>
> Obs.: Para colocar essas fórmulas, você deve copiar o texto à partir
> do = até o último ). Vá na célula H2 e pressione F2 para
> entrar no modo de edição de fórmulas e cole o conteúdo copiado na
> memória, por exemplo:
>
> Para aceitar a fórmula, pressione CTRL + SHIFT + ENTER, pois assim o
> Calc vai entender que você está usando uma fórmula de Matriz
> (indicados pelos sinais de { e }no início e final da fórmula).
>
> Copie o conteúdo da célula H2, para H3 até H12 e na célula H13,
> coloque
>
> =SOMA(H2:H12)
>
> As fórmulas devem ficar como mostrado abaixo:
>
> Número de Funcionários
> {=SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2))}
> {=SOMA(($E$2:$E$31>=$A3) * ($E$2:$E$31<=$B3))}
> {=SOMA(($E$2:$E$31>=$A4) * ($E$2:$E$31<=$B4))}
> {=SOMA(($E$2:$E$31>=$A5) * ($E$2:$E$31<=$B5))}
> {=SOMA(($E$2:$E$31>=$A6) * ($E$2:$E$31<=$B6))}
> {=SOMA(($E$2:$E$31>=$A7) * ($E$2:$E$31<=$B7))}
> {=SOMA(($E$2:$E$31>=$A8) * ($E$2:$E$31<=$B8))}
> {=SOMA(($E$2:$E$31>=$A9) * ($E$2:$E$31<=$B9))}
> {=SOMA(($E$2:$E$31>=$A10) * ($E$2:$E$31<=$B10))}
> {=SOMA(($E$2:$E$31>=$A11) * ($E$2:$E$31<=$B11))}
> {=SOMA(($E$2:$E$31>=$A12) * ($E$2:$E$31<=$B12))}
> =SOMA(H2:H12)
>
> O resultado da operação deve ficar assim:
>
> Número de Funcionários
> 1
> 1
> 5
> 2
> 5
> 1
> 2
> 6
> 2
> 3
> 2
> 30
>
> Isso já resolveria o seu problema, mas já que estamos com a mão na
> massa, podemos fazer o cálculo da Soma dos Salários por faixa
> salarial. Para isso, vá na célula I1 e coloque:
>
> Acumulado na Faixa Salarial
>
> Em I2, coloque a fórmula:
>
> =SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2) * ($E$2:$E$31))
>
> Não custa lembrar que, para colocar essas fórmulas, você deve copiar
> o texto à partir do = até o último ). Vá na célula I2 e
> pressione F2 para entrar no modo de edição de fórmulas e cole o
> conteúdo copiado na memória, por exemplo:
>
> Para aceitar a fórmula, pressione CTRL + SHIFT + ENTER, pois assim o
> Calc vai entender que você está usando uma fórmula de Matriz
> (indicados pelos sinais de { e }no início e final da fórmula).
>
> Copie o conteúdo da célula I2, para I3 até I12 e na célula I13,
> coloque
>
> =SOMA(I2:I12)
>
> As fórmulas devem ficar como mostrado abaixo:
>
> Acumulado na Faixa Salarial
> {=SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A3) * ($E$2:$E$31<=$B3) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A4) * ($E$2:$E$31<=$B4) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A5) * ($E$2:$E$31<=$B5) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A6) * ($E$2:$E$31<=$B6) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A7) * ($E$2:$E$31<=$B7) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A8) * ($E$2:$E$31<=$B8) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A9) * ($E$2:$E$31<=$B9) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A10) * ($E$2:$E$31<=$B10) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A11) * ($E$2:$E$31<=$B11) * ($E$2:$E$31))}
> {=SOMA(($E$2:$E$31>=$A12) * ($E$2:$E$31<=$B12) * ($E$2:$E$31))}
> =SOMA(I2:I12)
>
> O resultado da operação deve ficar assim:
>
> Acumulado na Faixa Salarial
> 217,00
> 827,00
> 8.208,00
> 4.491,00
> 16.218,00
> 4.740,00
> 11.501,00
> 38.107,00
> 14.986,00
> 24.346,00
> 19.923,00
> 143.564,00
>
> Quer gerar um gráfico? Ficou fácil não?
>
> Mas afinal, o que está sendo feito para realizar esses cálculos???
>
> Bom, vou tentar explicar, baseado no que eu entendi à partir da
> ajuda do OpenOffice.org.
>
> Para o cálculo do número de funcionários por faixa salarial, usamos
> a seguinte fórmula:
>
> {=SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2))}
>
> Essa fórmula está gerando uma matriz interna no Calc com os
> resultados de falso e verdadeiro, ou mais precisamente, 0's e 1's,
> para cada linha avaliada. É mais ou menos assim:
>
> O trecho da fórmula:
>
> ($E$2:$E$31>=$A2)
>
> gera uma matriz interna que tem 1 se o valor da linha E2 for maior
> do que o valor de A2. No nosso exemplo, E2 = 3.511,00 e A2 = 0,00,
> logo o valor retornado para a matriz é 1.
>
> O trecho da fórmula:
>
> ($E$2:$E$31<=$B2)
>
> gera outra matriz interna que tem 1 se o valor da linha E2 for menor
> do que o valor de B2. No nosso exemplo, E2 = 3.511,00 e B2 = 500,00,
> logo o valor retornado para a matriz é 0.
>
> Esse processo é repetido para cada linha e no final existem duas matrizes.
>
> Quando usamos:
>
> ($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2)
>
> Estamos fazendo uma multiplicação dessas duas matrizes, o que vai
> gerar uma terceira matriz com os resultados das multiplicações de
> cada linha da matriz 1 pela linha equivalente na matriz 2. No nosso
> exemplo, temos 1 do primeiro trecho e 0 do segundo trecho, logo
> o resultado da primeira linha da terceira matriz é 0'.
>
> Na célula E29 temos um valor de 217,00, logo, para o primeiro trecho
> da fórmula, o resultado é 1, pois 217 é maior do que 0 e para o
> segundo trecho temos o resultado igual a 1 também, pois 217 é
> menor do que 500.
>
> Assim, quando fazemos a multiplicação, a linha 28 da terceira matriz
> terá um resultado igual a 1.
>
> Portanto, quando temos a terceira matriz toda montada, ela terá
> linhas com 0 e linhas com 1. Parece que agora ficou fácil. Ao
> usar a função Soma(), iremos somar todas a linhas da terceira
> matriz. Como só temos 0's e 1's, teremos o número exato de
> funcionários que estão dentro da faixa salarial em análise.
>
> {=SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2))}
>
> Para o nosso exemplo, só temos 1 funcionário dentro dessa faixa
> salarial (0 -> 500).
>
> Entendido até aqui?
>
> Espero que sim, pois agora vem uma parte um pouco mais complicada.
>
> E para calcularmos o Acumulado por Faixa Salarial?
>
> Bom, você deve ter notado que a fórmula é um pouco maior:
>
> {=SOMA(($E$2:$E$31>=$A2) * ($E$2:$E$31<=$B2) * ($E$2:$E$31))}
>
> Existe um terceiro componente que vai multiplicar o resultado da
> primeira e da segunda matriz, por uma matriz com os valores
> salariais de cada funcionário. Algo mais ou menos assim, conforme o
> exemplo anterior (no caso da célula E29): Primeiro trecho = 1
> [matriz 1] Segundo trecho = 1 [matriz 2] Resultado da
> multiplicação na matriz = 1 [matriz 3] Salário = 217 [matriz salário]
>
> Resultado da multiplicação da linha 28 da [matriz 3] pelo valor da
> linha 28 da [matriz salário] = 1 * 217 = 217 [Matriz 5]
>
> Quando aplicamos a função Soma(), iremos somar todas as linhas da
> [matriz 5], o que dará o resultado do Acumulado por Faixa Salarial.
> Como nesse caso só temos um funcionário com salário abaixo de R$ 500,
> 00, o Acumulado será R$ 217,00.
>
> Conclusão (Finalmente!!!!)
>
> Essa é uma forma de fazer cálculos de Sumariação (também conhecido como
> Sumarização, apesar de estar gramaticalmente errado), ou separação
> por classes.
>
> É uma análise bastante interessante e acho que valeria à pena se o
> pessoal do OpenOffice.org conseguisse criar uma fórmula que já
> fizesse isso automaticamente. Fica a dica.
>
> Bom, espero que esse pequeno curso possa ajudar a resolver o seu problema.
>
> Qualquer dúvida, por favor entre em contato.
>
> Atenciosamente,
>
> Jairo Ferreira Alves
> Analista de Suporte
> Núcleo de Informática e Modernização - NUINF
> Secretaria da Saúde do Estado do Ceará - SESA
> (85) 3101-5262 / (85) 3101-5226 (fax)
>
> Citando MILENA C DA SILVA DE CAMARGO <[EMAIL PROTECTED]>:
>
> > Prezados colegas,
> >
> > Tenho uma planilha com informações da folha de pagamento com dados como:
nome
> >
> > dos funcionários, departamento, salário base, data de admissão, etc...
> > Os funcionários possuem os mais diferenciados salários.
> > Preciso montar uma tabela assim:
> >
> > Faixa salarial Numero de funcionários
> > 0 a 500,00
> > 500,01 a 1000,00
> > 1000,01 a 2000,00
> > 2000,01 a 3000,00
> > 3000,01 a 4000,00
> > ...
> > maior que 10000,00
> >
> >
> > Tentei usar a função cont.se
> > Consegui fazer para a faixa de 0 a 500,00 mas para os demais não tive
> > sucesso, pois tem que controlar a faixa de valores.
> > Alguém pode me ajudar?
> > Usamos o OOo 1.1.2, Windows 98 SE.
> >
> > Desde já agradeço,
> > Milena.
> >
> > =========================================
> > Milena Carvalho S. Camargo
> > E-mail: [EMAIL PROTECTED]
> > Fone comercial: (19) 3124-1648
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------
> Esta mensagem foi enviada utilizando o serviço de correio
> da Secretaria da Saude do Estado do Ceara
=========================================
Milena Carvalho S. Camargo
E-mail: [EMAIL PROTECTED]
Fone comercial: (19) 3124-1648
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]