Đoạn này:Em ko thể nào làm cho dữ liệu được lọc 1 cách tự động được? mong các bác chỉ giáo vì khi lọc có nhiều điều kiện để có thể lấy giá trị cần tìm? Em xin chân thành cảm ơn!
If Abs(Sheets(1).Cells(3 + i + k, 4)) > Abs(Pmax) Then
  Pmax = Sheets(1).Cells(3 + i + k, 4)
End If
	If Abs(Sheets(1).Cells(3 + i + k, 4)) > Abs(Pmax) Then
  Pmax = Sheets(1).Cells(3 + i + k, 4)
  V2tu = Sheets(1).Cells(3 + i + k, 5)
  M3tu = Sheets(1).Cells(3 + i + k, 6)
End If
	    Loop
       Sheets(1).Cells(3 + i, 7) = Pmax
       i = i + k
 Loop
	   Loop
      Sheets(1).Cells(3 + i, 7) = Pmax
      Sheets(1).Cells(3 + i, 8) = V2tu
      Sheets(1).Cells(3 + i, 9) = M3tu
      i = i + k
Loop
	

Em cám ơn bác rất nhiều! Nếu bác nào có cao kiến hay hơn thì cải tiến giúp em! ThankĐoạn này:
bạn thay bằng:PHP:If Abs(Sheets(1).Cells(3 + i + k, 4)) > Abs(Pmax) Then Pmax = Sheets(1).Cells(3 + i + k, 4) End If
và đoạn này:PHP:If Abs(Sheets(1).Cells(3 + i + k, 4)) > Abs(Pmax) Then Pmax = Sheets(1).Cells(3 + i + k, 4) V2tu = Sheets(1).Cells(3 + i + k, 5) M3tu = Sheets(1).Cells(3 + i + k, 6) End If
Bạn thay bằng:PHP:Loop Sheets(1).Cells(3 + i, 7) = Pmax i = i + k Loop
Tuy nhiên tôi vẫn cảm thấy code trên cần phải cải tiến thêm ---> Chỉ có mổi việc tìm MAX mà dài dòng quáPHP:Loop Sheets(1).Cells(3 + i, 7) = Pmax Sheets(1).Cells(3 + i, 8) = V2tu Sheets(1).Cells(3 + i, 9) = M3tu i = i + k Loop
Option Explicit
Sub SubMax()
 Dim Text, Rng As Range, Rng0 As Range
 Dim Pmax As Double, Rw As Long, VTr As Long
 Rw = 4
 Do Until Cells(Rw, 1).Value = ""
1   If Text <> Cells(Rw, 1).Value Then
      If VTr > 0 Then
         Pmax = WorksheetFunction.Min(Rng)
         Cells(VTr, "G").Resize(, 3).Value = Rng.Find(Pmax, , _
                  xlFormulas, xlWhole).Resize(, 3).Value
      End If
      Set Rng = Cells(Rw, 1).Offset(, 3)
      VTr = Cells(Rw, 1).Row:                            Text = Cells(Rw, 1).Value
   Else
      Set Rng = Union(Rng, Cells(Rw, 4))
   End If
2   If Cells(Rw, 2).Value = 0 Then
      If Rng0 Is Nothing Then
         Set Rng0 = Cells(Rw, 1).Offset(, 3)
      Else
         Set Rng0 = Union(Rng0, Cells(Rw, 1).Offset(, 3))
      End If
   End If
   Rw = 1 + Rw
 Loop
10
 Pmax = WorksheetFunction.Min(Rng)
 Cells(VTr, "G").Resize(, 3).Value = Rng.Find(Pmax).Resize(, 3).Value
20
  Pmax = WorksheetFunction.Min(Rng0)
  Rng0.Find(Pmax).Resize(, 3).Interior.ColorIndex = 34 + (Second(Time) Mod 6)
End Sub
	Nếu được thì các bác giúp em tìm Pmax tại vị trí 0 lúc này V2 và M3 sẽ xuất hiện tương ứng
