[Nhờ giúp đỡ] CÁCH KẾT HỢP OR (HOẶC AND) VỚI IF

Liên hệ QC

tunguska

Thành viên mới
Tham gia
2/4/17
Bài viết
9
Được thích
0
Kính gửi các anh chị trên 4rums, em ít dùng VBA do cũng gà cho nên gặp trường hợp như dạng bên dưới cần dùng thì bí quá, nhờ các anh chị giúp đỡ cấu trúc gom lại sao cho gọn với ạ
1/ P77006, P45802,... là mã hàng, nếu là các mã hàng đó + Không bán cho khách TOYO thì sửa lại thành mã POX
Mã:
If Cells(i + 51, 2) = "P77006" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P45802" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P68601" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P27805" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P27814" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P50202" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"

2/ Giải sử y/c là với các mã hàng trên + Không bán cho khách TOYO hoặc không bán cho khách ASIA hoặc không bán cho CAML thì sửa lại mã hàng thành POX thì cấu trúc như thế nào ạ

Cảm ơn các anh chị trước
 
Kính gửi các anh chị trên 4rums, em ít dùng VBA do cũng gà cho nên gặp trường hợp như dạng bên dưới cần dùng thì bí quá, nhờ các anh chị giúp đỡ cấu trúc gom lại sao cho gọn với ạ
1/ P77006, P45802,... là mã hàng, nếu là các mã hàng đó + Không bán cho khách TOYO thì sửa lại thành mã POX
Mã:
If Cells(i + 51, 2) = "P77006" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P45802" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P68601" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P27805" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P27814" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"
ElseIf Cells(i + 51, 2) = "P50202" And Cells(i + 51, 4) <> "TOYO"  Then Cells(i + 51, 2) = "POX"

2/ Giải sử y/c là với các mã hàng trên + Không bán cho khách TOYO hoặc không bán cho khách ASIA hoặc không bán cho CAML thì sửa lại mã hàng thành POX thì cấu trúc như thế nào ạ

Cảm ơn các anh chị trước
Bạn gửi file lên.Và nêu rõ trong ví dụ.
 
Upvote 0
Nếu điều kiện như vậy thì sẽ là:
PHP:
If "*" & Cells(i + 51, 2) & "*" Like "P77006-P45802-P68601-P27805-P27814-P50202"  Then _
  Cells(i + 51, 2) = IIF(Cells(i + 51, 4) = "TOYO" OR Cells(i + 51, 4) = "ASIA" OR  Cells(i + 51, 4) = "CAML", Cells(i + 51, 2) , "POX" )
 
Lần chỉnh sửa cuối:
Upvote 0
Mỗi ngày em có 1 bảng dữ liệu khoảng 2000 dòng từ dòng thứ 51 trở xuống, em cần tính tổng em dùng sumifs) sản lượng (mét, Kg) lại the từng nhân viên và theo từng loại sản phẩm và điền lên bảng tổng hợp (dựa vào các điều kiện mã vải, loại hoàn tất, mã khách,..... (em dùng sumifs)
Vấn đề chưa giải quyết đc của đối với cột K (Tp. Oxford,Tp.Chifon): dữ liệu điền vô cột này là tổng các dòng có điều kiện là
- mã vải: Hoặc P45802 hoặc P27814 Hoặc P8701 hoặc .........
- Loại hoàn tất: Không phải cire/PU (em đã tạo ra 1 cột phụ để dò)
- mã khách: Không phải khách TOYO, không phải khách DECA, không phải ASIA
Nếu dùng sumifs bình thường thì câu lệnh dài ngang 1 màn hình máy tính á nên em muốn chuyển hết mã vải tại các dòng thỏa điều kiên trên thành POX để dùng sumifs cho gọn
Bài đã được tự động gộp:

Nếu điều kiện như vậy thì sẽ là:
Mã:
Cells(i + 51, 2) = IIF(Cells(i + 51, 4) = "TOYO" OR Cells(i + 51, 4) = "ASIA" OR  Cells(i + 51, 4) = "CAML", Cells(i + 51, 2) , "POX" )

còn điều kiện mã vải nữa ạ,
 

File đính kèm

Upvote 0
còn điều kiện mã vải nữa ạ,
Xem lại nhé, vừa thêm vào bài trên

Hoặc:
PHP:
If "*" & Cells(i + 51, 2) & "*" Like "P77006-P45802-P68601-P27805-P27814-P50202"  Then _
  Cells(i + 51, 2) = IIF( "*" & Cells(i + 51, 4) & "*" Like "TOYO-ASIA-CAML", Cells(i + 51, 2) , "POX" )
 
Lần chỉnh sửa cuối:
Upvote 0
Mỗi ngày em có 1 bảng dữ liệu khoảng 2000 dòng từ dòng thứ 51 trở xuống, em cần tính tổng em dùng sumifs) sản lượng (mét, Kg) lại the từng nhân viên và theo từng loại sản phẩm và điền lên bảng tổng hợp (dựa vào các điều kiện mã vải, loại hoàn tất, mã khách,..... (em dùng sumifs)
Vấn đề chưa giải quyết đc của đối với cột K (Tp. Oxford,Tp.Chifon): dữ liệu điền vô cột này là tổng các dòng có điều kiện là
- mã vải: Hoặc P45802 hoặc P27814 Hoặc P8701 hoặc .........
- Loại hoàn tất: Không phải cire/PU (em đã tạo ra 1 cột phụ để dò)
- mã khách: Không phải khách TOYO, không phải khách DECA, không phải ASIA
Nếu dùng sumifs bình thường thì câu lệnh dài ngang 1 màn hình máy tính á nên em muốn chuyển hết mã vải tại các dòng thỏa điều kiên trên thành POX để dùng sumifs cho gọn
Bài đã được tự động gộp:



còn điều kiện mã vải nữa ạ,
Bạn xem code này.
Mã:
Sub linhtinh()
Dim arr
Dim lr As Long, i As Long
Dim dk As String, dks As String
With Sheet1
    dks = "#P77006#P45802#P68601#P27805#P27814#P50202#"
    lr = .Range("B" & Rows.Count).End(xlUp).Row
    If lr < 51 Then Exit Sub
    arr = .Range("B51:d" & lr).Value
    For i = 1 To UBound(arr, 1)
        dk = "#" & arr(i, 1) & "#"
        If InStr(dks, dk) And arr(i, 3) <> "TOYO" Then
            arr(i, 1) = "POX"
        End If
   Next i
   .Range("B51:d" & lr).Value = arr
End With
End Sub
 
Upvote 0
Bác ơi, khác tới mấy cái lận thì câu lệnh trên như thế nào ạ (kiểu như có 100 khách, thì khác 30 trong số đó thì thỏa điều kiện ý)
Vậy gộp nó lại rồi dùng hàm instr với điều kiện bằng không là được.Nếu nhiều điện kiện quá thì gắn ra cells rồi gọi vào.
Mã:
Sub linhtinh()
Dim arr
Dim lr As Long, i As Long
Dim dk As String, dks As String, dks1 As String
With Sheet1
    dks = "#P77006#P45802#P68601#P27805#P27814#P50202#"
    dks1 = "#TOYO#DECA#ASIA#"
    lr = .Range("B" & Rows.Count).End(xlUp).Row
    If lr < 51 Then Exit Sub
    arr = .Range("B51:d" & lr).Value
    For i = 1 To UBound(arr, 1)
        dk = "#" & arr(i, 1) & "#"
        If InStr(dks, dk) And InStr(dks1, "#" & arr(i, 3) & "#") = 0 Then
            arr(i, 1) = "POX"
        End If
   Next i
   .Range("B51:d" & lr).Value = arr
End With
End Sub
Mà bạn nói cách tính tổng.Để mọi người viết luôn code VBA cho nhanh.Dùng hàm làm gì nữa.
 
Upvote 0
Vậy gộp nó lại rồi dùng hàm instr với điều kiện bằng không là được.Nếu nhiều điện kiện quá thì gắn ra cells rồi gọi vào.

Mà bạn nói cách tính tổng.Để mọi người viết luôn code VBA cho nhanh.Dùng hàm làm gì nữa.
Dạ, như file đính kèm bên trên, dữ liệu ban đầu của em là 1 bảng dữ liệu gồm nhiều dòng (từ dòng thứ 52 trở xuống), cần tổng hợp lại theo biểu mẫu bên trên (từ A1 đến P44)
Cột D: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là GHI
Cột E: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là CSB
Cột F: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là MAI hoặc MOC
Cột P: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và khách là DECA và mẻ có chứa chữ N
Cột O: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và khách là DECA và mẻ không có chứa chữ N và loại hoàn tất có chữ PU
Cột N: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và khách là DECA nhưng trừ đi sản lượng đã tính ở cột P, O
Cột M: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và khách là TOYO hoặc TAMA hoặc KRAR hoặc TOGC hoặc TYOC hoặc DPAN hoặc các của khách khác (trừ DECA ra) nhưng có loại hoàn tất là CIRE
Cột L:Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và giá trị sản lượng chỉ nằm ở cột Kg khách không phải là TOYO, TAMA, KRAR, TOGC, TYOC, DPAN, DECA
Cột K: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP và Có Mã vải là P45802, P27805, P27810,P27814,P77006,P77005,..... và Không phải khách TOYO, TAMA, KRAR, TOGC, TYOC, DPAN, DECA và không hoàn tất PU, CIRE (không đc 1 trong 2 và cũng ko đc cả 2 loại này)
Cột J: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TG1 hoặc TG2 hoặc TG3 hoặc TG4 hoặc TG5 hoặc KHA và khách là DECA
Cột J: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TG1 hoặc TG2 hoặc TG3 hoặc TG4 hoặc TG5 hoặc KHA và khách là TOYO hoặc TAMA hoăc KRAR hoăc TOGChoăc TYOC hoăc DPAN
Cột I: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TP nhưng trừ đi sản lượng đã được tính ở các cột K, L,M,N,O,P
Cột G:Cột J: Tổng sản lượng theo nhân viên (mỗi nhân viên 1 hàng) có loại kiểm là TG1 hoặc TG2 hoặc TG3 hoặc TG4 hoặc TG5 hoặc KHA và không phải khách là TOYO hoặc TAMA hoăc KRAR hoăc TOGChoăc TYOC hoăc DPAN hoặc DECA

P/S: Sản lượng tính theo mét, nếu dòng dữ liệu nào có giá trị sản lượng nằm ở cột Kg thì qui đổi 1Kg = 4m
Nếu giá trị Sản lượng tại 1 dòng lớn hơn 600 phải kiểm tra lại (hoặc loại ra luôn khỏi tính tổng)
Nếu dòng nào cột Máy trống cũng loại ra không tính tổng
Các nhân viên được tính sản lượng là các nhân viên được đăng ký: tên đầy đủ nằm từ B4-B42, tên tài khoản từ C4-C42 và giá trị để biết dòng sản lượng đó của ai NV kiểm 1, các nhân viên không có tên thì bỏ qua
Dữ liệu là dữ liệu hàng ngày, mỗi ngày mỗi tính, thường khi tính mỗi ngày xong em sẽ copy qua 1 file khác (gồm 31 sheet từ ngày 1 đến 31, ngày nào không có thì để trống sheeet đó)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom