thanhduc_iit
Thành viên chính thức
- Tham gia
- 2/4/11
- Bài viết
- 55
- Được thích
- 2
Bài #18 bạn có thể dùng 2 cột thay cái gì bằng cái gì ở sheet khác, hàng ngàn dòng cũng được sao không thử làm, lại muốn đưa hết vào code cho rối mắt và muốn điều chỉnh cũng tìm "lé con mắt"?Do k có dữ liệu cột E nên em đưa vào code như trên thì nó chạy khá làm chậm với dữ liệu lớnMã:Sub ThayTheNGOAI() ..................... End Sub
Đây cũng là 1 gợi ý hay bác nhỉ Em nhập tay rất chậm mà dễ bị sai nữa chứ.Thì bạn phải chế thêm cột E vào (nên làm thế), chả nhẽ bạn phải nhập tay vào code từng giá trị 1.
Dùng cách này của bác nhanh thật.Bài #18 bạn có thể dùng 2 cột thay cái gì bằng cái gì ở sheet khác, hàng ngàn dòng cũng được sao không thử làm, lại muốn đưa hết vào code cho rối mắt và muốn điều chỉnh cũng tìm "lé con mắt"?
Híc!
File bác Ba Tê hay quá, nhưng em có công việc yêu cầu khó hơn, không biết có được không, em đã sửa File bác Ba Tê một tý theo yêu cầu. Mong các bác giúp đỡKhông đưa vào sao biết cái gì thay bằng cái gì?
Tao 1 sheet khác chứa cái gì thay bằng cái gì như file này xem sao.
File bác Ba Tê hay quá, nhưng em có công việc yêu cầu khó hơn, không biết có được không, em đã sửa File bác Ba Tê một tý theo yêu cầu. Mong các bác giúp đỡ
Public Sub GPE_XYZ()
Dim sArr(), dArr(), tArr(), I As Long, J As Long, N As Long, L As Long
tArr = Sheets("GPE").Range("A2", Sheets("GPE").Range("A2").End(xlDown)).Resize(, 2).Value
With Sheets("ngoai")
sArr = .Range("A2", .Range("A2").End(xlDown)).Value
ReDim dArr(1 To UBound(sArr), 1 To 1)
For I = 1 To UBound(sArr)
For J = 1 To UBound(tArr)
N = InStr(sArr(I, 1), tArr(J, 1))
If N Then
L = Len(tArr(J, 1))
dArr(I, 1) = Left(sArr(I, 1), N - 1) & tArr(J, 2) & Mid(sArr(I, 1), N + L, Len(sArr(I, 1)))
Exit For
End If
Next J
Next I
.Range("C2").Resize(I - 1) = dArr
End With
End Sub
Thanks bác nhiều, cho em hỏi thêm là nếu như không thấy giá trị thay thế ở cột A thì cột C trả về đúng cột A (hiện tại là nếu A có giá trị thay thế thì C=A', nếu không rỗng) được không ạHên xui nhé. Đẹp thì xui còn xấu thì hên.
PHP:Public Sub GPE_XYZ() Dim sArr(), dArr(), tArr(), I As Long, J As Long, N As Long, L As Long tArr = Sheets("GPE").Range("A2", Sheets("GPE").Range("A2").End(xlDown)).Resize(, 2).Value With Sheets("ngoai") sArr = .Range("A2", .Range("A2").End(xlDown)).Value ReDim dArr(1 To UBound(sArr), 1 To 1) For I = 1 To UBound(sArr) For J = 1 To UBound(tArr) N = InStr(sArr(I, 1), tArr(J, 1)) If N Then L = Len(tArr(J, 1)) dArr(I, 1) = Left(sArr(I, 1), N - 1) & tArr(J, 2) & Mid(sArr(I, 1), N + L, Len(sArr(I, 1))) Exit For End If Next J Next I .Range("C2").Resize(I - 1) = dArr End With End Sub
Thanks bác nhiều, cho em hỏi thêm là nếu như không thấy giá trị thay thế ở cột A thì cột C trả về đúng cột A (hiện tại là nếu A có giá trị thay thế thì C=A', nếu không rỗng) được không ạ
..................................................
If N = 0 Then dArr(I, 1) = sArr(I, 1)
Next J
Em muôn phiền bác thêm tý nữa ạ. Khi nhập liệu ở cột A thì cột B tự chạy chứ không phải click nút "GPE"Chữa cháy. Thêm 1 dòng này vào trên dòng Next J:
PHP:.................................................. If N = 0 Then dArr(I, 1) = sArr(I, 1) Next J
đã tự nhảy, nhưng dữ liệu chuyển bị sai. mong anh chị xem sửa giúp vớiEm muôn phiền bác thêm tý nữa ạ. Khi nhập liệu ở cột A thì cột B tự chạy chứ không phải click nút "GPE"