[Giúp đỡ] Giúp hiện 1 mảng cho trước theo điều kiện nhất định.

Liên hệ QC

gameonly308

Thành viên hoạt động
Tham gia
4/5/09
Bài viết
197
Được thích
10
Mong các bác giúp đỡ em phần này với !
Em có 3 mảng là 3 đơn hàng của 3 người bán A, B, C bên sheet: danhsach
Bên Sheet: lietke có 2 cái list: Đơn hàng và Người bán
Bây giờ em muốn là, khi chọn đơn hàng là N001 và Người bán là A
thì tự động dữ liệu từ danhsach!B6:E9 sẽ chạy vào lietke!B7:E10
Em muốn làm theo dạng là. khi ta nhập Đơn hàng và Người bán thì nó sẽ chuyển cả mảng sang. các mảng giống nhau về chiều dài và chiều rộng.
Em muốn làm cách nào đó tổng quát, có thể áp dụng cho cả 100 người bán ý ạ. Chứ nếu cứ dùng công thức If của 100 người bán thì nghe không ổn!
 

File đính kèm

  • Book10.xlsx
    10.5 KB · Đọc: 13
Cái này hữu ích, hóng chờ cao thủ
 
Mong các bác giúp đỡ em phần này với !
Em có 3 mảng là 3 đơn hàng của 3 người bán A, B, C bên sheet: danhsach
Bên Sheet: lietke có 2 cái list: Đơn hàng và Người bán
Bây giờ em muốn là, khi chọn đơn hàng là N001 và Người bán là A
thì tự động dữ liệu từ danhsach!B6:E9 sẽ chạy vào lietke!B7:E10
Em muốn làm theo dạng là. khi ta nhập Đơn hàng và Người bán thì nó sẽ chuyển cả mảng sang. các mảng giống nhau về chiều dài và chiều rộng.
Em muốn làm cách nào đó tổng quát, có thể áp dụng cho cả 100 người bán ý ạ. Chứ nếu cứ dùng công thức If của 100 người bán thì nghe không ổn!

Công thức cho B7
Mã:
=OFFSET(INDIRECT("danhsach!$B"&MATCH($C$4,danhsach!$B$1:$B$1000,0)),ROW()-4,COLUMN()-2,)
 
Mong các bác giúp đỡ em phần này với !
Em có 3 mảng là 3 đơn hàng của 3 người bán A, B, C bên sheet: danhsach
Bên Sheet: lietke có 2 cái list: Đơn hàng và Người bán
Bây giờ em muốn là, khi chọn đơn hàng là N001 và Người bán là A
thì tự động dữ liệu từ danhsach!B6:E9 sẽ chạy vào lietke!B7:E10
Em muốn làm theo dạng là. khi ta nhập Đơn hàng và Người bán thì nó sẽ chuyển cả mảng sang. các mảng giống nhau về chiều dài và chiều rộng.
Em muốn làm cách nào đó tổng quát, có thể áp dụng cho cả 100 người bán ý ạ. Chứ nếu cứ dùng công thức If của 100 người bán thì nghe không ổn!
Chỉnh lại cấu trúc dữ liệu sheet danhsach thì có thể dùng AutoFilter Đơn hàng hoặc/ và Người bán.
Nếu muốn lọc ra sheet khác thì xem file này, dùng VBA + Advanced Filter.
 

File đính kèm

  • Ad_Filter.xlsm
    18.7 KB · Đọc: 6
Chỉnh lại cấu trúc dữ liệu sheet danhsach thì có thể dùng AutoFilter Đơn hàng hoặc/ và Người bán.
Nếu muốn lọc ra sheet khác thì xem file này, dùng VBA + Advanced Filter.
Bác @Ba Tê cho em hỏi, nếu các đơn hàng viết cách ra liệu có chạy không bác? Và trong Name em thấy rất nhiều Name phụ!
 
Chỉnh lại cấu trúc dữ liệu sheet danhsach thì có thể dùng AutoFilter Đơn hàng hoặc/ và Người bán.
Nếu muốn lọc ra sheet khác thì xem file này, dùng VBA + Advanced Filter.
Nếu như đặt Đơn hàng và Người bán như bác làm trong file Ad_Filter thì em có thể dùng hàm Vlookup với 2 điều kiện để giải quyết được vấn đề này.
Em muốn hỏi có cách nào với 2 điều kiện là Người bán và Đơn hàng mình có thể bê nguyên cả mảng bên danhsach vào bên lietke được không ạ?
 
Mong các bác giúp đỡ em phần này với !
Em có 3 mảng là 3 đơn hàng của 3 người bán A, B, C bên sheet: danhsach
Bên Sheet: lietke có 2 cái list: Đơn hàng và Người bán
Bây giờ em muốn là, khi chọn đơn hàng là N001 và Người bán là A
thì tự động dữ liệu từ danhsach!B6:E9 sẽ chạy vào lietke!B7:E10
Em muốn làm theo dạng là. khi ta nhập Đơn hàng và Người bán thì nó sẽ chuyển cả mảng sang. các mảng giống nhau về chiều dài và chiều rộng.
Em muốn làm cách nào đó tổng quát, có thể áp dụng cho cả 100 người bán ý ạ. Chứ nếu cứ dùng công thức If của 100 người bán thì nghe không ổn!
Góp ý cho bạn:
Không nên theo dõi và gán mỗi đơn hàng riêng lẽ như vậy, việc tổng hợp và truy vấn đơn hàng sẽ gặp rất nhiều khó khăn, bạn có thể tham khảo File trong bài viết của Link sau (để hiểu cách làm và theo dõi).

http://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/
 
Góp ý cho bạn:
Không nên theo dõi và gán mỗi đơn hàng riêng lẽ như vậy, việc tổng hợp và truy vấn đơn hàng sẽ gặp rất nhiều khó khăn, bạn có thể tham khảo File trong bài viết của Link sau (để hiểu cách làm và theo dõi).

http://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/
Vâng, cảm ơn bác @be09 đúng cái em đang cần đấy ạ, có gì bác hỗ trợ em thêm với, em cảm ơn!
 
Góp ý cho bạn:
Không nên theo dõi và gán mỗi đơn hàng riêng lẽ như vậy, việc tổng hợp và truy vấn đơn hàng sẽ gặp rất nhiều khó khăn, bạn có thể tham khảo File trong bài viết của Link sau (để hiểu cách làm và theo dõi).

http://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/
Chào bác @be09 và các bác trong forum , em làm theo mẫu của bác mục đơn thuốc.
Em muốn copy số liệu từ ô D21 của Sheets"TheBe_NSL" sang ô C trống gần nhất của Sheets"CSDL_Be". Nếu trống thì ghi, nếu đã trùng thì hỏi ghi đè
Mã:
Sub luu_so_lieu_Click()
    Dim SoLieu As Range
    Dim i As Long
       Dim Luu_SoLieu As Range
    
    Application.ScreenUpdating = False
        'Kiem tra du lieu (Code) tren sheet"CSDL_Be" (Sheet31)
        i = 1
        Do Until Sheets("CSDL_Be").Range("C" & i).Value = ""
        If Sheets("CSDL_Be").Range("C" & i).Value = Sheets("TheBe-NSL").Range("D21").Value Then
        'Neu trung nhau thi hoi xem co ghi de ko?
            If MsgBox("Ban nhap so lieu trung voi so lieu da co tren he thong - Co muon ghi de khong?", vbYesNo) = vbNo Then
                Exit Sub
                Else
                Exit Do
            End If
        End If
        i = i + 1
        Loop
        i = 1
        Set Luu_SoLieu = Sheets("CSDL_Be").Range("C:BA")
        'Xoa dong neu tim thay (Code)
            Do Until Sheets("CSDL_Be").Range("C" & i).Value = ""
                If Sheets("CSDL_Be").Range("C" & i).Value = Sheets("TheBe-NSL").Range("D21").Value Then
                    Sheets("CSDL_Be").Range("C" & i).EntireRow.Delete
                    i = 1
                End If
                i = i + 1
                Loop
        'Tim hang trong dau tien tu B:BA
            Do Until WorksheetFunction.CountA(Luu_SoLieu.Rows(i)) = 0
            i = i + 1
            Loop
        'Copy so lieu
        'Copy Code be_ngay_tg_do
        Sheets("CSDL_Be").Range("C" & i).Value = Sheets("TheBe_NSL").Range("D21").Value
        i = i + 1
        MsgBox "Du lieu da duoc luu", vbOKCancel, "Thong bao"
        Application.ScreenUpdating = True
End Sub

Em chạy code trên và bị lỗi Runtime Eror '9' Subscript out of range
Khi Debug thì lỗi tô đậm ở đoạn :
Mã:
'Copy Code be_ngay_tg_do
        Sheets("CSDL_Be").Range("C" & i).Value = Sheets("TheBe_NSL").Range("D21").Value

Mong bác @be09 và bác nào đi qua giúp em gỡ rối đoạn này với ạ!
 
Chào bác @be09 và các bác trong forum , em làm theo mẫu của bác mục đơn thuốc.
Em muốn copy số liệu từ ô D21 của Sheets"TheBe_NSL" sang ô C trống gần nhất của Sheets"CSDL_Be". Nếu trống thì ghi, nếu đã trùng thì hỏi ghi đè
Mã:
Sub luu_so_lieu_Click()
 .............................................
End Sub

Em chạy code trên và bị lỗi Runtime Eror '9' Subscript out of range
..............................................
Mong bác @be09 và bác nào đi qua giúp em gỡ rối đoạn này với ạ!
Không ai tài giỏi đến nổi nhìn code mà biết được cấu trúc dữ liệu của bạn thế nào, nếu bạn không đính kèm File lỗi thì tất cả các thành viên đều chào thua.
 
Chủ bài đăng nên xây dựng CSDL chuẩn trước khi xử lý nó;
Theo mình chí ít fải là vầy:
PHP:
'
STT Đơn hàng   Mã NB   Mã hàng    Tên   Số lượng   Bán Trả lại Hỏng  '
1     N001     NVA00     MG00   Máy giặt    5       3     1       1
2     N001     NVA00     MU00   Máy ủi      9       5     1       0
3     N001     NVA00     MS00   Máy sấy     8       5     0       0
4     N001     NVA00     MX00   Máy xay     7       3     0       0
5     N002     LVB00     MG00   Máy giặt    5       3     1       0
6     N002     LVB00     MU00   Máy ủi      9       5     2       0
7     N002     LVB00     MS00   Máy sấy     8       5     0       1
8     N002     LVB00     MX00   Máy xay     7       3     0       0
9     N003     HXC00     MG00   Máy giặt    5       3     1       1
10    N003     HXC00     MU00   Máy ủi      9       5     3       0
11    N003     HXC00     MS00   Máy sấy     8       5     1       2
12    N003     HXC00     MX00   Máy xay     7       3     0       0
. .     . . .

Còn xịn hơn nữa, ta xây dựng CSDL quan hệ;
Khi đó ta sẽ fải có 2 bảng dữ liệu
1 gồm [STT], [Đơn hàng], [Mã Người bán]
2 gồm [STT],[Đơn hàng], [Mã Hàng], [Số lượng], [Số bán], [Số trả lại], [Hư hỏng]

Khi đó, bảng 1 chỉ 1 dòng thì bảng 2 sẽ là chi tiết của bảng 1 gồm có thể là 1 hay nhiều dòng.

Xin bạn cho í kiến tiếp theo!
 
Lần chỉnh sửa cuối:
Cảm ơn bác @Hoang2013 em sẽ tiếp thu và sẽ gửi bác bài của em ạ
 
Lần chỉnh sửa cuối:
Không ai tài giỏi đến nổi nhìn code mà biết được cấu trúc dữ liệu của bạn thế nào, nếu bạn không đính kèm File lỗi thì tất cả các thành viên đều chào thua.
vâng em cảm ơn bác @be09 , lỗi là ở em, em vừa tìm lỗi do dạng"TheBe_NSL" em lại viết thành "TheBe-NSL", em muốn hỏi bác em có thể chuyển đoạn code đó thành dạnh tên Sheet trong VBA được không? để tránh nhầm lẫn do viết sai tên Sheets, và sửa thành thế nào ạ.
VD như Sheet("TheBe_NSL") em muốn đổi thành Sheet1, Sheet2 ý ạ
 
Web KT
Back
Top Bottom