การใช้การค้นหาและการชดเชยเพื่อสร้างช่วงไดนามิก [ปิด]


0

ฉันกำลังพยายามสร้างรหัสที่จะเรียงลำดับค้นหาและคัดลอกข้อมูลจากชุดข้อมูลที่เปลี่ยนแปลงตลอดเวลา ฉันคิดว่าฉันจำเป็นต้องกำหนดตัวแปรแล้วให้รหัสค้นหาพิกัดสำหรับตัวแปรแล้วดำเนินการต่อ แต่นั่นอาจผิดทั้งหมด ฉันได้รวมแนวคิดพื้นฐานของสิ่งที่ฉันต้องการให้โค้ดทำภายในโค้ด แต่ฉันไม่ทราบว่าพวกเขาใช้ไวยากรณ์เพื่อให้ทำงานได้หรือไม่ ความคิดใด ๆ

ย่อย 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

คำตอบ:


1

คุณพยายามค้นหา "สถานะ EE" อยู่ที่ไหน เพียง จำกัด การค้นหาของคุณเท่านั้นและ.Findส่งคืนช่วง

ตัวอย่างเช่นบางอย่างเช่น (ยังไม่ทดลอง)

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))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.