Nhờ giúp đỡ tìm dữ liệu với 2 tham số sang 1 sheet mới (2 người xem)

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

Người dùng đang xem chủ đề này

eokakoe

Thành viên mới
Tham gia
16/8/10
Bài viết
33
Được thích
7
Em có file excel đã lược giản bớt cho nhẹ Mong nhờ các anh chị giúp đỡ.
Trong file em có 1 sheet mua bán trong đó có 2 field là Ngày và Tên.

Em muốn ở sheet chi tiết có thể lọc được 2 tham số là tháng và tên để cho ra những chi tiết còn lại.

Em biết trong diễn đàn chắc chắn có quá nhiều câu hỏi dạng như thế này nhưng vì kiến thức kém nên em không tìm ra. Em rất mong được giúp đỡ từ các anh chị dày dạn kinh nghiệm. EM xin cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Em có file excel đã lược giản bớt cho nhẹ Mong nhờ các anh chị giúp đỡ.
Trong file em có 1 sheet mua bán trong đó có 2 field là Ngày và Tên.

Em muốn ở sheet chi tiết có thể lọc được 2 tham số là tháng và tên để cho ra những chi tiết còn lại.

Em biết trong diễn đàn chắc chắn có quá nhiều câu hỏi dạng như thế này nhưng vì kiến thức kém nên em không tìm ra. Em rất mong được giúp đỡ từ các anh chị dày dạn kinh nghiệm. EM xin cảm ơn.

Bạn xem file đính kèm nhé.
 

File đính kèm

Em có file excel đã lược giản bớt cho nhẹ Mong nhờ các anh chị giúp đỡ.
Trong file em có 1 sheet mua bán trong đó có 2 field là Ngày và Tên.

Em muốn ở sheet chi tiết có thể lọc được 2 tham số là tháng và tên để cho ra những chi tiết còn lại.

Em biết trong diễn đàn chắc chắn có quá nhiều câu hỏi dạng như thế này nhưng vì kiến thức kém nên em không tìm ra. Em rất mong được giúp đỡ từ các anh chị dày dạn kinh nghiệm. EM xin cảm ơn.

Việc tìm các topic tương tự trong diễn đàn cũng dễ thôi mà bạn. Bạn search trong GPE là thấy những tựa đề tương tự như mình thắc mắc.

Giải quyết cho bạn đề bài này:
Mã:
Public Sub GPE()
Dim Sarr(), dArr(), I As Long, J As Long, K As Long, Ten As String, Thang As Long
Thang = [C3].Value
Ten = UCase([C5])
With Sheets("muaban")
    Sarr = .Range(.[A6], .[A65000].End(xlUp)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(Sarr, 1), 1 To 6)
For I = 1 To UBound(Sarr, 1)
    If UCase(Sarr(I, 2)) = Ten Then
        If Month(Sarr(I, 1)) = Thang Then
            K = K + 1: dArr(K, 1) = Sarr(I, 1)
            For J = 3 To 7
                dArr(K, J - 1) = Sarr(I, J)
            Next J
        End If
    End If
Next I
With Sheets("chitiet")
    .[A9:F10000].ClearContents
    .[A9:F10000].Borders.LineStyle = xlNone
    If K Then
        .[A9].Resize(K, 6).Value = dArr
        .[A9].Resize(K, 6).Borders.LineStyle = xlContinuous
    End If
End With
End Sub
Bạn xem file đính kèm
 

File đính kèm

Việc tìm các topic tương tự trong diễn đàn cũng dễ thôi mà bạn. Bạn search trong GPE là thấy những tựa đề tương tự như mình thắc mắc.

Giải quyết cho bạn đề bài này:
Mã:
Public Sub GPE()
Dim Sarr(), dArr(), I As Long, J As Long, K As Long, Ten As String, Thang As Long
Thang = [C3].Value
Ten = UCase([C5])
With Sheets("muaban")
    Sarr = .Range(.[A6], .[A65000].End(xlUp)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(Sarr, 1), 1 To 6)
For I = 1 To UBound(Sarr, 1)
    If UCase(Sarr(I, 2)) = Ten Then
        If Month(Sarr(I, 1)) = Thang Then
            K = K + 1: dArr(K, 1) = Sarr(I, 1)
            For J = 3 To 7
                dArr(K, J - 1) = Sarr(I, J)
            Next J
        End If
    End If
Next I
With Sheets("chitiet")
    .[A9:F10000].ClearContents
    .[A9:F10000].Borders.LineStyle = xlNone
    If K Then
        .[A9].Resize(K, 6).Value = dArr
        .[A9].Resize(K, 6).Borders.LineStyle = xlContinuous
    End If
End With
End Sub
Bạn xem file đính kèm

cô nàng thơ này không những có thơ hay mà còn có code hay nữa nha, bài này công thức cũng sơ được mà đâu cần dùng tới code đâu, không biết là Em (hay là Đệ tử ) của Anh QuanHai nữa {toàn sử dụng dao phay để Chém Kiến} hic
 
Lần chỉnh sửa cuối:
cô nàng thơ này không những có thơ hay mà còn có code hay nữa nha, bài này công thức cũng sơ được mà đâu cần dùng tới code đâu, không biết là Em (hay là Đệ tử ) của Anh QuanHai nữa {toàn sử dụng dao phai để giết kiến} hic

Hic hic. Mỗi một đề bài có nhiều cách giải quyết khác nhau mà, có thể dùng được công thức hoặc dùng code. Nên mình trả lời theo cách hiểu và cách làm của mình. Mình còn phải học thêm nhiều ở các thành viên GPE.
Mong là các thành viên khác có cách giải quyết bằng công thức hay cách nào khác nữa thì cũng cứ trả lời cho bạn ấy, mình cũng được học hỏi thêm.

Mình cũng không so sánh dùng code hay công thức thì cái nào là dao phay hay ...dao con. hihi. Mỗi cách giải quyết cũng có ưu điểm riêng của nó mà.
 
Lần chỉnh sửa cuối:
Hic hic. Mỗi một đề bài có nhiều cách giải quyết khác nhau mà, có thể dùng được công thức hoặc dùng code. Nên mình trả lời theo cách hiểu và cách làm của mình. Mình còn phải học thêm nhiều ở các thành viên GPE.
Mong là các thành viên khác có cách giải quyết bằng công thức hay cách nào khác nữa thì cũng cứ trả lời cho bạn ấy, mình cũng được học hỏi thêm.

Mình cũng không so sánh dùng code hay công thức thì cái nào là dao phay hay ...dao con. hihi. Mỗi cách giải quyết cũng có ưu điểm riêng của nó mà.
Muốn làm kiểu công thức thì xem file này, Nếu dữ liệu sheet muaban chứa cả chục ngàn dòng (Mỗi ngày vài chục dòng trong cả năm) thì bị "Rùa" là chắc.
 

File đính kèm

Đúng là em muốn dùng công thức vì không có kiến thức gì vì VBA. Nhưng anh Ba Tê nói vậy chắc em hết dám xài luôn vì đúng là dữ liệu của em nhiều, mỗi ngày 20-30 dòng. Hichic.
2 file của anh mhung05 và chị xuan.nguyen82 em rất đúng ý em. Em xin cảm ơn
 
Hic hic. Mỗi một đề bài có nhiều cách giải quyết khác nhau mà, có thể dùng được công thức hoặc dùng code. Nên mình trả lời theo cách hiểu và cách làm của mình. Mình còn phải học thêm nhiều ở các thành viên GPE.
Mong là các thành viên khác có cách giải quyết bằng công thức hay cách nào khác nữa thì cũng cứ trả lời cho bạn ấy, mình cũng được học hỏi thêm.

Mình cũng không so sánh dùng code hay công thức thì cái nào là dao phay hay ...dao con. hihi. Mỗi cách giải quyết cũng có ưu điểm riêng của nó mà.

