Điền dữ liệu theo điều kiện ? (1 người xem)

  • Thread starter Thread starter KUMI
  • Ngày gửi Ngày gửi
Liên hệ QC

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

KUMI

Bụi phấn
Tham gia
17/1/12
Bài viết
564
Được thích
571
Xin chào GPE,
Em có một vấn đề như sau mà không biết viết code thế nào, GPE giúp em với ạ.
Ví dụ em có dữ liệu tại trong vùng C2:C10 là 0 và 1, em muốn những ô nào trong vùng dữ liệu này có số 1 thì tương ứng với nó là vùng A2:A10 điền OK
ví dụ ô C3 và C6 có số 1 thì ô A3 và A6 điền OK.

GPE giúp em với ạ, em xin cảm ơn.
Em đinh gửi file đính kèm nhưng bị hết dung lượng rồi mọi người thông cảm nhé!
 
Xin chào GPE,
Em có một vấn đề như sau mà không biết viết code thế nào, GPE giúp em với ạ.
Ví dụ em có dữ liệu tại trong vùng C2:C10 là 0 và 1, em muốn những ô nào trong vùng dữ liệu này có số 1 thì tương ứng với nó là vùng A2:A10 điền OK
ví dụ ô C3 và C6 có số 1 thì ô A3 và A6 điền OK.

GPE giúp em với ạ, em xin cảm ơn.
Em đinh gửi file đính kèm nhưng bị hết dung lượng rồi mọi người thông cảm nhé!

Thì cứ IF bình thường thôi (như bạn nói) là được rồi
VBA hay công thức đều sẽ làm như vậy!
 
Upvote 0
Thì cứ IF bình thường thôi (như bạn nói) là được rồi
VBA hay công thức đều sẽ làm như vậy!
Hi, Thầy con cũng định dùng công thức nhưng không dùng được vì có thể dữ liệu sẽ rất nhiều dùng đến đâu lại kéo xuống đến đó nó hơi bât tiện nên mới nghĩ đến code Thầy ạ.
Thầy viết dùm con đoạn code Thầy nhé , hihi!
 
Upvote 0
Xin chào GPE,
Em có một vấn đề như sau mà không biết viết code thế nào, GPE giúp em với ạ.
Ví dụ em có dữ liệu tại trong vùng C2:C10 là 0 và 1, em muốn những ô nào trong vùng dữ liệu này có số 1 thì tương ứng với nó là vùng A2:A10 điền OK
ví dụ ô C3 và C6 có số 1 thì ô A3 và A6 điền OK.

GPE giúp em với ạ, em xin cảm ơn.
Em đinh gửi file đính kèm nhưng bị hết dung lượng rồi mọi người thông cảm nhé!

thấy KUMI chơi vba lâu rồi, mấy đề tài trước hỏi toàn hóc búa, sao kỳ này hỏi đơn giản,,,ko biết có còn ẩn chứa điều gì ko???
Mã:
Sub dienso()
Dim C, A As Variant
C = [c2:c10]
ReDim A(1 To UBound(C), 1 To 1)
For i = 1 To UBound(C)
If C(i, 1) Then A(i, 1) = "ok"
Next
[a2].Resize(i - 1) = A
End Sub
 
Upvote 0
Hi, Thầy con cũng định dùng công thức nhưng không dùng được vì có thể dữ liệu sẽ rất nhiều dùng đến đâu lại kéo xuống đến đó nó hơi bât tiện nên mới nghĩ đến code Thầy ạ.
Thầy viết dùm con đoạn code Thầy nhé , hihi!
Thử đoạn code này xem sao. Giả định dữ liệu bắt đầu từ ô "C1"
Mã:
Public Sub Kumi()
Dim i As Long, Lr As Long, Rng()
    Lr = Sheet1.Range("C100000").End(xlUp).Row
    Rng = Sheet1.Range("A1:C" & Lr)
For i = 1 To UBound(Rng)
    If Rng(i, 3) = 1 Then Rng(i, 1) = "Ok"
Next i
    Sheet1.Range("A1").Resize(UBound(Rng), UBound(Rng, 2)) = Rng
End Sub
 
Upvote 0
thấy KUMI chơi vba lâu rồi, mấy đề tài trước hỏi toàn hóc búa, sao kỳ này hỏi đơn giản,,,ko biết có còn ẩn chứa điều gì ko???
Mã:
Sub dienso()
Dim C, A As Variant
C = [c2:c10]
ReDim A(1 To UBound(C), 1 To 1)
For i = 1 To UBound(C)
If C(i, 1) Then A(i, 1) = "ok"
Next
[a2].Resize(i - 1) = A
End Sub
Hi, vì giờ em mới đụng đến vấn đề này anh ạ. (vướng mắc đâu em hỏi ở đó thôi ạ)
Thật sự đoạn code anh gửi em cũng không hiểu gì cả chỉ biết sửa chữa áp dụng thôi ạ. Hì.
Cảm ơn anh và GPE nhiều nhé!
 
Upvote 0
Thầy viết dùm con đoạn code Thầy nhé , hihi!

Trời đất! Đã nói cứ IF bình thường như ta đang "nói" là được rồi
Ví dụ 1: Duyệt theo cell
Mã:
Sub Test1()
  Dim cel As Range
  For Each cel In Range("C2:C10000")
    If cel.Value = 1 Then cel.Offset(, -2) = "OK"
  Next
End Sub
Ví dụ 2: Dùng mảng
Mã:
Sub Test2()
  Dim arr, n As Long
  arr = Range("C2:C10000").Value
  For n = 1 To UBound(arr, 1)
    If arr(n, 1) = 1 Then
      arr(n, 1) = "OK"
    Else
      arr(n, 1) = vbNullString
    End If
  Next
  Range("A2:A10000").Value = arr
End Sub
Ví dụ 3: Dùng Replace
Mã:
Sub Test3()
  With Range("A2:A10000")
    .Value = .Offset(, 2).Value
    .Replace 0, vbNullString
    .Replace 1, "OK"
  End With
End Sub
Vân... vân... và hàng đống cách khác gần tương tự
 
Upvote 0
Trời đất! Đã nói cứ IF bình thường như ta đang "nói" là được rồi
Ví dụ 1: Duyệt theo cell
Mã:
Sub Test1()
  Dim cel As Range
  For Each cel In Range("C2:C10000")
    If cel.Value = 1 Then cel.Offset(, -2) = "OK"
  Next
End Sub
Ví dụ 2: Dùng mảng
Mã:
Sub Test2()
  Dim arr, n As Long
  arr = Range("C2:C10000").Value
  For n = 1 To UBound(arr, 1)
    If arr(n, 1) = 1 Then
      arr(n, 1) = "OK"
    Else
      arr(n, 1) = vbNullString
    End If
  Next
  Range("A2:A10000").Value = arr
End Sub
Ví dụ 3: Dùng Replace
Mã:
Sub Test3()
  With Range("A2:A10000")
    .Value = .Offset(, 2).Value
    .Replace 0, vbNullString
    .Replace 1, "OK"
  End With
End Sub
Vân... vân... và hàng đống cách khác gần tương tự
ý, xem ví dụ 1,3 của Thầy con mới thấy nó đơn giản rồi.. Ẹc .. Ẹc... :D
Xin cảm ơn Thầy nhiều ạ.
 
Upvote 0

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

Back
Top Bottom