Utilize essa sessão para indicar livros e materiais relacionados ao Excel
  • Avatar do usuário
Avatar do usuário
Por Parkeless
#5689
Olá pessoal, bom dia,

Gostaria de saber se poderiam me indicar um material de estudo para a utilização de Arrays em análise de dados.

Atualmente utilizo For each cell in Range("x") seguido por Ifs e Loops, mas fui informado por um usuário que Arrays são mais eficazes para isso.

Obs.: Fiquei na dúvida se criei o tópico no local certo... moderadores, caso necessário, por favor movê-lo para Macros/VBA.
Por Edcronos
#5691
eu não sei sobre material, oq eu aprendi foi na base do sofrimento mesmo
o problema do for each é que não se tem controle sobre ele
fazer loop em planilha é que se a planilha estiver cheia de formulas e outras coisas o processo vai ser moroso
mas se a planilha for uma reservada para isso , sem formulas formatações e outras coisa torna o processo muito mais rapido
antes de aprender a usar arrays eu usava uma aba auxiliar para processos grande
copiava os dados para essa aba auxiliar trabalhava os dados e mandava os dados de volta
com os array agora é
Array=range
loop no array
range = Array
o loop no array é no mesmo molde de um em range mas por celula

array1=range("a1:cx100").value2
for L=1 to 102
for C=1 to 102
Array1(L,C)=n
'Cells(L,C).value2=n
next
next
range("a1:cx100").value2=array1
um array nesse caso é como uma range, só que vc tem que atualizar os dados no final

o fato de arrays serem mais rapidas é que o vba vai trabalhar diretamente com a memoria sem pedir acesso ao excel e nem fazer transações a não ser para pegar e passar os dados de volta
Por Edcronos
#5692
uma macro que faz uso de 4 arrays
resutados(), jogos(), rsu(), totalp()
vc pode ver ela em funcionamento aqui
http://gurudoexcel.com/forum/viewtopic.php?f=26&t=1008
Código: Selecionar todos
Sub totais()

    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Dim resutados(), jogos(), rsu(), totalp(), a As Long, li As Long, lf As Long
    Dim tot()
    li = 6
    lote = Array("Resultado mega", "Resultado quina", "Resultado time", "Resultado dupla", "Resultado lotofacil")
    With Sheets(lote(Cells(1, 36).Value2 - 1))
        resultados = .Range("c" & li, .Cells(.Cells(Rows.Count, 3).End(xlUp).Row + 1, .Cells(4, 1).Value2 + 2)).Value2
        
    End With
    lf = ULinhaRangeEdcronos("C", "R")
    jogos = Range("c" & li, Cells(lf, "r")).Value2
    c1 = UBound(jogos, 2)
     lt1 = UBound(jogos, 1)
    c3 = UBound(resultados, 2)
    lt = UBound(resultados, 1)
    ReDim rsu(1 To lt, 1 To 1)
    ReDim totalp(1 To lt1, 1 To c3)
    For l1 = 1 To lt1
        For l2 = 1 To lt
            a = 0
            For C = 1 To c1
                If jogos(l1, C) <> "" Then
                    For C2 = 1 To c3
                        If jogos(l1, C) = resultados(l2, C2) Then a = a + 1: Exit For
                    Next
                End If
                rsu(l2, 1) = a
            Next
        Next
        For L = 1 To lt
            a = rsu(L, 1)
            If a > 0 Then totalp(l1, a) = totalp(l1, a) + 1
        Next
    Next
    Range("v" & li, "aj" & lf).ClearContents
    Range("v" & li, Cells(lf, c3 + 21)).Value2 = totalp

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Avatar do usuário
Por Parkeless
#5693
Hmmm interessante!

E ainda ao invés de um link na internet, consigo uma explicação personalizada... kkk aí sim

Edcronos, muito obrigado cara. Já vou tentar bolar alguma coisa aqui.

Obs.: Não marquei o tópico como resolvido pois o botão não está aparecendo... acredito que para Indicações de Livros/Materiais essa opção não seja habilitada.

Pode anexar seu pbix e/ou uma amostra dos seus dad[…]

Boa tarde! Gostaria de uma Help do grupo, uma fun[…]

TIRAR CONTAGEM DO ZERO

O erro é originado na fórmula da col[…]

Somatório de letras e ano

Caro Foxtri, Desculpe, fui no gerenciamento nome[…]

Calcular saldo acumulado

Ola tudo bem? nao encontrei o anexo

Veja o anexo e faça as adaptaç&otild[…]

EDITAR CÓDIGO

Pessoal, boa noite!! Por favor preciso de uma ajud[…]

Excluir linhas com critério

solução manua l 1. selecione qu[…]