Chỉ đúng với một số truờng hợp. Trên thực tế sỡ dĩ bạn thấy code tiện hơn là vì một số đông các bài hỏi trên đây đi ngược nguyên tắc bảng tính Excel. Tức là người ta bắt đầu giải quyết vấn đề sau khi dữ liệu đã ghi vào bảng tính. Theo nguyên tắc, bắt đầu giải quyết vấn đề phải từ lúc thiết kế bảng tính, thiết kế như thế nào để dữ liệu dễ kiểm soát thay vì để nhìn cho đẹp, cho giống với mẫu mã thường dùng (những người theo mẫu mã quên rằng những mẫu mã kia được đặt ra từ thời chưa có bảng tính). Lắm lúc bạn thấy người hỏi đưa bài lên, nhận câu trả lời xong rồi trở lại "thêm chút nữa...". Điều này chứng tỏ họ khởi đầu chẳng biết mình thực sự muốn gì, đến chừng nhìn dữ liệu sau khi đã vào đúng chỗ rồi mới nhận ra mục đích cuối. Đối với những người này, dùng code là tự sát.

Sau khi đã thiết kế đúng đắn, nếu hàm không quá phức tạp, và nếu bảng tính không quá nhiếu dữ liệu thì dùng hàm luôn luôn tốt hơn code VBA. Ngược lại, VBA tốt hơn.

Những lời tôi nói trên không áp dụng cho trường hợp dữ liệu đổ (download, import) từ nguồn khác. Dữ liệu từ nguồn khác như thế này được liệt vào dạng thô. Trong các truờng hợp liên quan đến dời dữ liệu thô vào bảng đã thiết kế chuẩn thì code luôn luôn có nhiều lợi điểm hơn.
 
Vì dùng VBA nên em không biết tùy biến sao cho hợp với file của mình. Em rất mong chị Xuan Nguyen giúp em lần nữa. Trong file này chị xem gium sheet chitiet giúp em. Em có để text box nhờ chị giúp. Em rất cám ơn chị.
 

File đính kèm

Vì dùng VBA nên em không biết tùy biến sao cho hợp với file của mình. Em rất mong chị Xuan Nguyen giúp em lần nữa. Trong file này chị xem gium sheet chitiet giúp em. Em có để text box nhờ chị giúp. Em rất cám ơn chị.

Chị cũng đã nghĩ đến trường hợp file thật của em với file em gửi lên có khác nhau hay không rồi. Hic, nếu cấu trúc như nhau chỉ là em giản lược dữ liệu thì OK, còn nếu mà cấu trúc bảng tính, yêu cầu điều kiện khác thì phải xem lại code, sửa cho phù hợp với yêu cầu của file.
 
Lần chỉnh sửa cuối:
Chỉ đúng với một số truờng hợp. Trên thực tế sỡ dĩ bạn thấy code tiện hơn là vì một số đông các bài hỏi trên đây đi ngược nguyên tắc bảng tính Excel. Tức là người ta bắt đầu giải quyết vấn đề sau khi dữ liệu đã ghi vào bảng tính. Theo nguyên tắc, bắt đầu giải quyết vấn đề phải từ lúc thiết kế bảng tính, thiết kế như thế nào để dữ liệu dễ kiểm soát thay vì để nhìn cho đẹp, cho giống với mẫu mã thường dùng (những người theo mẫu mã quên rằng những mẫu mã kia được đặt ra từ thời chưa có bảng tính). Lắm lúc bạn thấy người hỏi đưa bài lên, nhận câu trả lời xong rồi trở lại "thêm chút nữa...". Điều này chứng tỏ họ khởi đầu chẳng biết mình thực sự muốn gì, đến chừng nhìn dữ liệu sau khi đã vào đúng chỗ rồi mới nhận ra mục đích cuối. Đối với những người này, dùng code là tự sát.