Option Explicit
Function MinIf(LookUpRange As Range, LookUpValue As Range, Col As Byte)
 Dim Clls As Range, Rng As Range
 
 For Each Clls In LookUpRange.Cells(1, 1).Resize(LookUpRange.Rows.Count)
   If Clls.Value = LookUpValue.Value Then
      If Rng Is Nothing Then
         Set Rng = Clls.Offset(, Col)
      Else
         Set Rng = Union(Rng, Clls.Offset(, Col))
      End If
   End If
 Next Clls
 MinIf = WorksheetFunction.Min(Rng)
 MinIf = Rng.Find(MinIf, , xlFormulas, xlWhole).Resize(, 3)
End Function
	Tôi chỉ thắc mắc có 1 chuyện: Cột D toàn số âm, vậy sao bạn không tìm MIN mà phải MAX(ABS(...))Em cám ơn bác rất nhiều! Nếu bác nào có cao kiến hay hơn thì cải tiến giúp em! Thank
Sư phụ ơi, em không biết cái này:.PHP:Option Explicit Function MinIf(LookUpRange As Range, LookUpValue As Range, Col As Byte) Dim Clls As Range, Rng As Range For Each Clls In LookUpRange.Cells(1, 1).Resize(LookUpRange.Rows.Count) ..................


Không hiểu! Vị trí 0 là vị trí nào? Nói rõ chút điCác bác ơi! Khi có nhiều vị trí khác vị trí 0 và giá trị đó lại lớn hơn tất cả các giá trị ở vị trí 0 thì kết quả ko đúng. Bây giờ em nghĩ là nên viết vba trứoc hết là tìm những giá trị trong bảng có vị trí 0 rồi lập thành 1 bảng sau đó áp dụng mã của các các bác! Giúp em phần viết mã tạo bảng và tìm vị trí 0.
(1) Không hiểu! Vị trí 0 là vị trí nào? Nói rõ chút đi
(2) Sư phụ ơi, em không biết cái này:
LookUpRange.Cells(1, 1).Resize(LookUpRange.Rows.Count)
Có tương đương với: LookUpRange.Resize(,1)
Không ta?
 
Nhưng mình đang tìm MAX ở cột D, dựa vào điều kiện tại cột A ---> Liên quan gì đến cột B nhỉ(1) Ở cột 'B' đó! Suy ra í mà!![]()


Vị trí là ở cột B đó anh, ở đó là vị trí của mỗi phần tử. Em cám ơn!Không hiểu! Vị trí 0 là vị trí nào? Nói rõ chút đi
Có phải bạn muốn lọc tất cả dử liệu với điều kiện cột B = 0 ?Vị trí là ở cột B đó anh, ở đó là vị trí của mỗi phần tử. Em cám ơn!
Chính vì vậy mà nhờ mấy bác lọc ra thành bảng tại vị trí 0
Sub Pmax()
[G:I].ClearContents
Dim Frame As String
Dim P As Long, R As Long
Frame = "":     P = 4:     R = 4
For Each Rng In Range([A4], [A65536].End(xlUp))
    If Rng <> Rng.Offset(1) Then
        Cells(R, 7).Resize(, 3).Value = Cells(P, 4).Resize(, 3).Value
        P = Rng.Row + 1
        R = Rng.Row + 1
    ElseIf Rng = Frame And Rng.Offset(, 1) = 0 And Rng.Offset(, 3) < Cells(P, 4).Value Then
        P = Rng.Row
    End If
Frame = Rng.Value
Next
End Sub
	Bạn muốn hỏi chỗ nào? Code hay công thức?Cám ơn bác rất nhiều! Bây giờ em muốn tìm giá trị nhỏ nhất ở vị trí 0 thì thay dấu "<" bằng dấu ">" phải ko các bác?


mình hỏi mã, công thức ko tiện bằng mã. Mong bác giúp đỡ!Bạn muốn hỏi chỗ nào? Code hay công thức?
Không thể hiểu đơn giản như bạn được đâu. Để sửa code hoặc công thức cho một mục đích khác bạn phải hiểu rõ về code hoặc công thức đó.