Phần tử của 1 Range

Liên hệ QC

overnight_9

strive for mastery
Tham gia
4/7/12
Bài viết
160
Được thích
81
Nghề nghiệp
Công nhân
Anh chị cho em hỏi,
giã sử ta có Rng = sheet1.Range("A1:A50"), nếu sheet1 cell $B$1 là là 1 phần tử của Rng thì sheet2 cell $C$1 trả về kết quả 100, còn không thì trả về 10

Vậy Code mình khai biến thế nào xin các anh chị hướng dẫn giúp.

em cám ơn nhiều.
 
Lần chỉnh sửa cuối:
Cho em hỏi,
Giã sử ta có Rng = sheet1.Range("A1:A50"), nếu sheet1 cell $B$1 là là 1 phần tử của Rng thì sheet2 cell $C$1 trả về kết quả 100, còn không thì trả về 10
Vậy Code mình khai biến thế nào xin chỉ giúp.

/-)ầu tiên mình xin thử diễn dịch câu văn trên sang tiếng Việt thế này xem đúng í bạn không nhe:

"Giã sử ta có biến Rng được gán vô vùng sheet1.Range("A1:A50"), nếu trị tại sheet1 cell $B$1 là trị của 1 phần tử thuộc Rng thì sheet2 cell $C$1 trả về kết quả 100, còn không thì trả về 10"

Nếu đúng như cách hiểu này thì có code sau:

PHP:
  Dim Rng As Range, sRng As Range

 Set Rng = sheet1.Range("A1:A50")
 Set sRng = Rng.Find([B1].Value,,XlFormulas, xlWhole)
 With  ThisWorkBook.WorkSheets("Sheet2").[C1]
       If sRng Is Nothing Then
             .Value= 10
       Else
              .Value= 100
       End If  
 End With
 
Upvote 0
Hi anh chị & thầy Concogia

giúp em chỉnh lại code này 1 chút.

PHP:
Dim Vung, I, J, kK, Mg, TachDm, TachMau, Tong, K, A, B
 Dim rng As Range, dkrg As Range
    If Not Intersect(Target, Range([K132], [K10000].End(xlUp))) Is Nothing Or Not Intersect(Target, Range([AI132], [AI10000].End(xlUp))) Is Nothing Then
    If ActiveCell.Interior.ColorIndex = 6 Then
    MsgBox "Ban da chon O nay roi"
    Else
    Vung = ActiveCell.Offset(, -3).Resize(, 14)
        Tong = Tong + Len(ActiveCell) - Len(Replace(ActiveCell, "+", "")) + 1
    ReDim Mg(1 To Tong, 1 To 7)
                TachDm = Split(ActiveCell, "+")
                TachMau = Split(Vung(1, 1), "/")
                For J = LBound(TachDm) To UBound(TachDm)
                    K = K + 1
        Set rng = ThisWorkbook.Sheets(1).Range("A1:A50")
        Set dkrg = rng.Find((Vung(1, 12)), , xlFormulas, xlWhole)                      Mg(K, 1) = TachDm(J): Mg(K, 2) = TachMau(J): Mg(K, 3) = Vung(1, 12): Mg(K, 4) = Vung(1, 11): Mg(K, 5) = IIf(Mg(K, 3) <> dkrg, Vung(1, 14), 1 / Vung(1, 14)): Mg(K, 6) = Range("AJ108"): Mg(K, 7) = Range("P112")                      
                    Next J
    ActiveCell.Interior.ColorIndex = 6
 Dim Ws As Worksheet
    Set Ws = Application.Workbooks("dulieu_tho.xlsm").Worksheets("dulieu_tho")
    With Ws.[B1000].End(xlUp)(2)
        If .Row = 7 Then
            .Offset(, -1) = 1
        Else
            .Offset(, -1) = 1 + Application.WorksheetFunction.Max(Ws.Range((Ws.[B5]), (Ws.[B10000].End(xlUp))).Offset(, -1))
        End If
    End With
    Ws.[B1000].End(xlUp)(2).Resize(K, 7) = Mg
    Application.Workbooks("dulieu_tho").Save      
    End If
    End If    
    Set Ws = Nothing
