Chạy vòng lặp với biến thoả mãn điều kiện

Liên hệ QC

tkhieu

Thành viên chính thức
Tham gia
13/9/13
Bài viết
59
Được thích
5
Xin chào mọi người.
Nhờ mọi người giúp mình code VBA với vòng lặp thoả mãn điều kiện: Biến j được gán với ô B7 và chạy từ 1 đến 3, nếu biến j không tồn tại trong vùng dữ liệu C7:F7 thì sẽ tăng j, nếu biến j có tồn tại trong vùng dữ liệu C7:F7 thì chạy 1 đoạn code (code này mình có sẵn rồi).
MÌnh có gửi file bên dưới.
Cám ơn mọi người!
 

File đính kèm

  • test.xlsm
    11.4 KB · Đọc: 15
nếu biến j không tồn tại trong vùng dữ liệu C7:F7 thì sẽ tăng j, nếu biến j có tồn tại trong vùng dữ liệu C7:F7 thì chạy 1 đoạn code (code này mình có sẵn rồi).
Đề ra chưa chặt chẽ, tăng J thì tăng đến khi nào, nếu tìm hoài hổng có?
 
J chạy từ 1 đến 3 ạ. Thực tế là j chạy đến số nhiều hơn, nhưng mình lấy ví dụ là đến 3.
Nãy tôi cứ ngỡ chạy 1-3 không có thì tăng tiếp. Vậy câu hỏi kế, B7 trong file bạn gửi đang là 2, vậy sẽ chỉ lặp 2, xong tới 3 luôn. Hay là vẫn bắt đầu từ 1, và số đó chỉ gõ tượng trưng vậy thôi
 
Nãy tôi cứ ngỡ chạy 1-3 không có thì tăng tiếp. Vậy câu hỏi kế, B7 trong file bạn gửi đang là 2, vậy sẽ chỉ lặp 2, xong tới 3 luôn. Hay là vẫn bắt đầu từ 1, và số đó chỉ gõ tượng trưng vậy thôi
J chạy từ 1 đến 3 và được gán vào ô B7. Đầu tiên j =1, j có nằm trong vùng C7:F7 nên sẽ chạy 1 đoạn code. Sau đó j = 2, j không có trong vùng C7:F7 nên sẽ tăng j lên j+1 là 3, j =3 có trong vùng C7:F7 nên lại chạy 1 đoạn code như j =1.
Mình giải thích như vậy không biết bạn hiểu không :D
 
Code
Mã:
Public Sub test()
Dim rng As Range, k As Long, j As Long
Set rng = Range("C7:F7")
For j = 1 To 3
    Range("B7").Value = j
    If Application.CountIf(rng, j) > 0 Then
        'Chay code
        MsgBox "No day roi"
    End If
Next j
End Sub
 
Thớt không biết viết code, hay không biết phân tích yêu cầu của mình?
Trước mắt là để hiểu cái yếu cầu này khó gấp bội lần viết code.
 
Vùng C7:F7 của bạn lần lượt là: 1,1,3,3
Theo mô tả của bạn thì muốn B7 lần lượt là 1 và 3.
2 giá trị này sẽ lần lượt cung cấp cho code "ABC" , và chạy code cho từng lần.
Đúng không?
Nếu đúng vậy: giả sử C7:F7 là: 1,1,3,1000000
Nếu dùng vòng lặp từ 1 đến 1000000, nghĩa là đã phí mất 997997 vòng chạy code.
Sao không loop qua từng ô trong C7:F7, kiểm tra nếu giá trị này xuất hiện lần đầu thì gán cho ô B7 ?
 
Code
Mã:
Public Sub test()
Dim rng As Range, k As Long, j As Long
Set rng = Range("C7:F7")
For j = 1 To 3
    Range("B7").Value = j
    If Application.CountIf(rng, j) > 0 Then
        'Chay code
        MsgBox "No day roi"
    End If
Next j
End Sub
Cám ơn bạn, mình áp dụng và đã được
Thớt không biết viết code, hay không biết phân tích yêu cầu của mình?
Trước mắt là để hiểu cái yếu cầu này khó gấp bội lần viết code.
Có thể do cách mình diễn đạt chưa tốt nên mọi người không hiểu :D
 
Cám ơn bạn, mình áp dụng và đã được

Có thể do cách mình diễn đạt chưa tốt nên mọi người không hiểu
Thật gặp may cho những người không hiểu!
Tệ hơn là hiểu tầm bậy, tầm bạ

Mình xin ví dụ: "Biến j được gán với ô B7 và chạy . . ." . Hình như bạn muốn viết là lấy trị trong ô B7 gán vô biến J thì phải?
 
Thật gặp may cho những người không hiểu!
Tệ hơn là hiểu tầm bậy, tầm bạ

Mình xin ví dụ: "Biến j được gán với ô B7 và chạy . . ." . Hình như bạn muốn viết là lấy trị trong ô B7 gán vô biến J thì phải?
Tôi lúc đầu cứ ngỡ:
Set j = Range("B1")
Sau đó j chạy đi ô khác...
 
Thật gặp may cho những người không hiểu!
Tệ hơn là hiểu tầm bậy, tầm bạ

Mình xin ví dụ: "Biến j được gán với ô B7 và chạy . . ." . Hình như bạn muốn viết là lấy trị trong ô B7 gán vô biến J thì phải?
Hình như mình viết ngược, đúng là phải B7 = j
Qua có tí men nên vậy
May mà vẫn có bạn hiểu được ý :D
 
Mới 3 giờ chiều thứ Sáu mà đã "men".
Cả một hệ thống kinh tế suy đồi. Mình không nói chuyện uống rượu. Mà mình nói uống bất kể vậy còn đem khoe, coi như đấy là một việc tự nhiên phải xảy ra.
 
Mới 3 giờ chiều thứ Sáu mà đã "men".
Cả một hệ thống kinh tế suy đồi. Mình không nói chuyện uống rượu. Mà mình nói uống bất kể vậy còn đem khoe, coi như đấy là một việc tự nhiên phải xảy ra.
"Cả một hệ thống kinh tế suy đồi" có gì đó chưa chuẩn, hình như né tránh vấn đề nhạy cảm :p
 
Web KT
Back
Top Bottom