MeThuongNho
Thành viên thường trực




- Tham gia
- 30/10/09
- Bài viết
- 368
- Được thích
- 77
- Nghề nghiệp
- Sale - Planning
Bạn dùng thử cái nàyDear Anh /Chị,
Em cần copy giá trị từ sheet THDH qua sheet TONGHOP có điều kiện theo file và hình đính kèm.
Mong mọi người giúp đỡ.
Cám ơn Anh/ Chị nhiều!
Sub CopyData()
Dim sArr(), dArr(), I As Long, J As Long, K As Long
With Sheets("THDH")
sArr = .Range("A2", .Range("A65535").End(3)).Resize(,11).Value
ReDim dArr(1 To UBound(sArr), 1 To UBound(sArr, 2))
For I = 1 To UBound(sArr)
If sArr(I, 4) <> Empty Then
K = K + 1
For J = 1 To UBound(sArr, 2)
dArr(K, J) = sArr(I, J)
Next J
End If
Next I
End With
With Sheets("TONGHOP")
.Range("A2:K" & .Range("A65535").End(3).Row + 1).ClearContents
.Range("A2").Resize(K, UBound(sArr, 2)) = dArr
End With
End Sub
Sub GPE()
Dim Arr(), dArr(), i As Long, j As Long, k As Long
Arr = Sheet1.Range("A2:K" & Sheet1.Range("A65000").End(xlUp).Row).Value
ReDim dArr(1 To UBound(Arr), 1 To 11)
For i = 1 To UBound(Arr)
If Arr(i, 4) <> Empty Then
k = k + 1: dArr(k, 1) = k
For j = 2 To 11
dArr(k, j) = Arr(i, j)
Next j
End If
Next i
If k <> 0 Then
Sheet2.Range("A65000").End(xlUp).Offset(1).Resize(k, 11) = dArr
End If
End Sub
Muốn gì thì đưa file thật lên đây, nêu yêu cầu cụ thể. Bạn muốn kiểm tra không trùng là sao? tức là cái nào có rồi thì không ghi vào sheet TONGHOP đúng không? Hay là khi ghi lại dữ liệu sang sheet TONGHOP thì xóa dữ liệu cũ trước khi ghi hay như thế nào nửa?Cám ơn giaiphap,
Code anh rất hay, nhưng lại bị lặp lại khi chạy lại lần nữa, mình muốn chạy lại với điều kiện không trùng số SX thì sửa sao ạ.
( THÊM: Với nếu mình muốn tăng vùng dữ liệu thì sửa code chỗ nào, vì code Dim i, j k mình k rành nên chỉ giúp mình với)
(ĐK vùng mới : từ A6: Y3200, số SX vẫn là cột D.)
Giúp mình với nha, đang gấp lắm.
Cám ơn nhiều!
Sub GPE()
Dim Arr(), dArr(), sArr(), i As Long, j As Long, k As Long
Dim Dic As Object, Tmp As String
Arr = Sheet1.Range("A3:Y" & Sheet1.Range("B65000").End(xlUp).Row).Value
k = Sheet2.Range("D65000").End(xlUp).Row
Set Dic = CreateObject("Scripting.Dictionary")
ReDim dArr(1 To UBound(Arr), 1 To 25)
With Dic
If k > 1 Then
sArr = Sheet2.Range("D2:V" & k).Value
k = 0
For i = 1 To UBound(sArr)
Tmp = Arr(i, 4)
If Not .Exists(Tmp) Then
k = k + 1: dArr(k, 1) = k
.Add Tmp, k
For j = 2 To 22
dArr(k, j) = Arr(i, j)
Next j
End If
Next i
Else
k = 0
End If
For i = 1 To UBound(Arr)
If Arr(i, 4) <> Empty Then
Tmp = Arr(i, 4)
If Not .Exists(Tmp) Then
k = k + 1: dArr(k, 1) = k
.Add Tmp, k
For j = 2 To 11
dArr(k, j) = Arr(i, j)
Next j
For j = 15 To 25
dArr(k, j - 3) = Arr(i, j)
Next j
End If
End If
Next i
End With
If k <> 0 Then
i = Sheet2.Range("A65000").End(xlUp).Row
If i > 1 Then Sheet2.Range("A2:V" & i).ClearContents
Sheet2.Range("A65000").End(xlUp).Offset(1).Resize(k, 22) = dArr
End If
End Sub