Page 1 of 1
Somar variaveis Iguais
Posted: 18 Aug 2022, 11:41
by thalesduarte
Olá, boa Tarde.
Como faço para somar VARIAS variaveis iguais?
Estou com um script que está gerando Nomes e textos, por exemplo.
Gerando os seguintes dados.
Thales, 25
Ricardo, 12
Thales, 12
Ricardo, 27
Giovani, 12
Giovani, 62
Tendo em vista que o código gera diversos nomes.
Cerca de 500 pessoas.
Como posso fazer isso de forma automáticaw
Como posso fazer para somar os valores com os nomes iguais.
Por Exemplo:
Resultado Total de:
Thales = 37
Ricardo = 39
Giovani = 74
Não consegui ainda achar uma forma de escrever isso no AHK.
Poderiam me dar um help nessa situação?
Seria semelhante a formula SOMASES() DO EXCEL
Grato!
Re: Somar variaveis Iguais
Posted: 18 Aug 2022, 12:13
by flyingDman
Bom dia. O que dizer disso?
Code: Select all
var =
(
Thales, 25
Ricardo, 12
Thales, 12
Ricardo, 27
Giovani, 12
Giovani, 62
)
arr := {}
for x,y in strsplit(var,"`n")
{
nm := strsplit(y,", ").1, cnt := strsplit(y,", ").2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox % lst
Você também pode recuperar o total para cada nome individual da seguinte maneira:
Re: Somar variaveis Iguais
Posted: 18 Aug 2022, 12:42
by thalesduarte
Olá, muito obrigado pelo retorno!!
Sim, é parecido com isso.
Só que também precisaria para números.
Por Exemplo
Para somar contando com CPFS
Code: Select all
var =
(
66495756070, 25
00966776003, 12
66495756070, 12
00966776003, 27
66495756070, 12
00966776003, 62
)
arr := {}
for x,y in strsplit(var,"`n")
{
nm := strsplit(y,", ").1, cnt := strsplit(y,", ").2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox % k
Como eu poderia fazer isso?
Re: Somar variaveis Iguais Topic is solved
Posted: 18 Aug 2022, 12:44
by flyingDman
Da mesma forma:
Code: Select all
var =
(
66495756070, 25
00966776003, 12
66495756070, 12
00966776003, 27
66495756070, 12
00966776003, 62
)
arr := {}
for x,y in strsplit(var,"`n")
{
tmp := strsplit(y,", "), nm := tmp.1, cnt := tmp.2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox % lst
msgbox % arr[66495756070]
Re: Somar variaveis Iguais
Posted: 18 Aug 2022, 12:48
by thalesduarte
flyingDman wrote: ↑18 Aug 2022, 12:44
Da mesma forma:
Code: Select all
var =
(
66495756070, 25
00966776003, 12
66495756070, 12
00966776003, 27
66495756070, 12
00966776003, 62
)
arr := {}
for x,y in strsplit(var,"`n")
{
tmp := strsplit(y,", "), nm := tmp.1, cnt := tmp.2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox % lst
msgbox % arr[66495756070]
Muito Obrigado!!
Não entendi muito bem como foi a montagem do código, mas vou utilizar esse código como base para estudos.
Grato pela atenção!
Desejo um ótimo dia! =)
Re: Somar variaveis Iguais
Posted: 19 Aug 2022, 12:04
by thalesduarte
Amigo, boa tarde.
Se eu quiser colocar um terceiro parametro, como posso fazer o for retornar isso?
Code: Select all
var =
(
66495756070, 25, BRAZIL
00966776003, 12, ESTADOS UNIDOS
66495756070, 12, JAPAO
00966776003, 27, BRAZIL
66495756070, 12, ESTADOS UNIDOS
00966776003, 62, JAPAO
)
arr := {}
for x,y in strsplit(var,"`n")
{
tmp := strsplit(y,", "), nm := tmp.1, cnt := tmp.2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox % lst
msgbox % arr[66495756070]
Como posso retornar a cidade? junto com o CPF, total e a cidade? (Sempre será 1 cidade por CPF, não será mais de uma)
Re: Somar variaveis Iguais
Posted: 19 Aug 2022, 12:22
by flyingDman
Eu não entendi. Eu só vejo nomes de países, não cidades. Você diz que há uma cidade por CFP, mas o CFP que termina em 03 tem ESTADOS UNIDOS, BRASIL e JAPAO associados a ele. Seria mais fácil se você mostrasse o resultado desejado.
Re: Somar variaveis Iguais
Posted: 19 Aug 2022, 12:47
by thalesduarte
Acho que me expressei mal.
Peço desculpas.
Então, estou realizando uma aplicação no qual a ferramenta vai ler UM arquivo txt na nuvem e vai dizer os Totais pontuados de cada funcionário.
A parte da leitura do banco de dados eu consegui fazer tranquilamente.
A parte onde travei foi a respeito de poder listar esses campos.
Tentei no for fazer um tmp.3, mas não consegui reproduzir ele no arr.
Segue Código.
Code: Select all
var =
(
00966776003, 12, BRAZIL
00966776003, 27, BRAZIL
00966776003, 62, BRAZIL
66495756070, 25, ESTADOS UNIDOS
66495756070, 12, ESTADOS UNIDOS
66495756070, 12, ESTADOS UNIDOS
09598848401, 25, JAPÃO
09598848401, 12, JAPÃO
09598848401, 33, JAPÃO
)
arr := {}
for x,y in strsplit(var,"`n")
{
tmp := strsplit(y,", "), nm := tmp.1, cnt := tmp.2
arr[nm] := !arr.HasKey(nm) ? cnt : arr[nm] + cnt
}
for k,l in arr
lst .= k "`t" l "`n"
msgbox Os funcionários que mais pontuaram foram:`nCPF / PONTUAÇÃO / PAÍS`n%lst%
flyingDman wrote: ↑19 Aug 2022, 12:22
Eu não entendi. Eu só vejo nomes de países, não cidades. Você diz que há uma cidade por CFP, mas o CFP que termina em 03 tem ESTADOS UNIDOS, BRASIL e JAPAO associados a ele. Seria mais fácil se você mostrasse o resultado desejado.