chọn một giá trị bất kì trong mảng, gán vào một dòng trong excel (1 người xem)

Liên hệ QC

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

sonlamhpu

Thành viên chính thức
Tham gia
20/8/09
Bài viết
84
Được thích
10
Xin chào các anh chị!
Hiện tại em đang mắc một việc, mong anh chị giúp đỡ.
Em muốn lấy một dòng bất kì thoả mãn điều kiện tìm kiếm rồi paste ngược trở lại vùng điều kiện
Trong sheet TEST, em có một bảng bao gồm mã và số lượng các sản phẩm
Giờ em đẩy nó vào mảng, sau đó trong sheet 220 em tim theo mã đã bôi đỏ, xem có giống với giá trị trong mảng, thì dán cái mảng đó vào dòng có màu vàng.
Tiêu điểm: Em ko biết làm thế nào để chọn một dòng bất kì trong mảng để dán vào một range trong excel.
Em cảm ơn ạ!
 

File đính kèm

Xin chào các anh chị!
Hiện tại em đang mắc một việc, mong anh chị giúp đỡ.
Em muốn lấy một dòng bất kì thoả mãn điều kiện tìm kiếm rồi paste ngược trở lại vùng điều kiện
Trong sheet TEST, em có một bảng bao gồm mã và số lượng các sản phẩm
Giờ em đẩy nó vào mảng, sau đó trong sheet 220 em tim theo mã đã bôi đỏ, xem có giống với giá trị trong mảng, thì dán cái mảng đó vào dòng có màu vàng.
Tiêu điểm: Em ko biết làm thế nào để chọn một dòng bất kì trong mảng để dán vào một range trong excel.
Em cảm ơn ạ!
Tôi lấy ví dụ: Trên sheet 220, tôi chọn mã 848E 84815 và tìm kiếm trên sheet TEST, tôi tìm thấy nó ở hàng 47. Vậy thì công việc tiếp theo là sẽ làm gì với nó?
Tiêu điểm: Bạn chưa nhận được câu trả lời vì bạn chưa đưa ra ví dụ cụ thể nên người khác chưa hiểu ý bạn.
Gợi ý: Bạn có thể sử dụng phương thức Range.Find để giải quyết vấn đề. Tất nhiên giải quyết theo hướng này thì không đưa dữ liệu vào mảng.
 
Upvote 0
Tôi lấy ví dụ: Trên sheet 220, tôi chọn mã 848E 84815 và tìm kiếm trên sheet TEST, tôi tìm thấy nó ở hàng 47. Vậy thì công việc tiếp theo là sẽ làm gì với nó?
Tiêu điểm: Bạn chưa nhận được câu trả lời vì bạn chưa đưa ra ví dụ cụ thể nên người khác chưa hiểu ý bạn.
Gợi ý: Bạn có thể sử dụng phương thức Range.Find để giải quyết vấn đề. Tất nhiên giải quyết theo hướng này thì không đưa dữ liệu vào mảng.

Quan trọng ở đây em muốn dùng mảng ạ, giờ mà dùng vòng for để cop thì với nhiều sheet như 220 thi chạy lâu lắm ạ
Nên em muốn đẩy vào mảng. Rồi tìm kiếm trong mảng, tìm được dữ liệu rồi thì em sẽ paste cái dòng đó vào trong ô đúng điều kiện

VD:
Tìm mã 848E 94352 (trong sheet 220) trong sheet TEST (sheet này có được từ mảng paste ra).
Nếu tìm thấy thì lấy một dòng trong mảng (tương đương với Range(C68:AG68)) paste vào Range(D25:AH25)

Em cảm ơn các bác!
 
Upvote 0
Quan trọng ở đây em muốn dùng mảng ạ, giờ mà dùng vòng for để cop thì với nhiều sheet như 220 thi chạy lâu lắm ạ
Nên em muốn đẩy vào mảng. Rồi tìm kiếm trong mảng, tìm được dữ liệu rồi thì em sẽ paste cái dòng đó vào trong ô đúng điều kiện

VD:
Tìm mã 848E 94352 (trong sheet 220) trong sheet TEST (sheet này có được từ mảng paste ra).
Nếu tìm thấy thì lấy một dòng trong mảng (tương đương với Range(C68:AG68)) paste vào Range(D25:AH25)

Em cảm ơn các bác!
Bạn lưu một bản dự phòng rồi chạy thử code sau xem nó chạy có lâu lắm không nhé.
[GPECODE=vb]Sub Test()
Dim Cll As Range, Sou As Range
Set Cll = Sheets("220").[A5]
On Error Resume Next
Do While Not IsEmpty(Cll)
Set Sou = Sheets("TEST").[B:B].Find(Cll, , xlValues, xlWhole)
If Not Sou Is Nothing Then Cll.Offset(-1, 3).Resize(, 31).Value = Sou.Offset(, 1).Resize(, 31).Value
Set Cll = Cll.Offset(7)
Loop
End Sub[/GPECODE]
 
Upvote 0
Bạn lưu một bản dự phòng rồi chạy thử code sau xem nó chạy có lâu lắm không nhé.
[GPECODE=vb]Sub Test()
Dim Cll As Range, Sou As Range
Set Cll = Sheets("220").[A5]
On Error Resume Next
Do While Not IsEmpty(Cll)
Set Sou = Sheets("TEST").[B:B].Find(Cll, , xlValues, xlWhole)
If Not Sou Is Nothing Then Cll.Offset(-1, 3).Resize(, 31).Value = Sou.Offset(, 1).Resize(, 31).Value
Set Cll = Cll.Offset(7)
Loop
End Sub[/GPECODE]

Chạy rất OK bác ạ, mà rất nhanh nữa.
Khác hẳn với cách em cho vòng for vào để chạy, được mở mang nhiều rồi ạ.
Nhưng nếu em làm việc với mảng thì thế nào ạ bác? thay bằng Sheets("TEST"), em đẩy nó vào mảng thì sao ạ.
Em cảm ơn bác nhiều ạ.!
 
Upvote 0
Chạy rất OK bác ạ, mà rất nhanh nữa.
Khác hẳn với cách em cho vòng for vào để chạy, được mở mang nhiều rồi ạ.
Nhưng nếu em làm việc với mảng thì thế nào ạ bác? thay bằng Sheets("TEST"), em đẩy nó vào mảng thì sao ạ.
Em cảm ơn bác nhiều ạ.!

Muốn xài mảng thì chạy thử Sub này xem sao.
PHP:
Public Sub GPE()
Dim Dic As Object, sArr(), tArr(), dArr(1 To 1, 1 To 31)
Dim I As Long, J As Long, Rws As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("TEST")
    tArr = .Range("B2", .Range("B2").End(xlDown)).Resize(, 32).Value
End With
For I = 1 To UBound(tArr)
    Dic.Item(tArr(I, 1)) = I
Next I
With Sheets("220")
    sArr = .Range("A1", .Range("A65536").End(xlUp)).Value
    For I = 5 To UBound(sArr, 1) Step 7
        Tem = sArr(I, 1)
        If Dic.Exists(Tem) Then
            Rws = Dic.Item(Tem)
            For J = 1 To 31
                dArr(1, J) = tArr(Rws, J + 1)
            Next J
            .Range("D" & I - 1).Resize(, 31) = dArr
        End If
    Next I
End With
Set Dic = Nothing
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom