Lọc với 3 tiêu chí, 1 trong đó là giá trị cục đại của 1 tiêu chí [Đưa bài giúp bạn]

  • Thread starter Thread starter SA_DQ
  • Ngày gửi Ngày gửi
Liên hệ QC

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,585
Được thích
22,909
Nghề nghiệp
U80
Có một vùng dữ liệu như bảng dưới đây.
Anh chị viết dùm đoạn code để lọc dữ liệu theo cột [Beam], [Load] & giá trị cựa đại của [Beam] & [Load] đó
và chuyển kết quả lọc được sang khác.
Ví dụ như trong file từ J2 - J16. ứng với các trường hợp TT. em chỉ muốn lấy giá trị ở hai đầu J2,J16 còn giữa J2 và J16 thì em muốn lấy giá trị lớn nhất có thể âm hoặc dương. Tiếp tục như vậy với các trường hợp HT. sau đó xuất sang vùng mới. Em xin cảm ơn mấy anh chị trước ạ.
Mã:
  A      B    C          J
Story |Beam|Load|. . . | [B][COLOR=#ff0000]M3[/COLOR][/B]|
 T02  | B08| TT |. . . |-4.3| 
  . . |. . |    |. . . | . . . 
 T02  | B08| TT |. . . | [B]5.3[/B]| 
  . . |. . |    |. . . | . . . 
 T02  | B08| TT |. . . | 0.3|

Các bạn có thể xem file tại: http://www.giaiphapexcel.com/forum/showthread.php?114297-Dạ-một-lần-nữa-phiền-mấy-anh-chị[TABLE="width: 54"]
[TR]
[TD="width: 72, bgcolor: transparent"][/TD]
[/TR]
[/TABLE]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sao em đã chép đoạn code vào file của em mà không chạy được mấy anh chị. :(
 

File đính kèm

Upvote 0
Dạ tại em thấy chị HYEN17 đã chuyển qua bài này em xem có file ở trên đã viết code nhưng khi bỏ vào file em chạy không được. Em gởi lại file em cho mấy anh chị xem thử kết quả sau khi lọc y như trong file em gởi lên ạ.
 

File đính kèm

Upvote 0
Sao em đã chép đoạn code vào file của em mà không chạy được mấy anh chị.

Lí ra bạn fải làm ngược lại: Chép đè dữ liệu lên file do người giúp đưa lên!

File đó thiết chế để lọc; Mà lọc AdvancedFilte thì fải có vùng Criteria
& còn nhiều chuyện khác như các Names giúp để duyệt theo Beam & theo Load,. . . .
Bạn nên dịch ngôn ngữ VBA trong file đó sang tiếng Việt để hiểu bản chất của vấn đề.
 
Upvote 0
Dạ anh ơi sao em đã copy đè dữ liệu lên file của chị HYEN17 giúp em mà sao không thấy hoạt động anh ơi. Dạ như mấy bài trước anh với chị giúp em chỉ cần em gán macro vào cái nút click là nó tự chạy.
 
Upvote 0
Ở trang 'CSDL' có ông ma75t trời đó; bấm vô!
 

File đính kèm

Upvote 0
Dạ được rồi anh. Cảm ơn Anh với chị HYEN17 nhiều. :). Anh vẽ mặt cười vui quá.:)
 
Upvote 0
Ví dụ như trong file từ J2 - J16. ứng với các trường hợp TT. em chỉ muốn lấy giá trị ở hai đầu J2,J16 còn giữa J2 và J16 thì em muốn lấy giá trị lớn nhất có thể âm hoặc dương. Tiếp tục như vậy với các trường hợp HT. sau đó xuất sang vùng mới.
Còn macro sau đây là lấy 2 dòng cực trị trong mỗi cặp 'Beam' & 'Load':
PHP:
Option Explicit
Sub ChepCucTri()
 Dim WF As Object, CSDL As Range, Cls As Range
 Dim J As Long, Col As Byte, Dg As Integer, Ext As Double, lRw As Long
 Dim Beam As String, Load As String
 Set WF = Application.WorksheetFunction:        Set CSDL = [B2].CurrentRegion
 [q2].CurrentRegion.Offset(1).ClearContents:    Application.ScreenUpdating = False
 For Each Cls In Range("Beam")
    If Cls.Value = "" Then Exit For
    Beam = Cls.Value:                           [Ac2].Value = Beam
    For Dg = 2 To [Ar2].End(xlDown).Row
        Load = Cells(Dg, "Ar").Value:           [aD2].Value = Load
        
        ReDim Arr(1 To 2, 1 To 10)
        Ext = WF.DMin(CSDL, [J1], [Ac1:Ad2]):   [Ae2].Value = Ext
        CSDL.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "Ac1:aE2"), CopyToRange:=Range("AB7:aK7"), Unique:=False
        lRw = [ab99].End(xlUp).Row
        If lRw > 7 Then
            For Col = 1 To 10
                Arr(1, Col) = [AA8].Offset(, Col).Value
            Next Col
        End If
        
        Ext = WF.DMax(CSDL, [J1], [Ac1:Ad2]):   [Ae2].Value = Ext
        CSDL.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "Ac1:aE2"), CopyToRange:=Range("AB7:aK7"), Unique:=False
        For Col = 1 To 10
            Arr(2, Col) = [AA8].Offset(, Col).Value
        Next Col
        [q999].End(xlUp).Offset(1).Resize(2, 10).Value = Arr()
    Next Dg
 Next Cls
 Application.ScreenUpdating = True
