Private Sub CommandButton2_Click() Sheets("OUT").Cells.Clear Sheets("還原股價").Activate END_ROW = Sheets("還原股價").Range("a" & 10000).End(xlUp).Row end_year = Split(Sheets("還原股價").Range("a" & END_ROW).Value, "/") NOW_YEAR = Split(Sheets("還原股價").Range("a" & 2).Value, "/") NOW_YEAR = NOW_YEAR(0) fh = 2 '開始位置 Sheets("OUT").Range("A1:E1") = Array("股價(年)", "最高", "最低", "最高日期", "最低日期") For year_begin = NOW_YEAR To end_year(0) Step -1 ActiveSheet.Range("$A$1:$f$" & END_ROW).AutoFilter Field:=1, Criteria1:= _ ">=" & year_begin & "/1/1", Operator:=xlAnd, Criteria2:="<=" & year_begin & "/12/31" Set A = ActiveSheet.Range("b:e").SpecialCells(xlCellTypeVisible) Max = Application.Max(ActiveSheet.Range(A.Address)) Min = Application.Min(ActiveSheet.Range(A.Address)) Sheets("OUT").Range("A" & fh) = year_begin Sheets("OUT").Range("B" & fh) = Max Sheets("OUT").Range("C" & fh) = Min Set A_FIND = A.Find(WHAT:=Max) If A_FIND Is Nothing Then Else Sheets("OUT").Range("D" & fh) = ActiveSheet.Range("A" & A_FIND.Row).Value End If Set A_FIND = A.Find(WHAT:=Min) If A_FIND Is Nothing Then Else Sheets("OUT").Range("E" & fh) = ActiveSheet.Range("A" & A_FIND.Row).Value End If fh = fh + 1 Next year_begin Sheets("還原股價").AutoFilterMode = False End Sub