Selecionando todos os dados na coluna do Excel, independentemente do tamanho

0

Eu tenho um processo repetitivo que devo fazer no Excel para os dados de teste coletados. Eu tenho que fazer esse processo para cada ponto de dados que eu coletar. Eu coleciono mais de 200 pontos de dados em cada teste.

Meus dados são preenchidos automaticamente nas Colunas A e B. Preciso selecionar todos os dados reais na coluna A, multiplicá-los por uma constante e colocar em uma coluna separada. O problema é que meus dados na coluna A variam no número de células para cada ponto de dados. Por exemplo, um conjunto de dados de teste terá 800 linhas, depois o próximo terá 3200. É sempre independente e eu preciso poder selecionar a linha inteira, independentemente do número de linhas.

Eu preciso ser capaz de fazer isso com uma Macro, para que eu possa fazer todas as outras manipulações de dados necessárias de uma só vez. O problema está quando eu crio a macro ... Eu uso o atalho para selecionar todos os dados e a Macro vê este passo como selecionando células especificadas. Então, quando eu gravar o Macro para um ponto de dados de 3200 células e tente executá-lo em um ponto de dados de 800 células, ele seleciona 3200 células. Eu só preciso selecionar dados reais.

    
por Rudy 29.06.2011 / 14:50

3 respostas

0

Parece que você está tentando resumir um número variável de colunas com base em um campo. Experimente o recurso Subtotal e veja se isso funciona para você. (veja exemplo)

Se não, você pode ter sorte com o Lookup & Referência funções para obter uma referência para onde o campo A muda de 1 para 2, eu tentaria então gerar um sum () com uma matriz usando a referência como entrada. Desculpe eu não posso ser mais detalhado, mas eu nunca tentei isso antes.

   A    B
  --------
+ 1    1.5
| 1    1.6
| 1    1.7
| 1    1.8
+ 1    1.9
1 Total  7
+ 2    1.5
| 2    1.6
| 2    1.7
| 2    1.8
+ 2    1.9
2 Total 7
    
por 29.06.2011 / 15:28
0

Aqui está uma solução de macro.

Eu assumi que seus dados estão na coluna A com um cabeçalho na célula A1, e você tem um cabeçalho de coluna na coluna B, célula B1. Cole estes 2 blocos de código em um módulo e veja se funciona para você. A macro para executar é MultiplyAllData ().

Este primeiro bloco é uma função para obter a última linha na coluna A

Function MyLastRow() As Long
    'This will give the last row in column A
    Dim theLastRow As Long

    Range("A1").Select
    Selection.End(xlDown).Select
    theLastRow = Selection.Row

     MyLastRow = theLastRow
End Function

Este próximo bloco é a macro a ser executada. Multiplica cada valor na coluna A por uma constante (que você pode editar) e coloca o resultado na coluna B:

Sub MultiplyAllData()

     Dim ourLastRow As Long
     Dim myConstant As Double

     myConstant = 3.14           'you can edit your constant here

     ourLastRow = MyLastRow      'this is a call to our function

Range("B2").Select
'   NOTE:  below is the code I got when I first recorded my macro.      
'          I had test data down to cell A40.
'    ActiveCell.FormulaR1C1 = "=RC[-1]*3.14"
'    Selection.AutoFill Destination:=Range("B2:B40")
'    Range("B2:B40").Select
'
'   Here is the modified code from the macro, with more flexibility now
'   because of the variables.
ActiveCell.FormulaR1C1 = "=RC[-1]*" & myConstant
Selection.AutoFill Destination:=Range("B2:B" & ourLastRow)
Range("B2:B" & ourLastRow).Select

Range("B1").Select  'park the cursor
End Sub
    
por 29.06.2011 / 15:37
0

Rudy:

Eu usaria algo assim:

Range(Cells(1,ActiveCell.Column),Cells(WorksheetFunction.CountA(Columns(ActiveCell.Column)),ActiveCell.Column)).Select

Isso selecionará o número de linhas que contêm dados a partir da linha nº 1 na coluna ativa.

    
por 29.06.2011 / 22:21