End Sub
 
Upvote 0
Dạ mấy anh chị cho em hỏi bây giờ muốn xóa nội lực mình đã lọc như thế nào ạ xóa từ vùng J2:Z2 tới hết. Em có tham khảo một số code trong diễn đàn nhưng không code nào chạy được với bảng của em hết. :(12345.jpg
 
Upvote 0
Dạ em nói thiệt em không biết gì về VBA hết. Chỉ là em lên diễn đàn tham khảo sau đó dựa vào code mấy anh chị viết dùm em sau đó em ngồi chesk từng thông số trong cái code đó thấy cái nào thay đổi rồi em mới suy ra những cái tương tự thôi ạ. :(
 
Upvote 0
Thiết tưởng dữ liệu của cột [J:J] là dữ liệu cơ sở mà, sao bạn đành đoạn xóa nó đi vậy?

Còn bạn vẫn nuốin xóa dữ liệu vừa lọc được thì xài dòng lệnh này:

[R2].Currentregion.Offset(1).ClearContents
 
Upvote 0
Lại phiền mấy anh chị. Nhờ mấy anh chị sửa em là khi em dán dữ liệu mới vào thì không lọc được nữa. Thứ hai nhờ mấy anh chị sửa lại dùm em đoạn code yêu cầu như em đã ghi trong file đính kèm. phiền mấy anh chị quá. :(
 

File đính kèm

Upvote 0
(1) Nhờ mấy anh chị sửa em là khi em dán dữ liệu mới vào thì không lọc được nữa.
(Thứ hai) nhờ mấy anh chị sửa lại dùm em đoạn code yêu cầu như em đã ghi trong file đính kèm. phiền mấy anh chị quá. :(

(1) Trong macro lọc có xài đến các ô được gán têm 'Beam';
Vùng được gàm tên này là danh sách duy nhất của cột [Beam] (cột B:B)

Hơn nữa trong 4 ô có dữ liện của Name 'Beam' kia không có "B5", là dữ liệu duy nhất mà bạn mới nạp vô cột [B:B]
Đã không có trong Name 'Beam' thì làm sao nó lọc cho bạn được.

(2) Sửa xong cái (1) đi đã, thử xem; Cái (2) chỉ sau khi (1) xong
 
Upvote 0
Dạ em đã biết chỗ sửa đó là nạp thêm dữ liệu beam vào cột Ap nhưng hình như chỉ giới hạn cho cho nạp được 5 dòng. Tại sau này dữ liệu beam của em sẽ có rất nhiều nên em muốn làm cho nó dài vô tận. Sau khi nạp thêm thì lọc thử kết quả lọc là TT lại nhảy ra 4 trường hợp. Em cũng không biết vì sao và phải sửa chỗ nào.:(
 

File đính kèm

Upvote 0
(1.0)Dạ em đã biết chỗ sửa đó là nạp thêm dữ liệu beam vào cột Ap nhưng hình như chỉ giới hạn cho cho nạp được 5 dòng. (1.1) Tại sau này dữ liệu beam của em sẽ có rất nhiều nên em muốn làm cho nó dài vô tận.
(2)Sau khi nạp thêm thì lọc thử kết quả lọc là TT lại nhảy ra 4 trường hợp. Em cũng không biết vì sao và phải sửa chỗ nào.:(

(1.0) Đó là vùng được gán tên;
(1.1) Bạn vô menu quản lí Name (Tùy thuộc Version E. bạn đang xài) mà tăng sức chứa lên theo í bạn; Nhưng không fải muốn tăng vô hạn mà không fải trả giá đâu nghe!

(2) Bạn nên lập danh sách duy nhất có ở cột [B:B] vô vùng được gán tên 'Beam' này; Không nên có những người lạ trong danh sách duy nhất này.
Nếu bạn xài E2007 trở về sau thì việc này chỉ là vài động tác đơn giản & rất nên nhuần nhuyễn với nó
 
Upvote 0
Dạ chị ơi em chỉ thấy cái ô quản lí name chỉ có đặt tên name chứ em không biết tăng sức chứa như thế nào hết chị.:(
 
Upvote 0
Dạ, em chỉ thấy cái ô quản lí name chỉ có đặt tên name chứ em không biết tăng sức chứa như thế nào hết chị.:(

Thiết tưởng đây là vấn đề không fải VBA nữa rồi, mà là vấn đề có thể gọi là cơ bản trong Excel;

Bạn chịu khó tìm trên diễn đàn & tiếp thu kiến thức này đi vậy!

Chúng tôi chỉ hướng dẫn cho bạn về VBA thôi!

/-*+/ /-*+/ /-*+/
 
Upvote 0
Dạ em đã nạp thêm được dữ liệu vào ô beam nhưng khi lọc thì nó ra tùm lum hết. :. Mấy anh chị coi dùm em với
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom