huongmuine
Thành viên GPE
- Tham gia
- 27/5/10
- Bài viết
- 225
- Được thích
- 32
- Giới tính
- Nam
Tham khảo code và file đính kèm.Mình muốn lọc danh sách từ sheet Data sang sheet Loc theo kết quả tại sheet Loc. Nếu các mã khuyết tật có ký tự X- đứng đầu sẽ đánh dấu x vào cột "Có giấy chứng nhận". Xin cảm ơn.
Sub Loc()
Dim sArr(), dArr(), i As Long, j As Long
sArr = Sheet1.Range("A9:D" & Sheet1.Range("A65535").End(3).Row).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
For i = 1 To UBound(sArr, 1)
If sArr(i, 4) <> "" Then
j = j + 1
dArr(j, 1) = j
dArr(j, 2) = sArr(i, 2)
If InStr(sArr(i, 4), "X-") Then
dArr(j, 3) = Replace(sArr(i, 4), "X-", "")
dArr(j, 5) = "X"
Else
dArr(j, 3) = sArr(i, 4)
End If
End If
Next i
If j Then
Sheet2.Range("A6:E1000").ClearContents
Sheet2.Range("A6").Resize(j, 5) = dArr
End If
End Sub
Rất cảm ơn Bạn đã giúp đỡ.Tham khảo code và file đính kèm.
Mã:Sub Loc() Dim sArr(), dArr(), i As Long, j As Long sArr = Sheet1.Range("A9:D" & Sheet1.Range("A65535").End(3).Row).Value ReDim dArr(1 To UBound(sArr, 1), 1 To 5) For i = 1 To UBound(sArr, 1) If sArr(i, 4) <> "" Then j = j + 1 dArr(j, 1) = j dArr(j, 2) = sArr(i, 2) If InStr(sArr(i, 4), "X-") Then dArr(j, 3) = Replace(sArr(i, 4), "X-", "") dArr(j, 5) = "X" Else dArr(j, 3) = sArr(i, 4) End If End If Next i If j Then Sheet2.Range("A6:E1000").ClearContents Sheet2.Range("A6").Resize(j, 5) = dArr End If End Sub
Cảm ơn Bạn đã quan tâm.2 ý tưởng trùng nhau.
Xem file đính kèm nheNhờ các Bạn giúp hộ mình file trên. Xin cảm ơn
Sub Loc()
Dim sArr(), sArr2(), sArr3(), dArr(), i As Long, j As Long, k As Long
sArr = Sheet1.Range("B9:D" & Sheet1.Range("B65535").End(3).Row).Value
sArr2 = Sheet3.Range("B2:C" & Sheet3.Range("B65535").End(3).Row).Value
sArr3 = Sheet2.Range("D5:" & Sheet2.Range("D5").End(xlToRight).Address(0, 0)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 13)
For i = 1 To UBound(sArr, 1)
If sArr(i, 3) <> "" Then
j = j + 1
dArr(j, 1) = j
dArr(j, 2) = sArr(i, 1)
For k = 1 To UBound(sArr2, 1)
If Replace(sArr(i, 3), "X-", "") = sArr2(k, 1) Then
If InStr(sArr(i, 3), "X-") Then
dArr(j, k + 3) = "x"
dArr(j, 13) = "x"
Else
dArr(j, k + 3) = "x"
End If
End If
Next k
End If
Next i
If j Then
Sheet2.Range("A6:M1000").ClearContents
Sheet2.Range("A6").Resize(j, 13) = dArr
End If
End Sub
Xin cảm ơn Bạn đã nhiệt tình giúp đỡ. Kết quả đúng như mình mong đợi.Xem file đính kèm nhe
Mã:Sub Loc() Dim sArr(), sArr2(), sArr3(), dArr(), i As Long, j As Long, k As Long sArr = Sheet1.Range("B9:D" & Sheet1.Range("B65535").End(3).Row).Value sArr2 = Sheet3.Range("B2:C" & Sheet3.Range("B65535").End(3).Row).Value sArr3 = Sheet2.Range("D5:" & Sheet2.Range("D5").End(xlToRight).Address(0, 0)).Value ReDim dArr(1 To UBound(sArr, 1), 1 To 13) For i = 1 To UBound(sArr, 1) If sArr(i, 3) <> "" Then j = j + 1 dArr(j, 1) = j dArr(j, 2) = sArr(i, 1) For k = 1 To UBound(sArr2, 1) If Replace(sArr(i, 3), "X-", "") = sArr2(k, 1) Then If InStr(sArr(i, 3), "X-") Then dArr(j, k + 3) = "x" dArr(j, 13) = "x" Else dArr(j, k + 3) = "x" End If End If Next k End If Next i If j Then Sheet2.Range("A6:M1000").ClearContents Sheet2.Range("A6").Resize(j, 13) = dArr End If End Sub
Public Sub Gpe()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Tmp As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("Ma").Range("B2:B9").Value
For I = 1 To 8
Dic.Item(sArr(I, 1)) = I + 3
Next I
sArr = Sheets("Data").Range("B9", Sheets("Data").Range("B9").End(xlDown)).Resize(, 3).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 13)
For I = 1 To R
If sArr(I, 3) <> Empty Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
If Left(sArr(I, 3), 2) = "X-" Then
Tmp = Mid(sArr(I, 3), 3)
dArr(K, 13) = "x"
Else
Tmp = sArr(I, 3)
End If
dArr(K, Dic.Item(Tmp)) = "x"
End If
Next I
Sheets("Loc").Range("A6").Resize(K, 13) = dArr
Set Dic = Nothing
End Sub
Rất cảm ơn Thầy đã giúp đỡ!Thêm một cách dùng "dao mỗ trâu".
PHP:Public Sub Gpe() Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Tmp As String Set Dic = CreateObject("Scripting.Dictionary") sArr = Sheets("Ma").Range("B2:B9").Value For I = 1 To 8 Dic.Item(sArr(I, 1)) = I + 3 Next I sArr = Sheets("Data").Range("B9", Sheets("Data").Range("B9").End(xlDown)).Resize(, 3).Value R = UBound(sArr) ReDim dArr(1 To R, 1 To 13) For I = 1 To R If sArr(I, 3) <> Empty Then K = K + 1 dArr(K, 1) = K dArr(K, 2) = sArr(I, 1) If Left(sArr(I, 3), 2) = "X-" Then Tmp = Mid(sArr(I, 3), 3) dArr(K, 13) = "x" Else Tmp = sArr(I, 3) End If dArr(K, Dic.Item(Tmp)) = "x" End If Next I Sheets("Loc").Range("A6").Resize(K, 13) = dArr Set Dic = Nothing End Sub
Nhờ Thầy giải thích giúp: I + 3 là gì ạ.Dic.Item(sArr(I, 1)) = I + 3
Cảm ơn Thầy rất nhiều.Cộng thêm 3 thành số cột trong sheet Loc: sArr(I, 1)-->I=1, mã VD : cột I+3=4.