Usando Find e Offset para criar um intervalo dinâmico [closed]

0

Estou tentando criar um código que classifique, pesquise e copie dados de um conjunto de dados que está sempre mudando. Eu acho que preciso definir uma variável e então ter o codificado para encontrar as coordenadas para a variável e então prosseguir, mas isso pode estar totalmente errado. Eu incluí a idéia básica do que eu preciso do código para fazer dentro do código, mas eu não sei a sintaxe deles para fazê-lo funcionar. Alguma idéia?

Sub Organize_Data ()

Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim X As Integer
Dim Function_Name As String

Replace_Blank

'******Next line could use some "robusting" by replacing hard coded value with a search for EE status**************
    A = ActiveWorkbook.Worksheets("Raw Data").Range("F2", Worksheets("Raw Data").Range("F2").End(xlDown)).Rows.Count
Worksheets.Add().Name = "Calculations"
Find_Unit
Find_Locations
    B = ActiveWorkbook.Worksheets("Calculations").Range("B3", Worksheets("Calculations").Range("B3").End(xlDown)).Rows.Count

    C = ActiveWorkbook.Worksheets("Calculations").Range("C3", Worksheets("Calculations").Range("C3").End(xlDown)).Rows.Count

For X = 1 To B
Worksheets.Add().Name = Sheets("Calculations").Range("B2").Offset(X, 0).Value
Next X

Delete_Temp_Sheets





 ActiveWorkbook.Worksheets("Raw Data").Sort.SortFields.Add Key:=Range( _
    "F2:F376"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Raw Data").Sort
    .SetRange Range("B2:V376")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
'*********Working code******************
Sheets("Raw Data").Select
Cells.Find(What:="EE status", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Calculations").Select
Range("B2").Select
ActiveSheet.Paste
    
por TonyP 13.05.2016 / 00:17

1 resposta

2

Onde você está tentando encontrar "Status EE"? Basta restringir sua pesquisa a isso e .Find retornará um intervalo

Então, por exemplo, algo como (não testado)

Dim findIt as Range
Set findIt = Sheets("Raw Data").Cells.Find (...)
Dim lastRow as Long
lastRow = Cells(Rows.Count,findIt.Column).end(xlup).row
dim myRange as Range
Set myRange = Range(findIt, Cells(lastRow, findIt.Column))
    
por 13.05.2016 / 10:58