Exit Sub      
End Sub

Biến này bị lỗi về cấu trúc, em tìm không ra

PHP:
IIf(Mg(K, 3) <> dkrg, Vung(1, 14), 1 / Vung(1, 14))

Y nghĩa là nếu Mg(K, 3) bằng với 1 trong các phần tử thuộc dkrg thì trả về 1 giá trị 1/vung(1, 14), còn ngược lại trả về giá trị vung(1, 14).

mong các anh chị và thầy chỉ giúp. cám ơn nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi anh chị & thầy Concogia

giúp em chỉnh lại code này 1 chút.

PHP:
Dim Vung, I, J, kK, Mg, TachDm, TachMau, Tong, K, A, B
 Dim rng As Range, dkrg As Range
    If Not Intersect(Target, Range([K132], [K10000].End(xlUp))) Is Nothing Or Not Intersect(Target, Range([AI132], [AI10000].End(xlUp))) Is Nothing Then
    If ActiveCell.Interior.ColorIndex = 6 Then
    MsgBox "Ban da chon O nay roi"
    Else
    Vung = ActiveCell.Offset(, -3).Resize(, 14)
        Tong = Tong + Len(ActiveCell) - Len(Replace(ActiveCell, "+", "")) + 1
    ReDim Mg(1 To Tong, 1 To 7)
                TachDm = Split(ActiveCell, "+")
                TachMau = Split(Vung(1, 1), "/")
                For J = LBound(TachDm) To UBound(TachDm)
                    K = K + 1
        Set rng = ThisWorkbook.Sheets(1).Range("A1:A50")
        Set dkrg = rng.Find((Vung(1, 12)), , xlFormulas, xlWhole)                      Mg(K, 1) = TachDm(J): Mg(K, 2) = TachMau(J): Mg(K, 3) = Vung(1, 12): Mg(K, 4) = Vung(1, 11): Mg(K, 5) = IIf(Mg(K, 3) <> dkrg, Vung(1, 14), 1 / Vung(1, 14)): Mg(K, 6) = Range("AJ108"): Mg(K, 7) = Range("P112")                      
                    Next J
    ActiveCell.Interior.ColorIndex = 6
 Dim Ws As Worksheet
    Set Ws = Application.Workbooks("dulieu_tho.xlsm").Worksheets("dulieu_tho")
    With Ws.[B1000].End(xlUp)(2)
        If .Row = 7 Then
            .Offset(, -1) = 1
        Else
            .Offset(, -1) = 1 + Application.WorksheetFunction.Max(Ws.Range((Ws.[B5]), (Ws.[B10000].End(xlUp))).Offset(, -1))
        End If
    End With
    Ws.[B1000].End(xlUp)(2).Resize(K, 7) = Mg
    Application.Workbooks("dulieu_tho").Save      
    End If
    End If    
    Set Ws = Nothing
Exit Sub      
End Sub

Biến này bị lỗi về cấu trúc, em tìm không ra

PHP:
IIf(Mg(K, 3) <> dkrg, Vung(1, 14), 1 / Vung(1, 14))

Y nghĩa là nếu Mg(K, 3) bằng với 1 trong các phần tử thuộc dkrg thì trả về 1 giá trị 1/vung(1, 14), còn ngược lại trả về giá trị vung(1, 14).

mong các anh chị và thầy chỉ giúp. cám ơn nhiều.
Hình như là thế này chứ nhỉ
IIf(application.WorksheetFunction.CountIf(rng,Mg(K, 3)) ,1 / Vung(1, 14),Vung(1, 14))
Bài này làm lâu quá, quên mất đề ra sao rồi
Híc
 
Upvote 0
Web KT
Back
Top Bottom