Sau khi đã thiết kế đúng đắn, nếu hàm không quá phức tạp, và nếu bảng tính không quá nhiếu dữ liệu thì dùng hàm luôn luôn tốt hơn code VBA. Ngược lại, VBA tốt hơn.

Những lời tôi nói trên không áp dụng cho trường hợp dữ liệu đổ (download, import) từ nguồn khác. Dữ liệu từ nguồn khác như thế này được liệt vào dạng thô. Trong các truờng hợp liên quan đến dời dữ liệu thô vào bảng đã thiết kế chuẩn thì code luôn luôn có nhiều lợi điểm hơn.

Cảm ơn bạn!
Để giải quyết triệt để 1 vấn đề và giải quyết làm sao cho nó hợp lý nhất, hoàn thiện ngay từ đầu lại phụ thuộc vào dữ liệu và yêu cầu của nguời hỏi.
Với bảng tính dữ liệu lớn thì giải quyết bằng công thức mình thấy chậm, còn với dữ liệu đã sắp xếp khoa học, hệ thống thì như bạn nói câu mình đã tô đỏ ở trên là đúng. Dùng công thức là đáp ứng được rồi. Thậm chí có những đề bài dùng ứng dụng của Excel là có thể đáp ứng được yêu cầu, nhưng các bạn lại muốn hỏi về hàm hoặc code...Nói về vấn đề này nó rất rộng. Mình cũng cảm thấy khó mà nói hết được.

Vấn đề ở đây là: Các đề bài của chúng ta có những cấu trúc dữ liệu chưa được khoa học, khi đưa ra góp ý về dữ liệu thì để thiết kế lại dữ liệu chắc cũng mất khá nhiều thời gian, mà chắc gì sự góp ý của mình đã phù hợp với công việc và yêu cầu của họ.

Nếu đề bài đưa ra với dữ liệu chuẩn, thì khỏi cần nói gì rồi.

Hàm và code, mỗi thứ có 1 thế mạnh và ưu điểm riêng. Nếu hiểu hết về nó thì phát huy tối đa sức mạnh của nó. Mình thì kiến thức cũng còn hạn hẹp nên cũng chẳng phân tích được nhiều.

Rất cảm ơn ý kiến của bạn!
 
Vì dùng VBA nên em không biết tùy biến sao cho hợp với file của mình. Em rất mong chị Xuan Nguyen giúp em lần nữa. Trong file này chị xem gium sheet chitiet giúp em. Em có để text box nhờ chị giúp. Em rất cám ơn chị.

Chị đang làm cho em thì bận nên đợi tối chị hoàn thiện nhé. Tại cột Lãi chi của em đang không có dữ liệu.
 
Ý kiến của anh VietMini thực sự là rất quý báu và chính xác. Vì bản thân em thực sự là 1 tay mơ, kiến thức về excel rất mơ hồ. Chỉ học lỏm mỗi chỗ 1 tí mỗi chỗ 1 tí nên khả năng vận dụng linh hoạt rất kém. Em cũng hỏi rất nhiều và đúng là mỗi lần nhận 1 đoạn code xong lại không biết sử dụng thế nào cho đúng mục đích mình.

Nhưng vì em cũng làm việc khác, công việc này chỉ phụ giúp gia đình nên em cũng biết các anh chị cũng rất bận đâu ai có thể ngồi nghiên cứu yêu cầu của mình kỹ mà giải quyết được nên em luôn cố tìm cách đơn giản hóa vấn đề để hỏi rồi tự mình tùy biến theo ý mình chứ khó lòng trình bày đủ ý mình muốn lên diễn đàn. Không thể ngay từ khâu nhập dữ liệu đã hỏi em nên nhập thế nào rồi dòng này ra sao cột kia thế nào.... Thật sự là rất khó. Và em biết số đông các thành viên ở GPE cũng vậy. Để nghiên cứu kỹ càng cơ bản, tận gốc chắc mất rất nhiều thời gian. Nên em rất khâm phục sự nhẫn nại của các thành viên "lớn" của GPE khi kiên trì giải thích cho mấy thành phần "đầu đất" như em dù biết làm cho xong chắc gì nó đã sử dụng được :((
 
Chị Xuan Nguyen: Cột lãi đó em mới thêm vào. Vì để tính ra kết quả thì chỉ cần 1 cột lãi nhưng vì khi in ra em muốn rõ ràng 2 bên 1 bên tiền khách mua, và 1 bên tiền khách trả. và tương ứng là lãi của 2 bên đó. Kết quả cuối cùng sẽ bằng số dư tiền mua trừ tiền trả và lãi mua trừ lãi trả. Em để 2 cột như vậy để khách dễ so sánh các mã trả tiền và các mã mua hàng cho dễ so. Em vẫn đang xây dựng nên còn nhiều thiếu sót lắm :((
 
Ý kiến của anh VietMini thực sự là rất quý báu và chính xác. Vì bản thân em thực sự là 1 tay mơ, kiến thức về excel rất mơ hồ. Chỉ học lỏm mỗi chỗ 1 tí mỗi chỗ 1 tí nên khả năng vận dụng linh hoạt rất kém. Em cũng hỏi rất nhiều và đúng là mỗi lần nhận 1 đoạn code xong lại không biết sử dụng thế nào cho đúng mục đích mình.

Nhưng vì em cũng làm việc khác, công việc này chỉ phụ giúp gia đình nên em cũng biết các anh chị cũng rất bận đâu ai có thể ngồi nghiên cứu yêu cầu của mình kỹ mà giải quyết được nên em luôn cố tìm cách đơn giản hóa vấn đề để hỏi rồi tự mình tùy biến theo ý mình chứ khó lòng trình bày đủ ý mình muốn lên diễn đàn. Không thể ngay từ khâu nhập dữ liệu đã hỏi em nên nhập thế nào rồi dòng này ra sao cột kia thế nào.... Thật sự là rất khó. Và em biết số đông các thành viên ở GPE cũng vậy. Để nghiên cứu kỹ càng cơ bản, tận gốc chắc mất rất nhiều thời gian. Nên em rất khâm phục sự nhẫn nại của các thành viên "lớn" của GPE khi kiên trì giải thích cho mấy thành phần "đầu đất" như em dù biết làm cho xong chắc gì nó đã sử dụng được :((
Rốt cuộc là file ở bài #9 của bạn đã đầy đủ các yêu cầu chưa?
Có thêm điều kiện nào nữa không?
 
Tạm thời em chỉ cần như vậy. Trích xuất ra 1 bảng in để in thanh toán cho từng khách hàng. Mong anh giúp đỡ. Phần tính toán kết quả em sẽ cố gắng làm.

Nếu có thời gian nghiên cứu mong các anh chị góp ý thêm cho em về cách xây dựng dữ liệu như thế có hợp lý không? Và quản lý sao cho hợp lý nhất.
 
Chị Xuan Nguyen: Cột lãi đó em mới thêm vào. Vì để tính ra kết quả thì chỉ cần 1 cột lãi nhưng vì khi in ra em muốn rõ ràng 2 bên 1 bên tiền khách mua, và 1 bên tiền khách trả. và tương ứng là lãi của 2 bên đó. Kết quả cuối cùng sẽ bằng số dư tiền mua trừ tiền trả và lãi mua trừ lãi trả. Em để 2 cột như vậy để khách dễ so sánh các mã trả tiền và các mã mua hàng cho dễ so. Em vẫn đang xây dựng nên còn nhiều thiếu sót lắm :((

Cột Trả tại sheet Chitiet của em, em muốn lấy dữ liệu từ cột nào bên sheet kia? Chị hiểu đó là cột khách trả? nhưng không thấy cột nào tương ứng mà lấy dữ liệu sang?
Em trả lời rõ phần này để chị làm hoàn thiện nhé.
 
Chị ơi cột trả em lấy từ cột thu. Vì trong sổ thu chi thì phần thu là phần khách trả mà. Chị hộ em nhé
 
Chị ơi cột trả em lấy từ cột thu. Vì trong sổ thu chi thì phần thu là phần khách trả mà. Chị hộ em nhé

Xong rồi. Em dùng file này nhé.

1.Chị dùng List trong Data-Validation tại ô C6, sheet "Chitiet" để em dễ dàng lựa chọn tên khách hàng. Nếu thêm tên khách hàng, em cứ nhập tiếp vào cột A của sheet 2.
Sheet "thuchi" cũng nên có List chọn cho cột B, tránh việc em nhập thủ công sai tên khách hàng (phần này em có thể tìm hiểu thêm List trong Data-Validation nhé. Và tự làm được. Không khó lắm đâu)

2.Ô C8 chọn tháng, em tự nhập tay nhé. Em nhập đủ ngày mùng 1 của tháng của năm đó vào ô (theo mẫu như trong ô đó).

3.Chị format lại bản in của em rồi đó.

Mã:
Public Sub GPE()
Dim SArr(), dArr(), I As Long, J As Long, K As Long, Ten As String, Thang As Long
Dim Tongso As String, TienNo As String, TienLai As String, ConNo As String, Tem As Date
Thang = [C8].Value
Ten = UCase([C6])
With Sheets("thuchi")
    SArr = .Range(.[A5], .[A65000].End(xlUp)).Resize(, 10).Value
    Tongso = .[N1].Value
    TienNo = .[N2].Value
    TienLai = .[N3].Value
    ConNo = .[N4].Value
End With
ReDim dArr(1 To UBound(SArr, 1), 1 To 8)
For I = 1 To UBound(SArr, 1)
    If UCase(SArr(I, 2)) = Ten Then
        Tem = DateSerial(Year(SArr(I, 1)), Month(SArr(I, 1)), 1)
        If Tem = Thang Then
            K = K + 1: dArr(K, 1) = SArr(I, 1)
            dArr(K, 2) = SArr(I, 5): dArr(K, 3) = SArr(I, 6)
            dArr(K, 4) = SArr(I, 4): dArr(K, 5) = SArr(I, 8)
            dArr(K, 6) = SArr(I, 10): dArr(K, 7) = SArr(I, 3): dArr(K, 8) = SArr(I, 9)
        End If
    End If
Next I
With Sheets("chitiet")
    .[J8:Q10000].ClearContents
    .[J8:Q10000].Borders.LineStyle = xlNone
    If K Then
        With .[J8]
        .Resize(K, 8).Value = dArr
        .Resize(K, 8).Borders.LineStyle = xlContinuous
        .Offset(K + 1).Value = Tongso
        .Offset(K + 1, 1).Resize(, 7).FormulaR1C1 = "=Sum(R8C:R[-2]C)"
        .Offset(K + 2).Value = TienNo
        .Offset(K + 2, 3).FormulaR1C1 = "=R[-1]C - R[-1]C[3]"
        .Offset(K + 3).Value = TienLai
        .Offset(K + 3, 3).FormulaR1C1 = "=R[-2]C[2] - R[-2]C[4]"
        .Offset(K + 5).Value = ConNo
        .Offset(K + 5, 3).FormulaR1C1 = "=Sum(R[-3]C:R[-2]C)"
        End With
    End If
End With
End Sub

Em xem file đã đúng ý chưa nhé:
 

File đính kèm

Lần chỉnh sửa cuối:
Chị ơi chị edit lại giùm em một chút. Chị để 2 cột lãi, một cột đằng sau cột thành tiền và 1 cột đằng sau cột Trả cho em nhé. Cột sau cột thành tiền lấy dữ liệu từ cột lãi chi. Và cột lãi sau cột trả lấy dữ liệu từ cột thu. Mong chị hộ em lần nữa nhé.
 
Web KT

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

Back
Top Bottom