Jump to content
Fórum Script Brasil
  • 0

VETOR(k) Sendo que k é o número da coluna de uma planilha


Zow

Question

Pessoal, aprendendo a trabalhar com vetores agora:

De uma planilha que tenho diversas linhas e colunas preenchidas quero fazer um vetor que percorre cada coluna e faz os cálculosde uma fórmula de médias, mas tá dando erro "Subscrito fora do intervalo."

Será que alguém pode me dizer o que há de errado?

Segue o código:

Public Sub carregaMM()
       
   'Determinando a quantidade de colunas já preenchidas
    Dim Z As Long
    Dim T As Long
    Dim quantidade As Long
        
    Z = 1
    T = 1
    Do While Z = 1
    If ThisWorkbook.Sheets("Plan1").Cells(1, T).Value <> "" Then
    T = T + 1
    Else
    Z = 0
    End If
    
    Loop

   quantidade = T - 1
   
   'Declaração de variáveis para uso na média
   
   Dim MM3 As Double
   Dim VALOR() As String
   Dim i As Long
   Dim k As Long
      
  'Inicia os cálculos linha a linha
   Dim totaldelinhas As Long
      
   totaldelinhas = ThisWorkbook.Sheets("Plan1").Cells(Rows.Count, 1).End(xlUp).Row
   
   For i = 1 To totaldelinhas
      
      
        
   'Vetor VALOR é o vetor que armazena o valor que queremos
    VALOR(k) = ThisWorkbook.Sheets("Plan1").Cells(i, quantidade - k).Value
      
         
   'Médias móveis
   MM3 = VALOR(0) + VALOR(1) + VALOR(2)
   MM3 = MM3 / 3
       
   'Imprime o nome na 1ª coluna
   
   ThisWorkbook.Sheets("Plan2").Cells(i, 1).Value = ThisWorkbook.Sheets("Plan1").Cells(i, 1).Value
   ThisWorkbook.Sheets("Plan2").Cells(i, 2).Value = MM3
     
   Next i
         
  
End Sub

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Se seu Vetor só vai ter tamanho 3, informe isso quando o declarar... e se vai trabalhar com numeros defina seu tipo como Integer, Long ou Double...você o colocou como String e está efetuando cálculos com ele...

pode até funcionar mas não é elegante.

Dim VALOR(3) As Double

VALOR(0) = 10.8
VALOR(1) = 20.4
VALOR(2) = 30.1

' Um vetor de 3 valores Double
Quando quiser pegar os valores que estão dentro do vetor fica mais simples usar o "For" com "LBound" e "UBound"
Dim n As Integer
Dim Soma As Double

  For n = LBound(VALOR) To UBound(VALOR)
      Soma = Soma + VALOR(n)
  Next n

' O resultado dessa soma está na variável Soma...

Estou no trabalho quando chegar vejo melhor esse teu erro...

mas fica a dica :rolleyes:

Link to comment
Share on other sites

  • 0

Não posso ir armazenando os valores em Loop?

Tipo:

For k = 1 to Quantotal                                                                                    'Quantotal é a quantidade total de vetores 

VALOR(k) = ThisWorkbook.Sheets("Plan1").Cells(i, quantidade - k).Value

Next k

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...