Các câu hỏi về lọc dữ liệu, lọc với nhiều điều kiện

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Các bạn giúp mình 2 bài toán tìm kiếm và lọc các dữ liệu ,vui lòng mở file đính kèm

Một giải pháp cho những ai yêu thích Name

Về phần trích lọc danh sách duy nhất thì trên diển đàn có nói nhiều rồi, tôi chỉ muốn góp phần bài toán trích theo điều kiện (Trần thị)
Đặt 2 name là đủ:

listA = $A$3:$A$12
VT =IF(ISERR(SEARCH($E$1,listA)),"",ROW(INDIRECT("1:"&ROWS(listA))))

Và cuối cùng có công thức:

C3 =IF(ROW(1:1)>COUNT(VT),"",INDEX(listA,SMALL(VT,ROW(1:1)),1))

Kéo fill xuống!
Bạn hoangdanh282vn chú ý: Cẩn thận với hàm INDIRECT vì ko phải khi nào cũng cho kết quả đúng… Bạn hãy thử kéo vùng listA ra khỏi cột A thì sẽ biết liền.. Kết quả sai ngay lập tức
ANH TUẤN

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 102 ▥ 0
Quảng cáo

Bạn nên đọc

102 Responses

  1. hands says:

    Cám ơn bạn rất nhiều.

    Tôi có trường hợp này không biết xử lý ra sao, mong bạn chỉ giúp.

    Tôi có 01 bảng thống kê vật tư, trong đó có nhiều loại vật tư có tên trùng nhau, tôi muốn lọc ra 01 bảng vật tư rút gọn (bỏ qua các loại có tên trùng nhau).
    Mong bạn chỉ giúp. Cám ơn bạn nhiều.
    Đây là file Excel tôi cần lọc :
    https://www.mediafire.com/?yzjpnp74ymdv17q

    Bạn chọn ô A1 rồi vào DataFilterAdvanced Filter… (nhớ check vào ô Unique records only nhé)

    1461

    Chú ý: với File của bạn dữ liệu có 357 dòng
    + Nếu Loại bỏ TÊN VẬT TƯ trùng nhau, chỉ lấy duy nhất một cột TÊN VẬT TƯ thì trong ô List range bạn để $B$2:$B$359 (sẽ được 190 TÊN VẬT TƯ không trùng nhau)

    Nhưng như vậy thì mình thấy: Bật sắt ĐK 10 chỗ thì ĐV là Mét, chỗ thì ĐV lại là cái (ĐV khác nhau)
    và còn nhiều TÊN VẬT TƯ khác cũng có ĐV khác nhau (Băng tan; Bu lông M20x80; Cầu chắn rác; ,,,)

    + Nếu bạn muốn giữ lại các TÊN VẬT TƯ trùng nhau nhưng ĐV khác nhau thì trong ô List range bạn để $B$2:$C$359 (sẽ được 225 TÊN VẬT TƯ và ĐV không trùng nhau)

    Ok. Tôi đã làm được như thế. Vậy nếu muốn chi tiết các tên và địa chỉ cụ thể đã bị loại ra thì làm thế nào? (Tôi muốn thấy được cả những dữ liệu đã loại bỏ để có thể cho đối tác biết là danh sách các tên nào đã bị loại đi).
    Chân thành cảm ơn anh!

    File của bạn đây: Nhấn nút Sheets("Data")

    Kết quả lọc duy nhất được đưa sang Sheets("Loc").

    Những dòng trùng bị loại bỏ được đưa sang Sheets("Temp")

    "Sếp ơi"! Tôi bấm vào nút "Loc" mà không được. Bấm vào hiện ra VBA là sao? Liệu có lỗi kỹ thuật gì không? Nhờ "sếp" chỉ giúp!

    Tập tin đính kèm dùng cho Excel 2003

    Mọi người kiểm tra giúp xem thực hư thế nào: Tui test cả trăm lần vẫn ngon lành thế mà hehe82 test nó lại ra VBA

    @hehe82: Bạn nhấn nút nó ra cái gì, đưa lên xem nào? (bạn đã chỉnh ToolsMacroSecurity… về Low chưa vậy?)

  2. hands says:

    Lọc dự liệu khi các ô tiêu đề có chế độ trộn ô

    Chào các bạn!
    Minh thử lọc dữ liệu theo bảng đính kèm dưới nhưng không được:
    Điều kiện lọc là: E7>=25 và H7>=25 và I7>=95.
    Nhưng không ra kết quả.
    Không biết có phải do tiêu đề bị trộn ô không. Ai có thể giúp mình với. Cảm ơn

    Bằng tay không được chứ dùng code thì OK

    Sub Test()
    With Sheet1.Range("A6:I100")
    .AutoFilter 5, ">25"
    .AutoFilter 8, ">25"
    .AutoFilter 9, ">95"
    End With
    End Sub
    AutoFilter ra kết quả rồi, muốn copy đi đâu nữa là việc của bạn

  3. hands says:

    Giúp em vụ trích lọc này với

    Em đang tự làm 1 file excell để hỗ trợ cho công việc của mình nhưng bí quá! anh chị nào xem file đính kèm rồi chỉ em với nha! em muốn dữ liệu cập nhật trong sheet 1 sẽ tự động trích qua Sheet 2 giống như file đính kèm! Cám ơn anh chị nhiều!

    Từ Cell A8 trở xuống bạn chú thích như thế là sao? vẫn nhập số liệu khác _ chưa hiểu, giải thích giúp nhé . Bạn muốn dùng công thức hay Vba?
    Bạn dùng macro sự kiện như vầy ơ trang nhập liệu:

    Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Columns("E:E")) Is Nothing Then
       If Target.Value = 0 Then
          Sheet2.[A65500].End(xlUp).Offset(1).Resize(, 5).Value = _
             Cells(Target.Row, "A").Resize(, 5).Value
       End If
     End If
    End Sub

    ý mình là vẫn nhập số liệu bình thường bạn à! ko ảnh hưởng gì tới những dòng ở trên!
    Bạn chỉ mình rõ ràng hơn được không? thank bạn nhiều!

    Hãy thử nhập nguyên 1 dòng vô trang tính nhập (với số 0 cuối, tất nhên!)

    (Macro cũng ở trang tính đó luôn)

  4. hands says:

    lọc theo điều kiện

    nhờ các bác lọc hộ theo file gửi kèm.
    – Lọc 1 hoặc nhiều số trong cột MH (sheet DLDV) và đưa ra các nội dung trong vùng đó vào sheet bên.
    Cám ơn nhiều!

    RightClick vào sheet "DU TOAN" ==> chép code này vào ==> nhập MH vào cột A ==> Enter ==> xem kết quả

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ws As Worksheet, Vung As Range, VungL As Range
        Application.ScreenUpdating = False
         On Error Resume Next
            If Not Intersect(Target, Range("a4:a100")) Is Nothing Then
                Set Ws = Sheets("DLDV")
                Set Vung = Ws.Range(Ws.[b6], Ws.[b5000].End(xlUp)).Offset(0, -1)
                    With Vung
                        .Resize(, 10).AutoFilter Field:=1, Criteria1:="="
                        .Offset(1).FormulaR1C1 = "=R[-1]C"
                        .Offset(1, 10).FormulaR1C1 = "1"
                        .AutoFilter
                    End With
                        Set VungL = Ws.Range(Ws.[a5], Ws.[a5000].End(xlUp))
                            With VungL
                                .Resize(, 10).AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(-1)
                                .Offset(1, 1).Resize(, 9).SpecialCells(12).Copy ActiveCell.Offset(-1, 1)
                                .AutoFilter
                            End With
                    With Vung
                        .Resize(, 11).AutoFilter Field:=11, Criteria1:="1"
                        .Offset(1).ClearContents
                        .AutoFilter
                    End With
                  Ws.Range("k6:k5000").ClearContents
               End If
        Application.ScreenUpdating = True
    End Sub

    Chưa ưng ý lắm, mình làm thử cho bạn nhập từ A5 ==> A100 thôi nhé, có gì tính sau
    Thân

    Rất cảm ơn bạn đã bỏ chút thời gian giúp đỡ. Đúng là chưa ưng ý lắm nhưng phần nào cũng đã có ích cho tôi. Nhờ bạn sửa giúp lỗi sau :
    – Thừa 1 dòng ở cuối mỗi bảng sau khi nhập mã và enter
    – Khi copy một mã số bất kỳ dán vào dòng thừa nói trên thì dòng cuối của cá nội dung phía trên bị xoá. Nếu kich đúp vào mã số trên thì dòng đầu tiên của phần phía dưới bị xoá.

    Cám ơn nhiêù !

    Thú thật với bạn, bài này tới đây thì mình cũng "tèo" luôn rồi, dùng sự kiện trong sheet bực mình quá, tam thời mình làm thế này:
    -Từ A1 ==> A100 ở sheet "DU TOAN" bạn chọn bất cứ cell nào thì "nó" cũng tạo cho bạn một "thằng" validation, bạn chọn mã trong validation này ==> Enter ==> xem kết quả.(Trong sheet DLDV dữ liệu đến đâu thì kéo công thức tới đó, đừng kéo dư)
    Nếu thích thì làm còn không thì (nói như phim HongKong) coi như mình chưa làm gì hết
    Híc, trong file có quá trời name rác, hèn chi dung lượng "chà bá" luôn
    Thân

  5. hands says:

    chỉ giúp cách lọc dữ liệu

    mình không rành về excel lắm, search trên mạng mà chẳng làm được, mong các bạn chỉ giúp cái này nhé. mình có 02 file, file 1 gồm có tên nhân viên và msnv; file 2 thì có đầy đủ thông tin về nhân viên như tên, msnv, năm sinh, v.v…
    bây giờ mình muốn lấy thông tin của file 2 qua file 1 thì làm như thế nào cho nhanh? chứ coppy từng tên chắc chết lun. Ai biết chỉ mình với nhe. xin cảm on!

    dùng vlookup là được, tuy nhiên cần có file mẫu thì sẽ được chính xác hơn, không nên hỏi chung chung như thế.
    Vậy thì bạn đừng copy từng tên mà copy tất cả sang là được chứ sao?
    Nói vậy thôi, bây giờ bạn mở cả 2 file lên, tại file 1, bạn sử dụng VLOOKUP để lấy thông tin từ file 2 sang. Sau đó copy vùng kết quả thu được và dán giá trị lại vào chính vùng đó.

    bạn chỉ rõ hơn được k?. file 1 ds xếp không theo thứ tự với ds bên file2. mình up file đính kèm nhưng bị lỗi ko à. mỗi file có 300kb à. xin cám ơn

    đại khái gần giống như thế này
    xem file nhé

    Bạn có thể nén file lại (dùng Winrar chẳng hạn) cho kích thước file nhẹ hơn.
    Nếu vẫn không được thì gửi mail cho mình theo địa chỉ [EMAIL="bluecactus_ayhs@yahoo.com"]bluecactus_ayhs@yahoo.com, mình sẽ đưa file lên cho.
    mình đã gửi mail cho bạn, bạn xem rồi chỉ cách làm luôn nha. cám ơn

    Đây là file của bạn. Mình đã nhập công thức vào trong file, tuy nhiên dữ liệu ở bảng tra nhập không đầy đủ nên có những trường hợp không cho ra kết quả.

  6. hands says:

    hỏi về autofilter

    Nhờ các bạn giúp mình cập nhật dữ liệu sau khi autofilter.
    Xin mở file đính kèm và giúp mình nhé.
    Cảm ơn các bạn nhiều!

    Cái này thì có nhiều cách nhưng tốt nhất là dùng Pivot Table
    Nếu chưa biết thì tài liệu đây: https://www.giaiphapexcel.com/diendan/threads/92958.Quà-tặng-thành-viên-nhân-dịp-SN4-Pivot-Table-2003
    Làm gần xong kéo cái Report Filter lên trên để lọc

    Ý bạn thế này phải không?

    Hình như bạn làm… ngược rồi thì phải:
    – Yêu cầu sau khi filter xong thì hiển thị tên phòng tại D4
    – Bạn thì filter theo điều kiện chọn phòng tại D4
    —————
    Dạng này đã post trên diễn đàn cả chục lần rồi thì phải —> Dùng SUBTOTAL

    Dạ đúng, em đọc nhầm
    Nhân tiện sư phụ giúp em [URL="https://www.giaiphapexcel.com/forum/showthread.php?44325-Code-File-Excel-tìm-kiếm-và-thay-thế-trong-Word"%5Dbài_này với, em xin cảm ơn

    Mở file đính kèm dưới đây, AutoFilter cột G sẽ thấy!
    Cách làm của tôi là:
    – Đặt name
    p =Sheet1!$G$7:$G$21Công thức tại D4
    =IF(COUNTA(p)=SUBTOTAL(3,p),"All",INDEX(p,MATCH(1,(SUBTOTAL(3,OFFSET(p,ROW(INDIRECT("1:"&ROWS(p)))-1,,1))),0)))Công thức mảng nha!
    Ghi chú:
    – Nếu cột STT là liên tục thì ta có thể tận dụng nó khiến công thức sẽ ngắn hơn rất nhiều và không cần đến mảng
    – Ngoài ra, nếu cột G có cell rổng và ta filter cột G theo điều kiện Blanks thì công thức phải sửa lại đôi chút

    Bác nd ơi cảm ơn bác rất nhiều, bác có thể chỉ thêm phần đặt name là đặt ở đâu thế

    Nằm trong menu InsertNameDefine đấy bạn!
    Ở bài này, chẳng qua đặt name cho gọn công thức thôi, nếu để nguyên, khỏi đặt name thì công thức sẽ thế này
    =IF(COUNTA($G$7:$G$21)=SUBTOTAL(3,$G$7:$G$21),"All",INDEX($G$7:$G$21,MATCH(1,(SUBTOTAL(3,OFFSET($G$7:$G$21,ROW(INDIRECT("1:"&ROWS($G$7:$G$21)))-1,,1))),0)))Tức chổ nào có chữ p thì tương đương với $G$7:$G$21
    ————————-
    Giờ để tôi làm lại bài này ở cấp độ đơn giản nhất (có 1 cột phụ) cho bạn dễ hình dung nha —> Xem file

  7. hands says:

    giúp mình lọc dữ liệu có điều kiện với!!

    các bác giúp em giải quết vấn đề này với!
    em co một bảng dữ liệu o sheet2, ở sheet1 thì khi nhập 1 giá trị vào ô B2 ( tuc là giá tri a của bảng dữ liệu o sheet2), sau khi nhập xong thì lấy giá trị ở o B2 này, đem so sánh với giá trị a ở sheet2 (cột a), so sánh theo điều kiện là lấy giá trị gần với giá trị ở B2 nhất. và ở ô E2 và E3 hiện thị b, c truong ứng với a trong bảng duữ liệu. còn ô E4, E5 thì là tích của a*c và c*b.

    Dùng 2 Name cho công thức gọn một chút.
    Kết quả ô E4 của sheet1 chẳng biết lấy a nào, a của sheet1 hay a của sheet2?

    anh có thể giải quyết vấn đề bằng VBA được không ah!!
    mong anh giúp đỡ!!!

    Code thay cho công thức của bài #2 đây:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Dim nN, iI, zZ As Double
    Dim Shs As Worksheet
    Set Shs = Sheets("sheet2")
    If Not Intersect(Target, ) Is Nothing Then
    nN = Application.WorksheetFunction.Match(, Shs.Range(Shs., Shs..End(xlUp)), 1)
    If Range("B2") – Shs.Range("A" & nN + 1) <= Shs.Range("A" & nN + 2) – Then
    iI = nN
    Else
    iI = nN + 1
    End If
    zz = Shs.Range("A" & iI + 1)
    = Shs..Offset(iI, 1)
    = Shs..Offset(iI, 2)
    = *
    = *
    = zZ *
    End If
    Set Shs = Nothing
    End Sub

  8. hands says:

    giúp mình lọc dữ liệu có điều kiện với!!

    các bác giúp em giải quết vấn đề này với!
    em co một bảng dữ liệu o sheet2, ở sheet1 thì khi nhập 1 giá trị vào ô B2 ( tuc là giá tri a của bảng dữ liệu o sheet2), sau khi nhập xong thì lấy giá trị ở o B2 này, đem so sánh với giá trị a ở sheet2 (cột a), so sánh theo điều kiện là lấy giá trị gần với giá trị ở B2 nhất. và ở ô E2 và E3 hiện thị b, c truong ứng với a trong bảng duữ liệu. còn ô E4, E5 thì là tích của a*c và c*b.

    Muốn VBA thì tặng bạn VBA đây, dữ liệu ở cột A Sheet2 phải được sắp xếp như trong bài
    Right Click vào Sheet1 ==> View Code ==> chép cái này vào ==> nhập dữ liệu ở B2 ==> xem kết quả

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ws, Cll, Vung, mM, nN, I, Wf
        If Target.Address = "$B$2" Then
            Set Wf = Application.WorksheetFunction
            Set Ws = Sheets("sheet2")
            Set Vung = Ws.Range(Ws.[a2], Ws.[a100].End(xlUp))
                For I = 1 To Vung.Rows.Count
                    If Target < Wf.Min(Vung) Then [e2] = Vung(1).Offset(, 1): [e3] = Vung(1).Offset(, 2): [e4] = Target * [e2]: [e5] = [e2] * [e3]
                    If Target > Wf.Max(Vung) Then [e2] = Vung(Vung.Rows.Count).Offset(, 1): [e3] = Vung(Vung.Rows.Count).Offset(, 2): [e4] = Target * [e2]: [e5] = [e2] * [e3]
                    If Vung(I) = Target Then
                        [e2] = Vung(I).Offset(, 1): [e3] = Vung(I).Offset(, 2): [e4] = Target * [e2]: [e5] = [e2] * [e3]
                        Exit For
                    Else
                        If [b2] < Vung(I) And [b2] > Vung(I - 1) Then
                            mM = Vung(I) - Target
                            nN = Target - Vung(I - 1)
                                If mM < nN Then
                                    [e2] = Vung(I).Offset(, 1): [e3] = Vung(I).Offset(, 2): [e4] = Target * [e2]: [e5] = [e2] * [e3]
                                Else
                                    [e2] = Vung(I).Offset(-1, 1): [e3] = Vung(I).Offset(-1, 2): [e4] = Target * [e2]: [e5] = [e2] * [e3]
                                End If
                        End If
                    End If
                Next
        End If
    End Sub

    Thật ra bài này còn mấy chỗ chưa rõ:
    1 – Nếu giá trị ở B2 = 5 ==> nằm giữa cách đều A7 & A8 ở Sheet2 thì lấy giá trị nào??? ( Trong bài mình lấy giá trị gần & nhỏ hơn )
    2 – Nếu giá trị ở B2 nằm ngoài vùng giá trị A2:A12 ở Sheet2 thì sao??? (Trong bài nếu giá trị B2 nhỏ hơn Min(Sheet2!A2:A12) thì lấy giá trị đầu (A2), ngược lại nếu B2> Max(Sheet2!A2:A12) mình lấy giá trị cuối (A12)
    Có gì chưa trúng ý thì ….la lên nhé
    Thân

    Cảm ơn bạn rất nhiều! Bạn có thể coppy và paste sang sheet 2 được không ạ? Cách của bạn cũng rất hay!

    Bạn bấm Alt +F11 ở đoạn cuối trong code

    ..............
                        Next I
            [f4].Resize(mM, 3) = Mg
    End Sub

    Chỗ .Resize(mM,3) = Mg
    Bạn sửa thành
    Sheets("Sheet2").[cell muốn gán kết quả].Resize(mM,3) = Mg

    Vâng! Cảm ơn bạn rất nhiều! Nếu mình muốn gán kết quả sang sheet2 như bạn hướng dẫn nhưng thêm điều kiện là kết qủa tìm được được gán đầy đủ cả hàng của nó thì mình làm thế nào ạ? Mong được bạn giúp đỡ! Thân!

  9. hands says:

    Lọc Tìm Vị Trí Dữ Liệu

    Chào GPE! Mình gặp phải một vấn đề khó khăn khi lọc tìm vị trí của dữ liệu theo hàng! Trong file excel có một cột được nhập dữ liệu theo nhiều dạng khác nhau với số liệu rất nhiều (Hơn 10000 hàng). Công việc của mình là phải lọc tìm ra vị trí của các dữ liệu cần kiểm tra. Mình đã dùng bảng Custom AutoFilter nhưng bảng này chỉ cho phép lọc và tìm của 1 dữ liệu được nhập vào! GPE có giải pháp nào mà tìm và lọc được một lúc nhiều dữ liệu cần kiểm tra thì xin được giúp đỡ! Chân thành cảm ơn!

    Không dùng ÀutoFilter được thì dùng Advanced Filter… Có điều sau khi xem xong tôi cũng chưa hiểu ý bạn —> Cụ thể bạn muốn lọc cái gì? Kết quả lọc đặt ở đâu?

    Vâng! Cảm ơn ndu đã quan tâm! Ví dụ trong file mình gửi kèm theo: mình muốn xem hàng có dữ liệu 45;8 và hàng có dữ liệu 58'01 (dữ liệu bất kì nào đó) ở cột A như thế nào thì mình phải dò từng hàng một hay dùng Filter thông thường thì rất hoa mắt và mất nhiều thời gian nếu dữ liệu có nhiều hàng. Nếu dùng AutoFilter thì chỉ kiểm tra được 1 hàng dữ liệu (chỉ nhập được 1dữ liệu để kiểm tra), không kiểm tra được đồng thời nhiều dữ liệu! Ndu có cách nào mà kiểm tra đồng thời được nhiều dữ liệu cùng một lúc với điều kiện hàng có dữ liệu được kiểm tra sẽ hiện ra còn hàng không có dữ liệu kiểm tra thì ẩn đi giống như dùng Filter hoặc là hàng có dữ liệu được kiểm tra được coppy và paste sang sheet khác

    Hướng dẫn bạn làm bài này bằng Advanced Filter
    – Gõ trị cần tìm vào cột E (ví dụ E1 gõ 45;8 và E2 gõ 58'01… vân vân…)
    – Gõ công thức này vào cell C2: =COUNTIF($E$1:$E$100,$A2)>0
    – Gọi lệnh Advanced Filter và chọn các vùng như hình:
    1476
    – Bấm OK là có kết quả ngay

    Góp thêm một cách
    Bạn nhập tất cả dữ liệu cần tìm vào , cách nhau "khoảng trắng" ==> bấm nút

  10. hands says:

    Giúp em lọc với nhiều điều kiện

    Em có ví dụ này nhờ AC xem và viết dùm em code lọc theo điều kiện đã có. Câu hỏi cụ thể trong file đính kèm.
    Cám ơn AC nhiều!

    Bạn tham khảo File đính kèm nhé, có gì trao đổi lại với mình.

  11. hands says:

    Hỏi về cách lọc từ tháng đến tháng bằng Advanced Filter

    Chào các bạn,Nhờ các bạn giúp mình cách viết hàm để lọc được từ tháng đến tháng, ví dụ: mình muốn lọc từ tháng 5 đến tháng 10 năm 2011,Các bạn xem File. Cảm ơn các bạn.

    Bài này đưa vào box [URL="https://www.giaiphapexcel.com/forum/forumdisplay.php?79-L%E1%BA%ADp-Tr%C3%ACnh-v%E1%BB%9Bi-Excel"%5DLập trình với Excel có vẻ hợp lý hơn đấy nhỉ (hy vọng MOD, SMOD sẽ chuyển về đúng Box).
    Mình làm như sau:
    1. Tạo vùng điều kiện lọc để lấy năm như ở I1:I2.
    2. Sử dụng code sau cho sheet Loc để lọc năm:
    Private Sub Worksheet_Activate()
    Sheet1..AdvancedFilter xlFilterCopy, , , True
    End Sub3. Đặt 1 Name Nam=OFFSET(Loc!$J$2,,,COUNTA(Loc!$J:$J)-1,) để tạo Source cho Validation tại ô A2
    4. Tạo vùng điều kiện lọc dữ liệu như ở H1:H2
    5. Sử dụng code sau để lọc dữ liệu:
    Sub LocDL()
    Sheet2..Clear
    Sheet1..CurrentRegion.AdvancedFilter xlFilterCopy, Sheet2., Sheet2.
    End Sub

    Cảm ơn bạn nghiaphuc đã giúp,Tiện ̣đây bạn cho hỏi là nếu ta muốn lọc thêm dữ liệu ở cột C,D và E Thì phải sửa lại Code như thế nào?

    Theo mình thì cũng không cần phải sửa code là gì (tất nhiên là tùy tình hình thực tế). Nếu thêm điều kiện lọc thì bạn sửa lại công thức tại ô H2 (ở bước 4 của bài trên) cho phù hợp là được.

  12. hands says:

    Lọc dữ liệu

    Chào các bạn!

    Mình có 1 file nhờ các bạn giúp đỡ.

    Trong sheet1 có dữ liệu số xe, km bảo dưỡng, ngày bảo dưỡng.
    Trong sheet2 có số xe.

    Mình muốn lập công thức trong sheet 2 cột e4,f4 với điều kiện lấy km bảo dưỡng, ngày bảo dưỡng trong sheet1 ngày sau cùng thực hiện bảo dưỡng.

    trong sheet2 xe 53N-4248 ở cột e4 khi lập xong sẻ trả về giá trị số Km BD là 184.000 tương ứng ngày 29.5.11

    Loay hoay mãi chưa được.

    Cám ơn các bạn nhé!

    Công thức ở sheet2:

    =INDEX(Sheet1!$D$3:$D$60,MAX(IF(Sheet1!$C$3:$C$3000=Sheet2!$B4,ROW(Sheet2!$C$3:$C$3000)-2,"")))

    Công thức ở sheet2:

    =INDEX(Sheet1!$B$3:$B$60,MAX(IF(Sheet1!$C$3:$C$3000=Sheet2!$B4,ROW(Sheet2!$C$3:$C$3000)-2,"")))

    Kết thúc bằng Ctrl + Shift + Enter
    Kéo xuống
    Số xe bên sheet 2 phải chắc chắn có trong sheet 1 chứ bạn, nếu không…nó dò bậy ráng chịu. Híc
    Thân

    Thọt lét!
    Tạm đưa nó vào Name rồi bẫy lỗi cho nó đi, nhiều khi có xe chưa bảo dưỡng thì sao Cò Già?

    Góp thêm 1 cách dùng mảng cho thêm phần nặng nề:

    KM:

    =IF(SUM((Sheet1!$C$3:$C$100=$B4)*1)=0,"",INDEX(Sheet1!$D$3:$D$100,MATCH(2,IF(Sheet1!$C$3:$C$100=$B4,1,""),1)))

    Ngày:

    =IF(SUM((Sheet1!$C$3:$C$100=$B4)*1)=0,"",INDEX(Sheet1!$B$3:$B$100,MATCH(2,IF(Sheet1!$C$3:$C$100=$B4,1,""),1)))

    Cả 2 công thức kết thúc bằng Ctrl-Shift-Enter

    http://www.giaiphapexcel.com/diendan/threads/c%C3%A1c-c%C3%A2u-h%E1%BB%8Fi-v%E1%BB%81-l%E1%BB%8Dc-d%E1%BB%AF-li%E1%BB%87u-l%E1%BB%8Dc-v%E1%BB%9Bi-nhi%E1%BB%81u-%C4%91i%E1%BB%81u-ki%E1%BB%87n.1383/post-342978

  13. hands says:

    lọc dữ liệu

    mình có một file nội lực của dầm mong các bạn giúp:
    mình muốn lọc giá trị M3 của dầm B705. ứng với 2 giá trị M3- có giá trị lớn nhất và M3+ có giá trị lớn nhất.tướng ứng với giá trị đó mình muốn xuất tên tải trọng Load, Vị trí lọc tải Loc và vị trí tầng Story. mình nghĩ cái này cũng không khó lắm nhưng làm mãi không đc.

    Xem file đính kèm nhé!!!!

    mình quên mất. ý mình là xuât giá trị M3- max và M3+ max tương ứng với mỗi trường hợp tải trọng th1, th2…bạn có thể gíp mình lần nưa không

    Có phải bạn muốn sắp xếp tất cả tải trọng với Max và Min của M3 không?

  14. hands says:

    Cần các cao thủ excel trợ giúp về vấn đề autofill

    Cửa hàng quần áo của mình cũng ko đòi hỏi cách thức tính toán hay quản lý phức tạp. Mình chỉ có vất vả mỗi khoản nhập dữ liệu vào excel để quản lý.

    VD: mình có 1 file lưu trữ hàng nhập (vd Sheet1), bao gồm mã sản phẩm, giá bán và mô tả về sản phẩm. Khi bán đc 1 sản phẩm, mình cần nhập dữ liệu những gì đã bán vào 1 sheet doanh thu (vd Sheet2). Mỗi lần như vậy đều phải đối chiếu với file nhập hàng (sheet 1), copy and paste từng cột, từng dòng dữ liệu tương ứng. Mất rất nhiều thời gian và đôi khi là nhầm lẫn giữa mã SP, giá tiền với nhau.

    Vậy, cho hỏi có cách nào để thực hiện autofill các dữ liệu, để mỗi khi mình gõ 1 mã SP bán đc, thì excel sẽ tự động complete với dữ liệu trong file lưu trữ hàng nhập (VD: nhập mã SP 002 (A2) thì tự động dữ liệu về sản phẩm (B2) và giá cả (C2) sẽ đc autofill từ dữ liệu trong Sheet1). Tóm lại như một chức năng mở rộng của AutoComplete nhưng được chia ra mỗi cột tương ứng. Theo như mình hiểu thì sẽ cần tạo ra những "định nghĩa" cho mỗi mã SP. Thú thật là ko rành về excel nên cũng ko rõ làm mấy cái này có phức tạp ko?! Chỉ biết rằng bên mình nhập dữ liệu kiểu copy&paste như hiện giờ vô cùng vất vả và nhầm lẫn nhiều vô cùng. Giải thích có phần hơi lằng nhằng. Mọi người thông cam.

    Rất mong các bạn giúp đỡ.

    Bạn nghiên cứu các hàm tham chiếu: VLOOKUP, HLOOKUP,MATCH; hàm IF…
    Tất cả các vấn đề của bạn, đối với Excel chỉ là "muỗi".
    Nếu cần trợ giúp, gửi file ví dụ lên nhé.

    Cám ơn bạn.

    Mình gửi đính kèm 2 files mẫu. 1 file doanh thu, 1 file hàng nhập. Điều mình cần là khi gõ mã SP 001 vào file doanh thu, thì tự động phần Mô tả và Giá sẽ đc paste từ file HangNhapDot1. Tương tự nếu có bán 1 mã 002 hay 080 thì nó cũng tự đối chiếu và copy từ file HangNhapDot1. Vậy excel có chức năng nào cho phép định nghĩa 1 mã SP có thể lấy dữ liệu từ những cột do mình định ra cho nó ko? VD với 2 file của mình, mình muốn định nghĩa khi gõ _001 thì nó sẽ lấy 001 (A2), 500000 (B2) và Ao khoac (C2) từ File HangNhapDot1 và paste vào 3 cột tương ứng là B2 (mã SP), F2 (giá) và C2 (mô tả) từ File DoanhThu

    Mong bạn giúp mình sớm. Vì cửa hàng mình hôm nào cũng phải ngồi gõ mỏi tay với hàng trăm mã SP 🙁 . Chỉ hi vọng làm 1 lần tất cả các mã để sau này excel nó làm giúp cho.

    Xem 2 file đính kèm nhé. Trong công thức VLOOKUP nếu bị lỗi thì kiểm tra lại tên file/đường dẫn có đúng chưa nhé

  15. hands says:

    Chào bạn Volga, tôi thấy công thức này rất hay, mình muốn áp dụng vào thực tế công việc của minh, nhưng mình nhận thấy một số điểm sau:
    1/ Bên sheet Dulieu, cột A mình thay thế dữ liệu ngày bằng các số phiếu thu, chi, nhập xuất.. như T01/01, C01/01, X02/01 … Qua bên sheet Kiemtra ở cell A1 nhập C01/01 … nó kg ra kết qủa? không hiểu???
    2/ cột A của sheet Dulieu kg được để trống, tôi thấy nếu để trống thì thì sẽ mất dữ liệu bên sheet Kiemtra
    3/ Trong thực tế kg phải lúc nào cột A của Dulieu được lấy làm tham chiếu, có thể các cột khác (VD cột B)
    Với những điều kiện trên bạn giúp mình chỉnh sửa công thức được kg? (mình đang sử dụng Excel 2003). Cảm ơn bạn
    Bài này của ở mục này trang 14 bài #109, File Nhahang.xls

    Gửi bác dongducnhiem@ :

    1/ Bên sheet Dulieu, cột A mình thay thế dữ liệu ngày bằng các số phiếu thu, chi, nhập xuất.. như T01/01, C01/01, X02/01 … Qua bên sheet Kiemtra ở cell A1 nhập C01/01 … nó kg ra kết qủa? không hiểu???

    Bác sửa công thức name dl thành :
    =OFFSET('du lieu'!$A$2:$G$2,,,COUNTA('du lieu'!$A$2:$A$24),)
    Vì trong công thức của Volga dữ liệu cột A là dạng number (date cũng là dạng number) nên Volga dùng Count để đếm, còn dữ liệu của bác là text nên bác phải dùng COUNTA để đếm –> Tổnh quát nên dùng COUNTA nếu dữ liệu cột A liên tục.

    2/ cột A của sheet Dulieu kg được để trống, tôi thấy nếu để trống thì thì sẽ mất dữ liệu bên sheet Kiemtra

    Cái này em chưa hiểu lắm, hiện tại cột A bên sheet dữ liệu đang là cột lấy điều kiện nếu bỏ dữ liệu cột A thì sẽ không có kết quả bên sheet kiểm tra –> Hiển nhiên rồi mà bác! Bác có ý kiến gì khác chăng?

    3/ Trong thực tế kg phải lúc nào cột A của Dulieu được lấy làm tham chiếu, có thể các cột khác (VD cột B)

    Lấy dữ liệu cột B để tham chiếu theo điều kiện thì bác name vt thành :
    =IF(OFFSET(dl,,1,,1)='Kiem Tra'!$A$1,ROW(INDIRECT("1:"&ROWS(dl))),"")
    Lấy Cột C,D,E.. thì bác sửa chỗ 1 thành 2,3,4…Bản chất chính là tham sô dịch chuyển cột (tham số thứ 3) trong hàm Offset của name dl bác ạ.
    Bác có thể tham khảo cách sử dụng của hàm Offset trên diễn đàn để ứng dụng linh hoạt hơn!
    Thanks!

    Cảm ơn bạn đã giải thích, sau một số bài lọc có điều kiện thì mình cũng hiểu ra nhiều vấn đề. Bây gời mình thấy nếu số liệu nhiều mà lọc bằng công thức thì lâu quá, đang tập tành nghiên cứu VBA.
    À! bạn cho mình hỏi, bạn có đọan code nào hòan chỉnh của Lập Sổ chi tiết từ NKC giống như bài "Tài liệu buổi học VBA thứ hai" không, hoặc biết nó nằm ở đâu thì chỉ giùm!
    https://www.giaiphapexcel.com/forum/showthread.php?76-Tài-liệu-buổi-học-VBA-thứ-hai.

    _Giới thiệu về Excel Object Model.
    _Function procedure và Sub procedure.
    _Các loại biến và cách khai báo biến. Phần này có thể sẽ không thể trình bày hết.
    -Giới thiệu về kết hợp Advance Filter và tạo sổ chi tiết từ nhật ký chung
    -Giới thiệu hàm kiểm tra mã số thuế.

    Chúc bạn luôn vui khỏe!

  16. hands says:

    Xin giúp lọc ra danh sách theo từng ngày trong một khoảng ngày tháng. Vidu: công việc A thực hiện từ ngày 10/07/11 đến 21/8/11 thì liệt kê ra tất cả các ngày trong khoảng trên.Tiếp tục tương tự với các công việc còn lại. Mình muốn tự xuất ra danh sách chứ không phải lọc từng ngày một. Mong các bạn giúp đỡ.

    Bạn muốn kết quả lọc ra đặt ở đâu? Bạn làm tay thử 1 công việc xem sao?
    Vả quá, đoán mò làm đại đỡ buồn.

  17. hands says:

    Chào mọi người!

    Mọi người xem giúp mình trong file mình đính kèm, mình dùng chức năng lọc Autofiler để lọc những dòng có ghi chú "in ra không thấy giao dịch" trong cột S nhưng không được.

    Rất mong nhận được sự giúp đỡ từ mọi người!

    Mình lọc thấy bình thường mà. Híc
    Thân

  18. hands says:

    Nhờ giúp dùng Dictionary lọc duy nhất với nhiều điều kiện

    Mình có bài về lọc duy nhất với nhiều điều kiện không biết có dùng Dictionary lọc được không mong các Anh Chị giúp. Nếu không thì với bài này nên dùng giải pháp nào là tối ưu. Mong mọi người giúp đở.
    Mình cám ơn rất nhiều ạ!

    Đây chỉ là một cách, còn tối ưu hay tối thui hay tối….gì đó thì mình hổng có biết
    Không dùng "Đít-to" ( mấy hôm nay em í làm mình phát ớn tới cổ rồi), dùng mảng để lọc & sắp xếp luôn
    Hình như đáp án của bạn nhập vào hơi….trật (vì còn trùng "Tiểu mục" 6549_ nếu đúng vậy thì bài giải mới đúng,còn không bài của mình "tèo" luôn)
    Thân

  19. hands says:

    Dear các anh, chị, em,

    Mọi người cho em hỏi chút, Excel có thể Lọc dữ liệu sao cho tất cả các cell có giá trị là 1 thì được sắp xếp vào giá trị 1 tương ứng hay Vd : Như giá trị 35 có các cell cùng giá trị thì sắp xếp dồn vào 1 ô có giá trị 35 tương ứng như (Bán buôn nông, lâm sản nguyên liệu (trừ gỗ, tre, nứa) và động vật sống- Bán buôn thức ăn và nguyên liệu làm thức ăn cho gia súc, gia cầm và thủy sản ; Nghiên cứu thị trường và thăm dò dư luận(trừ các loại thông tin Nhà nước cấm và dịch vụ điều tra); ….. ) —> Mục đích là để sau này nếu mình có nhu cầu add thêm dữ liệu vào thì tự động Excel sẽ cập nhật dữ liệu tương ứng với giá trị đúng.
    Rất mong mọi người giúp đỡ và chỉ giúp em công thức để làm được như vậy ạ ! Em xin chân thành cảm ơn forum ! <3
    Em xin gửi cả nhà file attach để mọi người xem chi tiết hơn.

    Mọi người giúp em với ạ ! Em đang tìm hiểu mà chưa nghĩ ra cách nào, nên đành nhờ các cao nhân giúp đỡ và cho em ý kiến ạ !

    [URL='https://www.giaiphapexcel.com/forum/attachment.php?attachmentid=94289&stc=1&d=1355973619'%5DGiayphepkd.xls

    Best regards,

    Bạn xem file xem đúng ý bạn chưa nhé:

    Public Function GPE(Rng As Range, DK As Variant) As String
    Dim Cll As Range, Tem As String
    For Each Cll In Rng
     If Cll = DK Then
     Tem = Tem & "-  " & Cll.Offset(, -1) & Chr(10)
     End If
     Next
     GPE = Left(Tem, Len(Tem) - 1)
    End Function

    Wow E cảm ơn anh Xuan.nguyen82, file đấy gần như đúng ý em rùi đó ạ. Tuy nhiên, còn 1 số điểm như :
    – CÔng thức ko thay đổi được, nếu em thay đổi là bị sai toàn tập ạ 🙁
    – Mục đích của em trong file giayphepkd này là để khi e cập nhật thêm các danh mục hàng hóa kinh doanh thì sẽ được tự động add thêm vào cell có giá trị tương ứng đó ạ.

    VD : E có gõ thêm giá trị 1 : fdhflahgfhg thì e ko biết làm sao để nó add thêm vào anh ạ :((
    Anh cố gắng giúp em với. Đây là lần đầu tiên em thấy hàm GPE 🙁 Em còn yếu trong Excel lắm ạ hixhix 🙁

    Bạn xem file đính kèm

    1.Hàm tên là GPE, Trong đó tham số thứ nhất là vùng dữ liệu chứa điều kiện lọc, tham số thứ hai là điều kiện lọc, Tham số thứ nhất chỉ chọn trên 1 cột. Vùng dữ liệu theo file là cột D.

    2.Bài làm đã thỏa mãn mục đích của bạn, giờ bạn thử thêm dữ liệu vào cột C, D và nhập số vào cột G, xem kết quả ở cột H.

    3. Bạn seảrch cụm từ: Các hàm tự tạo cho Worksheet tại diễn đàn GPE, bạn sẽ hiểu hơn các hàm như thế này.

    Wow E cảm ơn anh Xuan.nguyen82, file đấy gần như đúng ý em rùi đó ạ. Tuy nhiên, còn 1 số điểm như :
    – CÔng thức ko thay đổi được, nếu em thay đổi là bị sai toàn tập ạ 🙁
    – Mục đích của em trong file giayphepkd này là để khi e cập nhật thêm các danh mục hàng hóa kinh doanh thì sẽ được tự động add thêm vào cell có giá trị tương ứng đó ạ.

    VD : E có gõ thêm giá trị 1 : fdhflahgfhg thì e ko biết làm sao để nó add thêm vào anh ạ :((
    Anh cố gắng giúp em với. Đây là lần đầu tiên em thấy hàm GPE 🙁 Em còn yếu trong Excel lắm ạ hixhix 🙁

    Bạn ơi, nếu như giá trị là 1 có 3 kiểu như vầy:

    1 – Mục ABC

    1 – Mục ABC

    1 – Mục ABC, Mục DEF

    thế thì khi thông qua hàm thì sẽ lọc như thế nào?

    a) Nếu có trùng mục thì loại trừ, như vậy thì kết quả hàm sẽ là: Mục ABC, Mục DEF

    b) Lấy tất cả những gì mà giá trị 1 có, kết quả sẽ là: Mục ABC & Mục ABC & Mục ABC, Mục DEF
    Tạm thời tôi thiết kế cho bạn nếu mục nào bị trùng hoàn toàn thì sẽ không gộp lại, còn không thì sẽ "gom về một mối"

    Hàm GomDuLieu:

    Function GomDuLieu(ByVal LookupValue As Variant, _
                       ByVal TableArray As Variant, _
                       ByVal ColIndexNum As Long) As String
    
    If IsArray(TableArray) Then
    
    Dim c As Long, r As Long, _
                KeyArr As Variant, Tmp As Variant, MyTmp As Variant
    
    KeyArr = TableArray
    
    For r = LBound(KeyArr, 1) To UBound(KeyArr, 1)
                      If KeyArr(r, ColIndexNum) = LookupValue Then
                            Tmp = Trim(KeyArr(r, 1))
                            If Len(Tmp) Then
                                  Tmp = vbLf & "* " & Tmp
                                  If InStr(1, MyTmp, Tmp) = 0 Then
                                        MyTmp = MyTmp & Tmp
                                  End If
                            End If
                      End If
                Next
    
    If Len(MyTmp) Then GomDuLieu = Replace(MyTmp, vbLf, "", 1, 1)
          End If
    
    End Function

    Cách dùng:

    =GomDuLieu(Giá trị tìm kiếm, Bảng tham chiếu, Số cột tham chiếu)

    (gần giống hoặc na ná như dùng hàm VLOOKUP, nhưng ngược với hàm VLOOKUP thay vì cột đầu trong bảng chứa điều kiện dò tìm, thì cột đầu ở đây lại là cột chứa giá trị kết quả, còn số cột tham chiếu chính là cột chứa điều kiện cần tìm).

    Xem file để biết thêm chi tiết nhé.

    ============================================

    To: Xuân Nguyễn: Tốt lắm, trong thời gian qua rất tiến bộ đấy!

    Sao lại có người lập dữ liệu rắc rối vậy ta?
    Nếu tất cả khoảng 100 từ giống nhau thì ở không đâu mà nhập lại khi mà nó đã có, còn nếu copy cái cũ lại thành cái mới thì lại… ẹc.. ""bốn lơn"

    Có lúc cũng không biết "ba lơn" hay "bốn lơn", nhưng đôi khi dữ dài "vằng vặc" khiến người ta quên rằng đã từng nhập vào rồi, song lại nhập tiếp, hoặc mục này nối tiếp mục kia (kiểu trắc nghiệm), nên không thể kiểm soát hết được, ta lập trình thì phải lường trước các kiểu dữ liệu để làm kiểu tổng quát, đừng như cái mà Nhà nước ta đang làm là "sai đâu sửa đó", sẽ vừa mất thời gian, vừa lãng phí công sức và tiền của của nhân dân, thế mới gọi là có "tầm" được, chứ đừng để người ta nói mình cũng có "tầm", nhưng là "tầm bậy" thì ẹc … ẹc …

    Riêng sao mình chẳng thích cách mà các tác giả "quăng" lên câu hỏi xong rồi phó mặc người hướng dẫn muốn làm gì thì làm, chẳng có một chính kiến nào phản hồi để làm tiếp hay không.

  20. hands says:

    Em có file đính kèm mong AC giúp lọc dữ liệu!!!!

    Bạn xem file, có dùng macro

    Bạn HYen17 cho mình hỏi sao mình không chọn điều kiện nào ở cell H2 và I2 thì nó phải không lọc chứ. Đằng này nó hiện luôn bảng dữ liệu ra luôn. Mong bạn chỉnh dùm.
    Các AC cho em hỏi, sao em chèn thêm dòng tiêu đề ở trên cùng(Row 1) và sửa code thành B3, H2:H3, H2:I3, G5:K5 mà sao code chạy bị lỗi?????

    (*) Không chọn, ex. nó hiếu là không lọc; Có nghĩa là lấy tất cả (Trường hợp tại )

    Còn trường hợp sau thì trong danh sách đó có loại hóa đơn đó thì nó lọc; Máy mà!

    Còn muốn khác thì thêm vài dòng lệnh như sau:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range

    Set Rng = .CurrentRegion
    If Not Intersect(Target, ) Is Nothing Then
    Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "H1:H2"), CopyToRange:=Range("G4:K4"), Unique:=False
    ElseIf Not Intersect(Target, ) Is Nothing Then
    If .Value = "" Then '<=|'
    .CurrentRegion.Offset(1).Clear: Exit Sub
    End If '<=|'
    Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "H1:I2"), CopyToRange:=Range("G4:K4"), Unique:=False
    End If
    End Sub

    Bạn HYen17 giải thích hộ mình #718 với(Chèn thêm dòng trên cùng mà không có tiêu đề thì code chạy bình thường). Và nếu thêm điều kiện nữa thì code viết làm sao Ah!(Ví dụ như thêm DK : Khách hàng)

    Ở bài trên, trong cde không có để bạn sửa thành , mà chỉ có ; Lúc í cần sửa thành

    Ở bài dưới: Nếu thêm điều kiện lọc, thì thêm bên fải vùng chuẩn để lọc bây chừ là tiện hơn;
    Bạn thêm ô đầu cột tên trường [Khách hàng] & ô dưới ngay ô này là điều kiện để lọc trường tna2y

    Những mong hữu ích cho bạn!

    Trong code của bạn HYen17 có đoạn này đó thầy:

    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim Rng As Range
    
    Set Rng = [B3].CurrentRegion
     If Not Intersect(Target, [H2]) Is Nothing Then
    
    Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "H1:H2"), CopyToRange:=Range("G4:K4"), Unique:=False
    
    ElseIf Not Intersect(Target, [I2]) Is Nothing Then
    
    Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "H1:I2"), CopyToRange:=Range("G4:K4"), Unique:=False
    
    End If
    End Sub

    Nếu thêm điều kiện khách hàng(J1) thì phải thêm một cái ElseIf (J2) nữa hả Thầy.
    Ý của em là em thêm dòng tiêu đề "Lịch phát hàng " ở Row1 chứ không phải dòng tiêu đề của advanfilter. Mà bài của em dùng phương thức Find được không Thầy(Không dùng Advanfilter).Mong Thầy và Các AC chỉ giáo.
    Sao em thêm dòng tiêu đề "Nhật ký bán hàng" mà code chạy bị lỗi. Mong các AC sửa dùm. Mong các AC xem file thứ 2. (Em đưa lộn file) File đính kèm đây ah:[URL='www.giaiphapexcel.com/diendan/attachments/selection1-xls.123227/']View attachment Selection1.xls

    File nào vậy bạn; Làm ơn bỏ bớt 1 file đi, như vậy bạn sẽ thu hồi được 1 ít tài nguyên nữa kia đấy!

    File dưới cùng đó Thầy. Em không biết cách bỏ file.

    Bạn xem & đối chiếu giữa 3 trường hợp

    Để tháo file đã tải thì tại CS "Tải file từ mày", nếu ta đã đưa file trước đó thì đâu đó trên CS này sẽ có nút "Remove"
    để bạn tìm cách ấn vô nó. (& làm việc này chỉ có sướng trở lên mà thôi!)

    Cám Ơn bạn HYen17 mình đã biết remove file, và cám ơn bạn đã sửa code.
    Mà sao mình thấy kỳ kỳ là mình cũng chỉnh Current Region xuống là B3 mà chạy lỗi,còn bạn chỉnh xuống là B5 mà được ??????

  21. hands says:

    Tôi muốn lọc dữ liệu theo nhiều điều kiện ra thành 1 bảng kết quả với các dữ liệu của bảng tôi đã tổng hợp và ở cột "Ghi chú"
    Giá trị lọc sẽ là TỔNG CÁC KHỐI LƯỢNG (CỘT N) CÓ CÙNG TÊN Ở CỘT GHI CHÚ (CỘT O)
    +) Mục QUYẾT TOÁN PHẦN MÓNG từ dòng 23 đến dòng 139. Trong hạng mục này thì có các phần nhỏ là Khối 1 – Phần ngầm ; Khối 2 – Phần ngầm (Nhà đặt thiết bị) ; Bể phốt ; Khối 3 – (Lò đốt rác). Trong các phần nhỏ này có các đầu việc nhỏ mà tôi đã ghi chú bằng tay ở cột "Ghi chú".
    +) Tương tự mục QUYẾT TOÁN PHẦN THÂN (TỪ COS + 0.00 – COS +8.00M) từ dòng 140 đến dòng 387, ………
    +) Tương tự mục THANH TOÁN PHẦN THÂN (TỪ COS +8.00 M – HOÀN THIỆN MÁI) từ dòng 388 đến dòng 985, ….
    Mong các thành viên giúp tôi lọc và cách lọc file này để tôi có thể áp dụng (sau khi chỉnh sửa thêm bớt tại cột "Ghi chú").

    KHông biết lọc ra đâu, phần giải thích yêu cầu hơi bị khó hiểu.
    Thử chạy code trong file này coi sao

    Rất cảm ơn bác, bác làm qua nhanh luôn, hihi
    1) Em muốn các tiêu đề các mục ví dụ QT PHẦN MÓNG, Khối 1 – Phần ngầm, …. được tô đậm màu đỏ và canh lề giữa cell đó (để dễ nhận biết).
    2) Em muốn thêm cột Đơn vị vào cạnh cột B để không phải dò tìm lại đơn vị ở bảng KLHT. Vì tổng tất cà các khối lượng cùng tên sẽ có cùng đơn vị mà bác.
    Bác giúp em sữa code như 2 ý trên với ạ.

    1/ Chẳng có "dấu hiệu" gì ở cột O để "bắt" Excel biết để tô màu các dòng theo yêu cầu.
    2/ Thêm cột ĐV thì được.
    Bạn chỉ dấu hiệu nào nhận biết để tô đậm, canh giữa đi.

    1) Em ví dụ đó là Nếu O23 có dữ liệu + N23 không có dữ liệu thì lọc ra bên sheet GPE là tô đậm ….
    Cám ơn bác ạ

    Tô màu là đủ phân biệt rồi.

    Bác Bate cho em hỏi
    Trong code thì chỗ nào để biết là lấy số liệu từ cột N. Để có thể em chuyển từ cột N sang cột K, L, M …?

    Biết phải nói sao đây, xem ghi chú trong các dòng code đi.

    With Sheets("KLHT")
    sArr = .Range(., ..End(xlDown)).Resize(, 14).Value 'Tu cot B lay sang phai 14 cot, cot 14 la cot O
    End With
    ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
    For I = 1 To UBound(sArr, 1)
    If sArr(I, 14) <> Empty Then
    If sArr(I, 2) = Empty Then
    Dic.RemoveAll
    K = K + 1
    dArr(K, 1) = sArr(I, 14) 'lay du lieu cua cot O vao mang dArr
    Else
    Tem = sArr(I, 14)
    If Not Dic.Exists(Tem) Then
    K = K + 1
    Dic.Add Tem, K
    dArr(K, 1) = sArr(I, 14) 'Day la Cot O
    dArr(K, 2) = sArr(I, 2) 'Day la cot C
    dArr(K, 3) = sArr(I, 13) 'Day la cot N
    Else
    dArr(Dic.Item(Tem), 3) = dArr(Dic.Item(Tem), 3) + sArr(I, 13)
    End If
    End If
    End If
    Next I

    Vậy để chuyển cột tính toán sang cột M thì sửa sArr(I,13) thành sArr(I,12) ở 2 vị trí phải không bác?

    Copy thành 1 file khác rồi cứ "vọc banh chành", quan sát sự thay đổi kết quả, hay gì gì đó, từ từ sẽ "thấm" mà.
    Khi bị lỗi mà không biết vì sao thì đóng file, không Save, mở lại, làm lại kiểu khác.
    Híc! Tui cũng phải "mò mẫm, sờ sẫm, rờ rẫm" kiểu như vậy thôi, không có trường lớp nào cả.

    – Làm theo Thầy Ba Tê nhưng học vẫn chưa thông, vọc mà chẳng được đành post bài mong được mọi người xem giúp

    Sub DS_SV()Dim I As Long, J As Long, K As Long, sArr(), dArr(), Lop As String, Ws As Worksheet
    'Set Dic = CreateObject("Scripting.Dictionary")
    With Sheets("DS_SV")
        Lop = .[G10].Value
    End With
    For Each Ws In Worksheets
        If Ws.Name Like "P_*" Then
          sArr = Ws.Range(Ws.[A11], Ws.[A65000].End(xlUp)).Resize(, 7).Value
         If sArr(I, 7) = "Lop" Then
         For I = 1 To UBound(sArr, 1)
                            '------> code cho nay chua duoc
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To 7
                dArr(K, J) = sArr(I, J)
            Next J
        Next I
        End If
    
    End If
    Next Ws
    With Sheets("DS_SV")
        .[A11].Resize(K, 7).ClearContents
        .[A11].Resize(K, 7).Value = dArr
        .[A11].Resize(K, 13).Borders.LineStyle = xlNone
        .[A11].Resize(K, 13).Borders.LineStyle = xlContinuous
        .[A11].Resize(K, 13).Borders(xlInsideHorizontal).Weight = xlHairline
        '.[O11].Resize(K, 2).Borders(xlInsideVertical).LineStyle = xlNone
    End With
    'Set Dic = Nothing
    End Sub

    Mọi người giúp em chỉ ra cho em còn thiếu trong code trên với!.

    Làm theo chỗ nào vậy?
    Sub DS_SV()
    Dim I As Long, J As Long, K As Long, sArr(), dArr(1 To 1000, 1 To 7), Lop As String, Ws As Worksheet
    Lop = Sheets("DS_SV")..Value
    For Each Ws In Worksheets
    If Ws.Name Like "P_*" Then
    sArr = Ws.Range(Ws., Ws..End(xlUp)).Resize(, 7).Value
    For I = 1 To UBound(sArr, 1)
    If sArr(I, 7) = Lop Then
    K = K + 1
    dArr(K, 1) = K
    For J = 2 To 7
    dArr(K, J) = sArr(I, J)
    Next J
    End If
    Next I
    End If
    Next Ws
    With Sheets("DS_SV")
    ..Resize(1000, 7).ClearContents
    ..Resize(1000, 13).Borders.LineStyle = xlNone
    ..Resize(K, 7).Value = dArr
    ..Resize(K, 13).Borders.LineStyle = xlContinuous
    ..Resize(K, 13).Borders(xlInsideHorizontal).Weight = xlHairline
    End With
    End Sub

    – Dạ em học theo cách như câu nói trong bài # 741 của Thầy

    [COLOR=#000000]Copy thành 1 file khác rồi cứ "vọc banh chành", quan sát sự thay đổi kết quả, hay gì gì đó, [/COLOR]

    – Em cảm ơn Thầy code chạy như ý rồi a!. Nhìn code của Thầy em lại tự hỏi sao mình cứ loay hoay mà trong suy nghĩ lại cứ muốn phức tạp vấn đề lên.

  22. hands says:

    Nhìn thấy mấy chỗ này, còn gì nữa thì chưa biết

    Sub DS_SV()Dim I As Long, J As Long, K As Long, sArr(), dArr(), Lop As String, Ws As Worksheet
    'Set Dic = CreateObject("Scripting.Dictionary")
    With Sheets("DS_SV")
        Lop = .[G10].Value
    End With
    For Each Ws In Worksheets
        If Ws.Name Like "P_*" Then
          sArr = Ws.Range(Ws.[A11], Ws.[A65000].End(xlUp)).Resize(, 7).Value
         [U]If sArr(I, 7) = "Lop" Then[/U] --->Lúc này chỉ số I đang =0, đổi thành sArr(1,7). Tham số "Lop"--->Lop
         For I = 1 To UBound(sArr, 1)
    
    K = K + 1
            [U]dArr(K, 1)[/U] = K ---> dArr chưa khai báo kích thước
            For J = 2 To 7
                dArr(K, J) = sArr(I, J)
            Next J
        Next I
        End If
    
    End If
    Next Ws
    With Sheets("DS_SV")
        .[A11].Resize(K, 7).ClearContents
        .[A11].Resize(K, 7).Value = dArr
        .[A11].Resize(K, 13).Borders.LineStyle = xlNone
        .[A11].Resize(K, 13).Borders.LineStyle = xlContinuous
        .[A11].Resize(K, 13).Borders(xlInsideHorizontal).Weight = xlHairline
        '.[O11].Resize(K, 2).Borders(xlInsideVertical).LineStyle = xlNone
    End With
    'Set Dic = Nothing
    End Sub

    còn gì nữa thì chưa biết

    Thử thêm cái này đi coi thế nào

    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Address = "$G$10" Then
    Dim sh As Worksheet, Rng As Range
    .ClearContents
    For Each sh In Worksheets
    If sh.Name <> "DS_SV" Then
    sh.ShowAllData
    Set Rng = sh..CurrentRegion
    Rng.AutoFilter 7, Target
    Rng.Offset(1).Copy .End(3).Offset(1, -6)
    End If
    Next
    Range("A11", .End(3)) = [row(a:a)]
    End If
    End Sub

    Thử thêm

    – Code Anh Hải cho kết quả đúng ý em, Anh dùng cách AutoFilter rồi copy sang có đúng không ạ!., đối với người mới vọc code như em để hiều được vài dòng code ngắn gọn cũng phải có thời gian tìm hiểu, chưa biết khi nào thì viết được. Vì cứ sang một dạng khác là đầu óc lại tối thui chẳng nhìn ra vấn đề !$@!!. Hiện em mới tìm hiểu cách viết sử dụng mảng mà vẫn còn lơ mơ lắm ||||||||||.

    Dùng AutoFilter cũng giống như đang làm thủ công vậy đó. Filter xong rồi cọp rồi dán. Chỉ có điều là mình bắt code làm thôi. Dữ liệu ít thì cách này coi như xài được. Nếu nhiều phải dùng mảng cho chắc ăn.
    Nói chung là người xài phải biết lúc nào xài dao nhỏ, lúc nào xài dao phay hoặc búa rìu

  23. hands says:

    – Cách đây không lâu em có nhờ viết code lọc dữ liệu phục vụ công việc. Do dự liệu chưa hết nên bổ sung thêm tính toán và em có sửa trong code. Do chưa nắm vững hết được về mảng vì vậy code em sửa lại tính toán ra số (âm). Nhân đây Anh Hải và các thành viên khác giúp em, đồng thời chỉ ra giúp em sao lại bị như vậy. Em chẳng biết nên post bài ở chỗ nào mà mở chủ đề thì có khi lại đã có.

    Public Sub gio_chuaxep_II()Dim sArr(), Arr1(), Arr2(), I As Long, J As Long, Num As Long
    sArr = Range("D11:AL501").Value
    ReDim Arr1(1 To UBound(sArr, 1), 1 To 1)
    ReDim Arr2(1 To UBound(sArr, 1), 1 To 1)
    For I = 1 To UBound(sArr, 1)
        Num = 0
        For J = 8 To UBound(sArr, 2)
            If sArr(I, J) > 0 Then Num = Num + sArr(I, J)
        Next J
        If Num > 0 Then Arr2(I, 1) = sArr(I, 1) - [COLOR=#0000cd][/COLOR]([COLOR=#0000cd]sArr(I, 35)[/COLOR] + Num)      ------> Có lẽ phải bổ sung thêm điều gì đó tại chỗ màu xanh
        If sArr(I, 2) <> "" Or sArr(I, 1) - Num = 0 Then Arr1(I, 1) = "x"
    Next I
    [AM11:AM501].Value = Arr2
    [E11:E501].Value = Arr1
    End Sub

    For J = 8 To UBound(sArr, 2)
    If sArr(I, J) > 0 Then Num = Num + sArr(I, J)
    Next J

    Sau khi kết thúc For J thì Num đã cộng luôn cột AL vào rồi.
    Dòng dưới chỉ cần:
    If Num > 0 Then Arr2(I, 1) = sArr(I, 1) – Num
    If Num > 0 Then Arr2(I, 1) = sArr(I, 1) – (sArr(I, 35) + Num)
    Trừ thêm sArr(I,35) – tức cột AL – 1 lần nữa nên ra số âm là phải rồi.

    Điều này chứ tỏ rằng mảng và for — next Em vẫn cần phải đọc kỹ và tự có bài tập để tự luyện -+*/-+*/-+*/

  24. hands says:

    Em làm theo cách dùng Advanced nhưng có vấn đề là ở bảng 1 em có thể thêm bớt dữ liệu vậy thì mỗi lần làm vậy lại phải dùng lại Advanced có cách nào khi thay đổi ở bảng 1 thì bảng 2 tự thay đổi không ạ vì bảng 2 em thêm vài cột để tính toán cho kết quả lọc được và có 1 lỗi nhỏ khi làm thì dữ liệu nh của em nó chỉ hiện 1 dòng trong khi ở bảng là 2 dòng còn các dữ liệu khác đều ổn, không biết em sai ở đâu ạ,

    Đưa file từ đầu thì có kết quả lâu rồi.

  25. hands says:

    Chào các anh chị trên diễn đàn
    Xin anh chị giúp code lọc dữ liệu thỏa điều kiện tại ô B1, như yêu cầu mình ghi chú trong file
    Cám ơn các anh chị rất nhiều

    Public Sub LOC()
    Dim Sarr(), dArr(), i As Long, k As Long, TMP As String
    With Sheet1
    Sarr = .Range(., ..End(xlUp)).Resize(, 6).Value2
    End With
    ReDim dArr(1 To UBound(Sarr, 1), 1 To 6)
    With Sheet1
    TMP = UCase(.)
    For i = 1 To UBound(Sarr, 1)
    If UCase(Sarr(i, 2)) Like "*" & TMP & "*" Then
    k = k + 1
    For j = 1 To 6
    dArr(k, j) = Sarr(i, j)
    Next
    End If
    Next i
    ..ClearContents
    If k Then
    ..Resize(k, 6) = dArr
    ..Resize(k, 5).Sort key1:=.
    ..NumberFormat = "#,##0"
    End If
    End With
    End Sub
    Alt+F11, chép code trên vào :Insert/ Module
    Alt+F11, chép đoạn dưới vào chính sheet1 (kích đúp vào sheet1)

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then LOC
    End Sub

  26. hands says:

    Chào các bạn
    Tôi có 1 file và xuất ra 1 bảng lấy dữ liệu bên 1 sheet khác qua rồi
    Bây giờ tôi muốn làm 1 báo cáo để gộp những dữ liệu trùng

    Nếu đơn giá khác nhau thì cộng lại và lấy trung bình cộng
    Nếu đơn giá bằng nhau thì cột số lượng cộng dồn lại với nhau

    Phần thành tiền: lấy đơn giá nhân số lượng hiện tại.

    Tiền trước thuế thì lấy tổng số tiền chia cho 1.1
    Tiền thuế thì lấy Tiền trước thuế nhân cho 10%

    Rất mong thầy và các bạn giúp đỡ có

    Tôi rất cần báo cáo để thống kê nhưng chưa làm được

    trân trọng

    Nguyễn Tấn

    File dữ liệu đính kèm
    docs.google.com/spreadsheets/d/1_XAPv03dtXBdcyaKE5lNXhnOxOrVOSAh4LDKc_uRBEQ/edit?usp=sharing

    Xem tạm như file được chưa?–=0–=0–=0–=0–=0
    Nút Macro đó là Add CommandButton
    Muốn xem lệnh thì ấn Alt + F11 ra xem,

    Khi chọn mã khách hàng ở ô màu vàng, thì click vào cái nút đó để nó show ra các dòng có dữ liệu nha.

    Cái đó chỉ hide mấy dòng dữ liệu = 0, thôi. không muốn show thì cọn chả đoạn dòng đó Unhide thì ra bình thường.

    Mình đã hiểu, cho mình hỏi thêm chút nữa nhé
    Nếu mã hàng = chữ "S" thì lấy số lượng bên cột "T" được không?
    Nếu được bạn chỉnh cho mình với, yêu cầu trên mình quên để vào mất
    cảm ơn rất nhiều

    Sửa lại công thức cột số lượng thành:

    E9 =IFERROR(SUMIFS(IF($C9="S";THOP!$T$5:$T$2000;THOP!$N$5:$N$2000);THOP!$I$5:$I$2000;$B9;THOP!$J$5:$J$2000;$C9);0)

    Nhớ dấu ; hay dấu , trong công thức là tùy máy bạn. máy tôi dấu ; –=0–=0–=0–=0–=0–=0

  27. hands says:

    Lọc dữ liệu theo nhiều điều kiện

    như thế này mình có file data dữ lieu được chia ra theo từn ngày, mổi ngày gồm có nhiều ca khác nhau( cụ thể có 3 ca). mình muốn lọc ra từng khách hang từ ngày 1 đến ngày 10 chẳng hạn thì phải sử dung bộ lọc như thế nào cho đúng. mình thử sử dung bộ lọc nâng cao nhưng kết quả đưa ra thấy lung tung quá, mình e là do điều kiện ngày tháng bộ lọc không hiểu.
    vậy nhờ các anh chị giúp đỡ cho mình với. rất cảm ơn

    Đối với bài toán lọc nâng cao, quan trọng nhất bạn phải hiểu được cấu trúc TRUE/FALSE
    Đối với bài toán của bạn tôi làm như sau:
    1. Tại Cell O2, tôi dùng công thức điều kiện: =AND($C5>=$O$6,$C5<=$P$6,$G5=$Q$6)
    2. Dùng công cụ Advanced Filter với các tham chiếu như sau:
    – Chọn Copy to another location
    – List range: $C$4:$M$48
    – Criteria range: $O$1:$O$2
    – Copy to: $S$4:$AC$4 (Bạn có thể lấy các trường dữ liệu tùy ý)
    Chúc bạn thành công!

  28. hands says:

    Lọc ra ds nhân viên ko bấm thẻ dựa vào file ds tổng số nhân viên và file ds bấm thẻ

    Mình có một câu hỏi nhờ các bạn giúp đỡ:
    Ví dụ: Mình có 1 file danh sách công nhân viên bấm thẻ hàng ngày down load tờ hệ thống chấm công và 1 file danh sách tổng số nhân viên công ty. Có cách nào lọc ra những nhân viên ko bấm thẻ dựa vào 2 file ở trên ko cám ơn (Vì số lượng công nhân viên nhiều làm thủ công thì rất lâu) Cám ơn!

    Một cách dùng cột phụ

  29. hands says:

    Ai viết giúp em code VBA trong Excel để tổng hợp số liệu theo từ SHEET_TONG tạo ra các sheet mới cho mỗi quận , mỗi quận là một sheet theo mẫu ở sheet bieu1. Quận tân bình em đã làm tay và đã tổng hợp xong theo mẫu ở biểu sheet bieu1, còn lại 2 quận nữa em chưa làm chưa mọi người viết giùm em , ở đây là em đưa lên 3 quận, để nhờ mọi người viết giùm, thật ra số liệu nó rất lớn, còn nhiều quận khác nữa, em chỉ đưa lên 3 quận, nhờ mọi người viết giùm em để tiện cho việc tổng hợp. Trong sheet SHEET_TONG còn có nhiều quận khác nữa.Hihi
    Cảm ơn mọi người nhiều.
    Nếu cái này làm mất nhiều thời gian để viết code, thì em sẽ cảm ơn và hậu tạ.
    file nè

    Chỉ có thể giúp bạn tách dữ lieu từ sheet tổng hợp ra các sheet khác theo từng quận (dulieu cột k)
    còn làm theo mẫu thì nói that tôi không hiểu quy tắc file của bạn nên ko giúp được bạn tự làm them nhé

  30. hands says:

    Ai giúp mình lọc dữ liệu này với Ạ!
    Bạn nào giỏi VB giúp mình vơi!

    Bạn kt xem thế nào (VBA: mau(1)).
    Mình nghĩ nếu số kho ko quá nhiều thì nên làm thủ công 1 chút, ở đây có thể lợi dụng pivot (mau.xlsx)

  31. hands says:

    Các Anh Chị giúp em lọc dữ liệu của sheet xuất và nhập giúp em với, em đã filter loại từng loại sản phẩm rồi, nhưng kẹt 1 cái là còn theo số LOT (trong file đính kèm) nữa, em đang cần là số tổng của từng loại sản phẩm đi kèm với số LOT, ví dụ như trong sheet nhập khi lọc 10009 và LOT 6032 thì nó sẽ ra số lượng ở sheet nhập, sau đó lấy số lượng đó trừ đi số lượng xuất trong sheet xuất thì sẽ ra số lượng còn lại trong sheet nhập. (theo yêu từ sếp em là không được chỉnh sửa số liệu từ cột A > F, còn lại thoải mái)

    Cám ơn Anh/Chị nhiều và chúc Anh/Chị năm Bính Thân tràn đầy sức khỏe và hạnh phúc! }}}}}}}}}}}}}}}

    1/ Bạn copy cột C,D sang cột I,J, Dùng Remove Duplicates sẽ có được các cột I+J không trùng.
    2/ Dùng SumIfs() để tính SL các cột Nhập, Xuất, Tồn như trong file.
    –> Không đụng gì đến cột A–> F.

    Cám ơn Anh Ba Tê nhiều nhiều, đúng như ý em luôn }}}}} nhưng Anh ơi, cho em hỏi là Anh hide trong sheet Xuất từ dòng 2 > 57, 57 > 75 và 75 > 98 làm gì vậy Anh, tại e sort dữ liệu mấy sản phẩm khác (01,02,05,12) ra không được ạ ^^

    Tôi chỉ dùng Filter để kiểm tra kết quả thôi.
    Bạn vào Data, bấm nút Filter 1 lần nữa là xong.

  32. hands says:

    Xin hỏi về thống kê năng lực thợ hàn.
    Em có việc xin trợ giúp của các bác trên này ạ.
    Hiện tại em đang cần thống kê năng lực của 1 người thợ, xin xem file đính kèm ạ.
    Yêu cầu tại sheet "THONG KE" với mỗi một mã số thợ " ID.Welder" từ cột G đến cộ J so sánh với Cột J tại sheet "tong hop" nếu có giá trị tương ứng với cột nào thì đánh dấu X ở cộ đó còn lại bỏ trống. Tương tự với các dữ liệu đưa ra từ cột K đến cột P so sánh với cột L trong sheet "tong hop" nếu trùng kí tự thì đánh dấu X ở cột tương ứng. Em đánh dấu bằng tay 1 trường hợp cụ thể để các bác dễ hiểu–=0.
    Và cuối cùng là tính tổng số "X" có được trong 1 cột ở cuối bảng.
    Mong các các để tâm giúp đỡ ạ.
    Xin cảm ơn!

    Làm bỡi macro đó nha!

    Cảm ơn bác ạ. Em nghiên cứu được rồi ạ. Nhưng bây giờ em đang vướng một khó khăn khác là em muốn hiện toàn bộ thông tin của một người thợ theo mã số thợ với dữ liệu lấy từ sheet 3 đưa sang sheet 1 ( có mã số có 6 dòng thông tin nhưng có mã số chỉ có 1 dòng thông tin). Bác xem giúp em với ạ. Cảm ơn bác trước.

    Chỉ có 1 file excel duy nhất thui ạ. Nhưng mỗi lần đưa có update những gì đã học được từ diễn đàn ạ. Thực chất chỉ có 1 file. Làm vướng đến đâu hỏi đến đấy ạ. –=0

    Tôi dùng cột phụ bạn xem file nhé

    Cảm ơn bác nhiều. Có cách nào không dùng cột phụ được không ạ? vì trong bảng đã dùng 1 cột phụ rồi, dùng nhiều em sợ loạn đao pháp.-+*/

    Có chứ. Ko dùng cột phụ thì đặt name. Nhưng cột phụ mình để ngoài khu vực in và nhìn thì có ảnh hưởng gì đâu
    Không phụ cũng được nhưng sẽ nặng File đấy.

    Bạn dùng công thức mảng sau, kết thúc Ctrl + Shift + Enter sau đó thay phần đỏ đỏ bằng cột tương ứng bên sheet nguồn nhé

    =IF(COUNTIF('Welder certificate'!$H$6:$H$500,$F$4)>=ROW(1:1),INDEX('Welder certificate'![B][SIZE=4][COLOR=#ff0000]I[/COLOR][/SIZE][/B]$6:[SIZE=4][COLOR=#ff0000][B]I[/B][/COLOR][/SIZE]$500,SMALL(IF('Welder certificate'!$H$6:$H$500=$F$4,ROW(INDIRECT("1:"&ROWS('Welder certificate'!$H$6:$H$500))),""),ROW(1:1))),"")

    Bác hướng dẫn em món đặt name đi. Món này mới. Thực ra dùng cột phụ em cũng tính đến rồi, cũng học một bác trên diễn đàn. Vấn đề em mong muốn là có một cách khác để xử lý sau này còn áp dụng vào việc khác. hì hì. Cảm ơn bác nhé.–=0

    Mình góp vui một công thức nửa nhé. Để cho nhẹ mình sửa chút đỉnh trong sheet Thong tin tim kiem. Bạn xem file đúng ý không?

    Thật tuyệt vời. Cảm ơn bác nhé. Cơ mà em tìm lác mắt mà không biết bác sửa cái chi chi ở file của em. hì hì. Kết quả thật là vi diệu. Nhưng có cách nào để những ô trống không có số 0 không ạ.

    Mình sửa phần tiêu đề của các cột cho giống với sheet dữ liệu gốc. Còn muốn không hiển thị số 0 thì kết hợp với hàm if là ra rồi bạn, hoặc định dạng để không cho hiển thị số 0.

    Cảm ơn bác nhiều. Có cách nào không dùng cột phụ được không ạ? vì trong bảng đã dùng 1 cột phụ rồi, dùng nhiều em sợ loạn đao pháp.-+*/

    Sử dụng chiêu học được của bạn GiaiPhap, cám ơn bạn GiaiPhap
    tạo thêm list của ô mã số

  33. hands says:

    Chào bạn
    Mình đang gặp một vấn đề nhờ bạn hỗ trợ giúp

    Mình muốn hiển thị tất cả các dòng có dữ liệu từ cột D đến cột G
    những dòng không chứa dữ liệu cả 4 cột đó sẽ bị ẩn đi

    – một trong các dòng đó có dữ liệu điều được hiện thị ra

    rất mong nhận được quan tâm

    Viết bằng command nhưng chưa hiểu lắm

    sheet báo cao Tháng

    File đính kèm

    Viết ngắn gọn thì như này:

    Private Sub CommandButton1_Click()
    Dim Rng As Range, Cll As Range
    Set Rng = Range("D14:D44")
    Application.ScreenUpdating = False
    Rng.EntireRow.Hidden = False
    For Each Cll In Rng
        If Application.Sum(Cll.Resize(, 4)) = 0 Then Cll.EntireRow.Hidden = True
    Next Cll
    Application.ScreenUpdating = True
    End Sub

    P/s: tôi thấy trong file đã có code, thế bạn muốn trợ giúp cái gì nữa???

  34. hands says:

    em có 1 file muốn đếm dữ liệu tại cột A theo giờ tại cột B.
    nếu nv xuất hiện >=2 lần thì chỉ tính 1.
    các bác cho em hỏi có hàm nào lọc được như vậy không

    B thử thử thách ct này:
    F4=SUMPRODUCT(IFERROR(1/COUNTIFS($B$3:$B$23,E4,$A$3:$A$23,$A$3:$A$23),0)*($B$3:$B$23=E4))

    không được bác ơi. nó ra kết quả 3.5

    Công thức mảng bạn nhé, bạn có thể thay sumproduct bằng sum.

    em làm được rồi nhưng có phát sinh thêm mấy vấn đề ở bacsuarwr giúp em với.
    – cột A không có dữ liệu cột B có dữ liệu nó cũng đếm.
    – nếu vùng tham chiếu không có dữ liệu ở cả cột A và B thì hàm báo lỗi.
    – khi chọn vùng tham chiếu khoảng 50.000 dòng thì rất chậm.

    Nếu 50k dòng thì dùng code cho nhẹ bạn.

    bác viết giúp em với. em không biết gì về code.

    Bạn check file nhé, tốc độ thì khỏi phải nói nhé, trong vòng chưa đầy 1s.

    còn 1 vấn đề bác xử lý giúp em với.

    tại 1 dòng nào đó cột A không có dữ liệu, cột B có dữ liệu thì không đếm cột A.

    Bạn check lại file xem tn, chứ code chỉ đếm khi cả 2 cột có dữ liêu.(tức là k đếm khi 1 trong 2 cột k có dữ liệu hoặc cả 2 k có dữ liệu)

    Cột A em dùng hàm để lọc nên có trường hợp nó có dữ liệu là số 0
    có cách nào để nó đếm nhưng bỏ qua số 0 này không bác

    Bạn check lại file nhé.

    bác check lại giúp em trường hợp dữ liệu đạt 65000 dòng thì code không check được .
    bác gíúp em trường hợp dữ liệu không đếm được k dòng với

    Ko ngờ dữ liệu của bạn lớn thế, thế thì sửa lại thế này

  35. hands says:

    Ko ngờ dữ liệu của bạn lớn thế, thế thì sửa lại thế này

    Tôi nghĩ với dữ liệu lớn vài chục ngàn dòng thì ADO chưa chắc nhanh hơn dictionary đâu

    thử làm với Dictionary

    Sub CountData()
    Dim i As Long, Darr, arr()
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    Darr = Range("A3:B" & Range("A3").End(xlDown).Row)
    ReDim arr(1 To UBound(Darr), 1 To 2)
    For i = 1 To UBound(Darr)
        If Darr(i, 1) <> 0 And Darr(i, 2) <> "" Then
            If Not dic.exists(Darr(i, 1) & Darr(i, 2)) Then
                dic.Add Darr(i, 1) & Darr(i, 2), ""
                arr(Darr(i, 2), 1) = Darr(i, 2)
                arr(Darr(i, 2), 2) = arr(Darr(i, 2), 2) + 1
            End If
        End If
    Next i
    Range("E4:F" & Range("E4").End(xlDown).Row).Clear
    Range("E4").Resize(UBound(arr), 2) = arr
    Range("E4:F" & Range("E4").End(xlDown).Row).Borders.LineStyle = xlContinuous
    Set dic = Nothing
    End Sub

    Lưu ý chỗ màu đỏ nha!

    If Not dic.exists(Darr(i, 1) & Darr(i, 2)) Then

    Đây là sai lầm khá cơ bản của người viết code: Đếm duy nhất 2 cột A và B thì cứ nghĩ đơn giản là nối A và B với nhau. Tuy nhiên trong một số trường hợp đặc biệt thì cách này sẽ cho kết quả sai. Ví dụ:
    – Chuỗi "a1" nối với chuỗi "11" cho kết quả "a111"
    – Chuỗi "a11" nối với chuỗi "1" cũng cho kết quả "a111"
    Rõ ràng 2 trường hợp này là khác nhau nhưng code trên sẽ "lầm tưởng" chúng là một
    Nguyên tắc: Phải nối chúng thông qua 1 ký tự đặc biệt nào đó, 1 ký tự mà bạn tin chắc rằng người dùng không thể gõ trên bảng tính, chẳng hạn tôi thường dùng vbNullChar (chr(0) ) hoặc vbBack (chr(8) ) để làm việc này
    ———————–
    Vài góp ý nhỏ chỉ mang tính tham khảo

    Cám ơn bạn Ndu96081631, biết thêm một kinh nghiệm, mong học thêm nhiều từ bạn

  36. hands says:

    Xin chào tất cả!
    cho em hỏi em có 1file excell(có file đính kèm), giờ em muốn tổng hợp các sheet lại thành 1 sheet tổng hợp, với điều kiện cột tên thiết bị trùng thì bỏ đi chỉ còn lại một, còn cột sỗ lượng thì cộng tổng lại. Em xin cảm ơn!

    bạn chạy thử code

    Sub TongHopVT()
    Dim i As Long, j As Long, k As Long, Darr
    Dim dic As Object, arr(1 To 65500, 1 To 6)
    Application.ScreenUpdating = False
    On Error Resume Next
    i = Sheets("TongHopVT").Index
    If i = 0 Then Sheets.Add.Name = "TongHopVT"
    Sheets("TongHopVT").Select
    Sheets("TongHopVT").UsedRange.Clear
    Sheets("TongHopVT").Move Before:=Sheets(1)
    Sheets(2).Range("A2:F2").Copy Range("A2")
    Set dic = CreateObject("Scripting.Dictionary")
    For j = 2 To Sheets.Count
        If Sheets(j).Range("A65500").End(xlUp).Row > 2 Then
            Darr = Sheets(j).Range("A3:F" & Sheets(j).Range("A65500").End(xlUp).Row)
            For i = 1 To UBound(Darr)
                If Darr(i, 2) <> "" And IsNumeric(Darr(i, 3)) And Darr(i, 3) > 0 Then
                    If Not dic.exists(Darr(i, 2) & "!@#" & Darr(i, 5)) Then
                        k = k + 1
                        dic.Add Darr(i, 2) & "!@#" & Darr(i, 5), k
                        arr(k, 1) = k: arr(k, 2) = Darr(i, 2)
                        arr(k, 3) = Darr(i, 3): arr(k, 4) = Darr(i, 4)
                        arr(k, 5) = Darr(i, 5): arr(k, 6) = Darr(i, 6)
                    Else
                        arr(dic.Item(Darr(i, 2) & "!@#" & Darr(i, 5)), 3) = _
                            arr(dic.Item(Darr(i, 2) & "!@#" & Darr(i, 5)), 3) + Darr(i, 3)
                    End If
                End If
            Next i
        End If
    Next j
    Range("A3").Resize(k, 6) = arr
    Range("A3:F" & Range("A3").End(xlDown).Row).Borders.LineStyle = xlContinuous
    Sheets("TongHopVT").UsedRange.EntireColumn.AutoFit
    Set dic = Nothing
    Application.ScreenUpdating = True
    End Sub

    Trước tiên em xin cảm ơn anh HieuCD!
    em đã cho chạy thử code rồi nhưng khi chạy xong nó cho ra 1 sheet tổng hợp vật tư, nhưng mà không có nội dung, phần tổng hợp nó ở sheet cuối cùng. Em muốn nó nằm ở sheet tổng hợp. Nhờ anh xem giúp lại em.

    file bạn gởi lên mình chạy bình thường, kết quả trong Sheet TongHopVT
    file bạn gởi không có sheet TongHop nên mình mới tạo Sheet TongHopVT
    nếu muốn tên sheet là TongHop thì bạn xóa sheet TongHopVT, và trong code bạn sửa tất cả từ TongHopVT thành TongHop (dùng Edit và replace all)

  37. hands says:

    Em chào anh chị !
    Em có file như bên dưới và em muốn lấy các code có 13 số liền nhau hoặc các code có 8 số liền nhau. Nhưng không dùng hàm mid được vì nhiều khi cái dãy code 13 số nó chỉ có 9 hoặc 10 số. Vậy anh chị chỉ giúp em với ạ
    Em cảm ơn!

    Bạn xem đúng ý mình chưa nhé.

  38. hands says:

    bạn làm thì ok rồi. Nhưng mình muốn dùng công thức thôi, Hàm mid – find lại không dùng được cho 13 số vì các đầu số khác nhau !$@!!
    Bạn xem công thức nào phù hợp chỉ mình với nhé
    Thank you !

    Chào _0gaX,

    File của anh giaiphap gửi là tuyệt rồi!

    Còn nếu bạn muốn công thức!! có luôn, vừa mới thọ giáo của leoheocon và khuongvietphong nên đem gả luôn 🙂

    Bạn xem file đính kèm nha.
    Lưu ý: Công thức chỉ áp dụng nếu bạn đang sử dụng Excel >=2007

    Chúc bạn ngày vui /-*+//-*+//-*+/

    bạn làm thì ok rồi. Nhưng mình muốn dùng công thức thôi, Hàm mid – find lại không dùng được cho 13 số vì các đầu số khác nhau !$@!!
    Bạn xem công thức nào phù hợp chỉ mình với nhé
    Thank you !

    Chào _0gaX,

    Nếu bạn vẫn muốn sử dụng MID() và FIND() để cắt số, thì anh giaiphap đã có đưa ra bên cột B từ hàng 8 trở xuống, cụ thể công thức đang có là:

    B8=MID(A8,FIND("00",A8),8)

    Bạn có thể copy rồi dán từ B1:B7.
    Nay tôi bổ sung cho cột C với 13 ký tự, dùng công thức bằng MID() và FIND() luôn /-*+/, với điều kiện chỉ tìm được ba đầu số: "61, 69, 89", nếu có đầu số khác, thì bạn phải tự thêm vào công thức, cụ thể:

    C1=TRIM(MID($A1,MAX(IFERROR(FIND({" 69";" 89";" 61"},A1),"")),14))

    Ctrl+Shift+Enter rồi fill xuống.
    Lưu ý: các đầu số có khoảng trắng nha, ví dụ: " 69" hoặc " 89"

    Chúc bạn ngày vui

  39. hands says:

    Em có 1 bảng gồm 4 cột như file, với ô D3 có toàn bộ phần tử giống 1 số phần tử của A10, ô D4 tương tự với C8. Nhiệm vụ của em là check những dữ liệu của cột D xem có trùng với 3 cột còn lại hay không, nếu có thì chỉ xóa ở D, 3 cột vẫn giữ, nếu không thì giữ lại tất. Như trên thì em sẽ xóa ô D3 và D4 được bởi vì nó trùng Domain nghĩa là cùng trỏ đến 1 diễn đàn. Nhưng do nó chỉ trùng có một phần mà không trùng hết toàn bộ nên em không biết cách lọc. Xin chỉ giúp em với ạ.

    Trân trọng cảm ơn

    Chào ngocha3508,

    Đứng tại ô D2, vào Conditional FormattingNew Rule…Use a formula to determine which cells to format,
    vào vùng trắng dưới chữ "Format values where this formula is true:", nhập công thức:

    =COUNTIF($A$2:$C$100,$D2&"*")*($D2<>"")

    Nhấn nút "Format…" bên phải dưới định dạng màu Font (vd: đỏ) và Fill (vd: màu cam sáng) theo ý bạn, nhấn OK, rồi OK thoát ra, điền Applies to: =$D$2:$D$100, nhấn Apply rồi OK là xong.

    Bạn sẽ thấy những dữ liệu nào bên D được tìm thấy có bên các cột A,B,C sẽ tự động chuyển màu.

    Chúc bạn ngày vui

  40. hands says:

    Tôi có 1 bảng dữ liệu: Trong bảng này dùng hàm như thế nào để có thể lấy được dữ liệu là giáo viên A dạy Toán 6A, Toán 7C, Lí 6B, Lí 7A, Lí 7C, Lí 7E từ Sheet1 sang Sheet2 rất mong các cao thủ excel giúp đỡ

  41. hands says:

    em mới bập bẹ làm excel nên có nhiều cái không hiểu và lên gg còn k bit search lỗi gì. phần mã khách khi em gõ thì có cái tìm được có cái lại ko. xin hỏi e đặt hàm sai chỗ nào ạ? em giờ mới mò mẫm học excel thôi . mong mọi người giúp ạ, em cảm ơn!

    Bạn đặt hàm không sai nhưng mình nghĩ chắc do kí tự nhập vào không đúng dữ liệu dò kết quả nên gây ra lỗi #NA đó. Mình đang dùng điện thoại có gì tối không ai giúp, mình giúp cho bạn.

    mình thử lại mà có mã khách nhập được có mã lại không nên không hiểu lắm. b xem và fix giúp mình nhé.

    file bạn đây!
    bạn thử đánh một tên vào xem nhé!

    oh, được rồi b ơi, nhưng lỗi gì thế bạn?do mình chọn vùng dữ liệu sao?

    File bạn mình xoá dữ liệu nhập tay dữ liệu vào đó.

  42. hands says:

    Chào các pro,
    Em có 1 bảng tính cần lấy số lượng dựa theo ngày ra lệnh trong tháng và mã Code khách hàng, em gửi file đính kèm các bác chỉ giúp em nhé, em đang cần gấp.
    Tks các bác!

    =SUMPRODUCT(('Nhap PO'!$C$6:$C$17='Yêu cầu'!C5)*DAY('Nhap PO'!$E$3:$AI$3='Yêu cầu'!C3),'Nhap PO'!$E$6:$AI$17)

    Điều chỉnh C3: 16/08/2017
    Rồi thử không dùng công thức mảng mà dùng hàm thường như: VLOOKUP(), HLOOKUP() được không?

    Chúc em ngày vui.
    p/s: em đâu phải tên "pro" đâu mà lên tiếng? 🙂 chủ thớt cần người nước ngoài hỗ trợ nên viết các từ lạ không hà! như "pro" rồi "tks", hổng hiểu nên hổng dám trả lời.

    Dạ được Anh!

    p/s: em lỡ giúp rôì sao Anh? lEm cảm ơn Anh,lần sau em sẽ chú ý hơn.

    chúc Anh ngày vui!

    Được thì đem lên anh em xem chứ sao!?
    /-*+//-*+//-*+/

    VLOOKUP(C5,'Nhap PO'!$C$6:$AI$17,MATCH('Yêu cầu'!C3,'Nhap PO'!$E$3:$AI$3,0)+2,0)
    em làm như vậy đó Anh, Anh xem giúp đã đúng ý chưa?

    Chúc Anh ngày vui!

    Được rồi!
    Trong Vùng so của hàm MATCH() lấy C3:AI3, bỏ +2 luôn cũng được và gọn chút.

    Vậy HLOOKUP() thì sao?

    Cái gì làm được bằng hàm thường nên dùng, và nên tận dụng các hàm sử dụng đối số 'Vùng' hơn là công thức mảng.

    Chúc em ngày vui.

    HLOOKUP(C3,'Nhap PO'!$E$3:$AI$17,MATCH('Yêu cầu'!C5,'Nhap PO'!$C$6:$C$17,0)+3,0)
    em chĩ nghỉ ra như vậy thôi Anh?

    Anh xem có thể dùng hàm hlookup theo cách khác được không Anh?

    'Nhap PO'!$C$6:$C$17 ==> 'Nhap PO'!$C$3:$C$17, bỏ +3

  43. hands says:

    Mình có 1 sheet bao gồm họ tên và ID của các nhân viên.mình nhờ các bạn giúp mình đoạn code lọc ra những nhân viên có ID kết thúc là chử R với.

    Mình gửi file đính kèm nhé.

    Bạn xem file thử

    Cảm ơn bạn đả giúp minh.Nhưng ý mình muốn nhửng ID nào mà không có chử R cuối thì sẽ hide đi khi nào bỏ filter thì nó sẽ về trạng thái ban đầu.

    Sao mình viết sai lỗi chính tả nhiều vậy?

  44. hands says:

    Chào các bác các chú cháu muốn copy dữ liệu (không bao gồm công thức ) lần lượt từng dòng một từ hàng 2 tới hàng 21 vào hàng 29(đã có săn công thức) sau mỗi lần bấm nút thì VBA này chỉnh sao ạ
    Ví dụ cháu bấm nút lần 1 thì vba sẽ copy dữ liệu ở hàng 2 vào hàng 29. bấm lần 2 thì vba sẽ copy dữ liệu ở hàng 3 vào hàng 29 …..

    Bạn thử code sau xem đúng ý không ạ?

    Option Explicit
    
    Private Sub CommandButton1_Click()
        Dim Arr()
        Arr = Range("B2:CW21").Value
        Range("B29").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
    End Sub
  45. hands says:

    Mình có vấn đề nhờ các bạn chỉ giáo.
    Hiện mình có kế hoạch sản xuất ở các máy (thiết bị). Mình tạo 1 sơ đồ thực, tên các máy đó, và mình muốn từ danh sách kế hoạch, những máy nào có tên, hoặc số lượng kế hoạch thì sẽ tự tô màu.
    Phiền các bạn xem.
    Nếu có thể gửi giúp mình qua mail: nguyenthangna0@gmail.com

    Bạn nên chuẩn hóa dữ liệu

  46. hands says:

    Xin các anh/chị giúp đỡ em công thức tìm kiếm cho file đính kèm.
    Em muốn tìm số No Repeat Order cho sheet 1 từ Sheet 2 theo Channel và Staffcode .
    Vd: Channel : Phar , Staffcode : 3797/RMV ==> No repeat order : 6
    Channel : Cos , Staffcode : 3797/RMV ==> No repeat order : 2

    Xin chận thành cảm ơn

    G4=IFERROR(LOOKUP(3,1/(D4=Sheet2!$D$3:$D$93)/(E4=Sheet2!$E$3:$E$93),Sheet2!$G$3:$G$93),"Không tìm thấy")
  47. hands says:

    Xin các anh/chị giúp đỡ em công thức tính Real Bonus cho file đính kèm ạ.

    Công thức

    J2=B2-(B2*COUNTIF(C2:I2,"<30%")*5%)
  48. hands says:

    Xin mọi người giúp em công thức để có thể hiện tên số Brand không đạt được (file đính kèm )
    Xin cám ơn rât nhiều
    VD: 4145/RMV : Brand không đạt 50% : LIPICE, HADALABO,MEGUMI, REMOS IR, Brand không đạt 30% : BOTANIC

    Xem file đúng không nhé
    Mình có sử dụng code của thầy @ndu96081631

    Cái 50% thì đúng rồi, cái 30% nó bị sai. Cái 30% phải là Botanic mới đúng.
    Cám ơn bạn

  49. hands says:

    1533
    Anh chị cho em hỏi sao lọc được ra cái bảng nhỏ ạ, vì mấy hàm trên em tim trong excel không có ạ, cảm ơn anh chị ạ.

    Viết hàm mảng tự tạo cũng được;:

    Function LKe(Rng As Range, TuNgay As Date, DenNgay As Date, Ten As String)
    ReDim Arr(1 To Rng.Rows.Count, 1 To 3) As String
    Dim W As Integer, J As Long

    For J = 1 To Rng.Rows.Count
    If Rng.Cells(J, "A").Value = Ten And (Rng.Cells(J, "B").Value >= TuNgay And Rng.Cells(J, "B").Value <= DenNgay) Then
    W = W + 1
    Arr(W, 2) = Rng.Cells(J, "C").Value
    Arr(W, 1) = Rng.Cells(J, "B").Value
    Arr(W, 3) = Rng.Cells(J, "D").Value
    End If
    Next J
    LKe = Arr()
    End Function

    Chú ơi, phần ngày tháng mà sắp xếp theo thứ tự nữa thì tuyệt vời chú à 😀

    1535

    Muốn đạt iêu cầu bổ sung này, thì ta cần thay đổi công đoạn:
    Thay vì duyệt theo dòng trên cột 'A', ta duyệt theo ngày từ thấp đến cao (Có nghĩa coi như thêm 1 vòng lặp)
    Trong quá trình duyệt theo cột 'B' này, Nếu thỏa điều kiện ngày, ta xét đến cột 'A' cùng hàng; Nếu thỏa cả 2 sẽ đưa vô mảng kết quả.

    Ta có thể thử bổ sung thêm công đoạn làm danh sách các ngày ở 2 ô tương ứng với ngày bắt đầu & ngày kết thúc để chọn (Validation) (?)

    Chúc các bạn vui & thành công!

  50. hands says:

    Chào các anh chị em trong diễn đàn.
    Nhờ mọi người viết tiếp giúp em code ạ.
    Code (1) tìm những dòng "Yes" của sheet 1, (2) và lấy ngày của dòng "Yes" cộng thêm "n" ngày nữa và (3) filter lại theo những ngày vừa lọc ra ạ. . .
    Em xin chân thành cảm ơn ạ

    (1) Bạn đã thực hiện rồi;
    (2) Việc cộng thêm này ta có thể thực hiện ngay trong chu trình (1)
    (3) (Chưa hiểu lắm như: Lọc từ bảng dữ liệu nào, Lọc xong thì hiện kết quả ở đâu,. . . .? )

    Chào bác SA_DQ: Em đang không biết đoạn code để cộng thêm "n" ngày. . . còn lọc từ bảng dữ liệu Sheet1(Data) để sang bảng sheet2(LocData) ạ. . .

    Bạn làm ví dụ kết quả mong muốn khoảng chục dòng vào sheet 2(LocData) xem thế nào?

    Chào bác Hoàng Tuấn 868: Em có làm ví dụ ở sheet2(LocData) với số lượng ngày cộng thêm là 3 thì kết quả trả về là dòng "Yes" và cộng thêm 3 ngày kế tiếp ạ. . . Bác có thể giúp em dòng code đó không ạ. . .

    Trường hợp giữa hai dòng "Yes" nhỏ hơn ba hoặc liên tiếp nhau thì bạn định thế nào nhỉ?

    Nếu như vậy thì dòng "Yes" vẫn cộng thêm 3 dòng tiếp ạ. Số ngày cộng thêm là biến "n". "n" có thể là (1,2,3,4,5,6,7) ạ.

    Như vậy là có thể sẽ có nhiều dòng "Yes" liên tiếp nhau đúng không bạn.

    Đúng vậy ạ. Nhưng trường hợp đấy chắc chỉ chiếm 1% thôi ạ

    Bạn tham khảo. (Thay đổi giá trị n tại ô E1 sheet LocData)

    Nếu fitler cộng thêm "n" ngày mà dòng ngày "Yes"2 nằm trong số ngày "Yes"1 cộng "n" ngày thì chỉ tính cộng "n" ngày của dòng "Yes"1 thôi ạ. . .

    Hiện tại bài #981 đang tính như vậy đấy bạn ạ.

    Vâng ạ, vậy nếu "Yes"1 cộng "n" ngày và "Yes"2 nằm trong số ngày đó thì vẫn sẽ ghi, và "Yes"2 cộng n ngày kế tiếp ạ. Thì em phải thêm 1 vòng For nữa hay sao ạ
    Ví dụ như này:
    01/02/2021—"Yes"1
    02/02/2021—No
    03/02/2021—"Yes"2
    04/02/2021—No
    03/02/2021—"Yes"2
    04/02/2021—No
    05/02/2021—No
    06/02/2021—No
    Có viết để ra kết quả như này không ạ

    Mình chưa thử nên không biết bạn ạ.

    Anh có thể xem giúp em được không ạ. . .
    Tức là nếu Ngày của "Yes"2 < "Yes"1 + "n" thì = kq("Yes"1 + "n")
    rồi lại chạy tiếp là "Yes"2 +"n". .
    Mô tả thế này có phải không ạ

    Bạn xem thử………..

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm