Viết Code VBA để tìm các điều kiện có thể xảy ra theo các biến đưa vào (1 người xem)

Liên hệ QC

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

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em có một vấn đề muốn hỏi các thầy, các anh chị trên diễn đàn là
Chương trình của em Ví dụ có 4 biến (Có thểm thêm nhiều biến nữa) nhờ các thành viên của diễn đàn viết giúp code VBA để tìm các điều kiện bằng không và khác không xảy ra của các biến đó
Trong file mẫu em gửi có các biến là a, b, c, d tiềm điều kiện bằng không hoặc khác không của các biến
Hàng số thứ tự: Ở bên trên thể hiện hàng số thứ tự để đếm các điều kiện có thể xảy ra
Số 1: Đại diện cho điều kiện khác không
Số 0: đại diện cho điều kiện bằng không
Mong được các thành viên trên diễn đàn giúp đỡ
Em cảm ơn!
 

File đính kèm

Thật sự là chưa hiểu bạn lắm; Viết đại cặp macro này để thêm thông tin:
PHP:
Option Explicit
Dim Dm As Long
Sub ChuaHieuBanLam()
 Dim Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range

1 Set Rg1 = Range([B3], [B3].End(xlToRight))
 Set Rg2 = Rg1.Offset(1):    Set Rg3 = Rg1.Offset(2)
3 Set Rg4 = Rg1.Offset(3):    GPE Rg1, Rg2, Rg3, Rg4
 MsgBox Dm
End Sub
Mã:
Sub GPE(Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range)
 Dim Cl1 As Range, Cl2 As Range, Cl3 As Range, Cl4 As Range
 Dim Tg As Integer
5 For Each Cl1 In Rg1
    For Each Cl2 In Rg2
7        For Each Cl3 In Rg3
            For Each Cl4 In Rg4
9                Tg = Cl1.Value + Cl2.Value + Cl3.Value + Cl4.Value
                If Tg = 4 Then
11                    Dm = Dm + 1
                End If
13            Next Cl4
        Next Cl3
15    Next Cl2
 Next Cl1
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Thật sự là chưa hiểu bạn lắm; Viết đại cặp macro này để thêm thông tin:
PHP:
Option Explicit
Dim Dm As Long
Sub ChuaHieuBanLam()
 Dim Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range
 Set Rg1 = Range([B3], [B3].End(xlToRight))
 Set Rg2 = Rg1.Offset(1):    Set Rg3 = Rg1.Offset(2)
 Set Rg4 = Rg1.Offset(3):    GPE Rg1, Rg2, Rg3, Rg4
 MsgBox Dm
End Sub
Mã:
Sub GPE(Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range)
 Dim Cl1 As Range, Cl2 As Range, Cl3 As Range, Cl4 As Range
 Dim Tg As Integer
 For Each Cl1 In Rg1
    For Each Cl2 In Rg2
        For Each Cl3 In Rg3
            For Each Cl4 In Rg4
                Tg = Cl1.Value + Cl2.Value + Cl3.Value + Cl4.Value
                If Tg = 4 Then
                    Dm = Dm + 1
                End If
            Next Cl4
        Next Cl3
    Next Cl2
 Next Cl1
End Sub
Em cảm ơn thầy đã giúp đỡ tuy nhiên chương trình yêu cầu là kết hợp với 4 biến a, b, c, d thì có bao nhiêu điều kiện xảy ra thôi ạ
Vi dụ: Điều kiện 1 là a = 0, b = 0, c =0, d = 0, tương ứng 0, 0, 0, 0 trên bảng ở cột B
Điều kiện 2 là: a = 0, b = 0, c =0, d = 1, tương ứng 0, 0, 0, 1 trên bảng ở cột C
tương tự như vậy để tìm ra các điều kiện còn lại làm sao cho các điều kiện không trùng nhau và hàng số thứ tự liệt kê thứ tự đếm các điều kiện tìm được
Em cảm ơn ạ
 
Upvote 0
Vậy thì thế này:
Mã:
Option Explicit
Dim Arr(1 To 999, 1 To 1)
Dim MyStr As String
Dim Dm As Integer
Sub ChuaHieuBanLam()
 Dim Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range
 Set Rg1 = Range([B3], [B3].End(xlToRight))
 Set Rg2 = Rg1.Offset(1):               Set Rg3 = Rg1.Offset(2)
 Set Rg4 = Rg1.Offset(3):               GPE Rg1, Rg2, Rg3, Rg4
 MsgBox Dm
 [b13].Resize(Dm).Value = Arr()
 Dm = 0:                                MyStr = ""
 Erase Arr()
End Sub
PHP:
Sub GPE(Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range)
 Dim Cl1 As Range, Cl2 As Range, Cl3 As Range, Cl4 As Range
 Dim Tmp As String
 
 For Each Cl1 In Rg1
    For Each Cl2 In Rg2
        For Each Cl3 In Rg3
            For Each Cl4 In Rg4
                Tmp = Str(Cl1.Value) & Str(Cl2.Value) & Str(Cl3.Value) & Str(Cl4.Value)
                If InStr(MyStr, Tmp) Then
                Else
                    MyStr = MyStr & Tmp
                    Dm = Dm + 1:        Arr(Dm, 1) = Tmp
                End If
            Next Cl4
        Next Cl3
    Next Cl2
 Next Cl1
End Sub
 
Upvote 0
Kết hợp 4 lần 0-1 tức là một số có 4 bits, số điều kiện là 2^4 => 16 trường hợp tất cả.
 
Upvote 0
Em cảm ơn thầy đã giúp đỡ tuy nhiên chương trình yêu cầu là kết hợp với 4 biến a, b, c, d thì có bao nhiêu điều kiện xảy ra thôi ạ
Vi dụ: Điều kiện 1 là a = 0, b = 0, c =0, d = 0, tương ứng 0, 0, 0, 0 trên bảng ở cột B
Điều kiện 2 là: a = 0, b = 0, c =0, d = 1, tương ứng 0, 0, 0, 1 trên bảng ở cột C
tương tự như vậy để tìm ra các điều kiện còn lại làm sao cho các điều kiện không trùng nhau và hàng số thứ tự liệt kê thứ tự đếm các điều kiện tìm được
Em cảm ơn ạ

Chỉ bạn công thức đơn giản thế này:
Mã:
=DEC2BIN(COLUMNS($A:A),COUNTA($A$3:$A$6))
Công thức gõ tại B3 rồi kéo fill sang phải, đến khi nào gặp lỗi thì ngưng

Capture.jpg
 

File đính kèm

Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom