Mong mọi người giúp đỡ
Em xin lỗi ạ. E đã sửa lại rồi.Giúp đỡ đầu tiên là chính mình giúp: sửa lại tiêu đề cho đúng nội quy forum
Sub Button1_Click()
For i = 5 To 30
checkk = IIf(Range("A" & i) = Range("C" & i) And Range("B" & i) = Range("D" & i), "Khop", "Err")
Range("F" & i) = checkk
Next
MsgBox "Ket thuc"
End Sub
Bạn thử.Chả là em có 2 danh sách muốn đối chiếu. Nếu khớp thì xuất khớp số liệu, ko khớp thì báo lỗi. Hàm excel thì e biết viết rồi ạ. Nhưng e muốn học hỏi xem viết bằng ngôn ngữ VBA thì như thế nào. Mong mọi người giúp e.
Sub sosanh()
Dim lr As Long, i As Long, arr, kq, dk As String, dks As String
With Sheets("sheet1")
lr = .Range("A" & Rows.Count).End(xlUp).Row
If lr < 5 Then Exit Sub
arr = .Range("A5:D" & lr).Value2
ReDim kq(1 To UBound(arr), 1 To 1)
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2)
dks = arr(i, 3) & "#" & arr(i, 4)
If dk = dks Then
kq(i, 1) = "Kh" & ChrW(7899) & "p s" & ChrW(7889) & " li" & ChrW(7879) & "u"
Else
kq(i, 1) = "Error"
End If
Next i
.Range("E5:E" & lr).Value = kq
End With
End Sub
Thử đoạn code này coi sao. Cũng tương đương code bài 5Chả là em có 2 danh sách muốn đối chiếu. Nếu khớp thì xuất khớp số liệu, ko khớp thì báo lỗi. Hàm excel thì e biết viết rồi ạ. Nhưng e muốn học hỏi xem viết bằng ngôn ngữ VBA thì như thế nào. Mong mọi người giúp e.
Sub Checking()
Dim sArr(), i As Long
sArr = Range("A5", [A65536].End(3)).Resize(, 5).Value
For i = 1 To UBound(sArr)
If sArr(i, 1) = sArr(i, 3) Then
If sArr(i, 2) = sArr(i, 4) Then
sArr(i, 5) = "OK"
Else
sArr(i, 5) = "ERROR"
End If
Else
sArr(i, 5) = "ERROR"
End If
Next
[A5].Resize(i - 1, UBound(sArr, 2)) = sArr
End Sub
Sao Hải không "gom" 2 cái sArr(I, 5)= "ERROR" thành 1.Thử đoạn code này coi sao. Cũng tương đương code bài 5
Mã:Sub Checking() Dim sArr(), i As Long sArr = Range("A5", [A65536].End(3)).Resize(, 5).Value For i = 1 To UBound(sArr) If sArr(i, 1) = sArr(i, 3) Then If sArr(i, 2) = sArr(i, 4) Then sArr(i, 5) = "OK" Else sArr(i, 5) = "ERROR" End If Else sArr(i, 5) = "ERROR" End If Next [A5].Resize(i - 1, UBound(sArr, 2)) = sArr End Sub
For i = 1 To UBound(sArr)
sArr(i, 5) = "ERROR"
If sArr(i, 1) = sArr(i, 3) Then
If sArr(i, 2) = sArr(i, 4) Then
sArr(i, 5) = "OK"
End If
End If
Next i
E đã sửa được lỗi này rồi ạ. E cám ơn mọi ngườiSao e nhấp vô nút Chạy đối chiếu thì nó lại báo lỗi "Cannot run the macro..." mọi người nhỉ. E lại phải chạy lại code từ đầu ạ. Mong mọi người giúp đỡ
E đã chạy thử code này và đã thành công ạ. E cám ơn a và mọi người rất nhiềuBạn thử.
Mã:Sub sosanh() Dim lr As Long, i As Long, arr, kq, dk As String, dks As String With Sheets("sheet1") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr < 5 Then Exit Sub arr = .Range("A5:D" & lr).Value2 ReDim kq(1 To UBound(arr), 1 To 1) For i = 1 To UBound(arr) dk = arr(i, 1) & "#" & arr(i, 2) dks = arr(i, 3) & "#" & arr(i, 4) If dk = dks Then kq(i, 1) = "Kh" & ChrW(7899) & "p s" & ChrW(7889) & " li" & ChrW(7879) & "u" Else kq(i, 1) = "Error" End If Next i .Range("E5:E" & lr).Value = kq End With End Sub
Nếu e muốn so sánh A1 cùng B1 so với cả 2 cột C,D. Nếu có thì báo "khớp số liệu", sai báo "Error". Thì như thế nào vậy mấy a ơi.Bạn thử.
Mã:Sub sosanh() Dim lr As Long, i As Long, arr, kq, dk As String, dks As String With Sheets("sheet1") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr < 5 Then Exit Sub arr = .Range("A5:D" & lr).Value2 ReDim kq(1 To UBound(arr), 1 To 1) For i = 1 To UBound(arr) dk = arr(i, 1) & "#" & arr(i, 2) dks = arr(i, 3) & "#" & arr(i, 4) If dk = dks Then kq(i, 1) = "Kh" & ChrW(7899) & "p s" & ChrW(7889) & " li" & ChrW(7879) & "u" Else kq(i, 1) = "Error" End If Next i .Range("E5:E" & lr).Value = kq End With End Sub
Bạn xem Code bài #5Nếu e muốn so sánh A1 cùng B1 so với cả 2 cột C,D. Nếu có thì báo "khớp số liệu", sai báo "Error". Thì như thế nào vậy mấy a ơi.
Code bài 5 chỉ so sánh theo hàng với nhau bạn ạ. Mình muốn so sánh hàng A,B so với cột C,D thỏa 2 điều kiện khớp nhau thì xuất đó bạnBạn xem Code bài #5
Dạ. Vì đọc xong bài 7. Sáng nay E mới nghĩ ra câu hỏi bạn đó rất hay a ạBài #7 đã có người hỏi sao bạn không trả lời ngay bài đó.
Xét từng dòng của cột A,B - Dò từng Dòng của cột C,D. Nếu trùng thì "OK"?Code bài 5 chỉ so sánh theo hàng với nhau bạn ạ. Mình muốn so sánh hàng A,B so với cột C,D thỏa 2 điều kiện khớp nhau thì xuất đó bạn
Bài đã được tự động gộp:
Dạ. Vì đọc xong bài 7. Sáng nay E mới nghĩ ra câu hỏi bạn đó rất hay a ạ
Option Explicit
Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, R As Long, Tmp As String
sArr = Range("A5", Range("A60000").End(xlUp)).Resize(, 4).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
For I = 1 To R
dArr(I, 1) = "Error"
Tmp = sArr(I, 1) & "#" & sArr(I, 2)
For J = 1 To R
If sArr(J, 3) & "#" & sArr(J, 4) = Tmp Then
dArr(I, 1) = "OK"
Exit For
End If
Next J
Next I
Range("E5").Resize(R) = dArr
End Sub
Sao Ba Tê không dùng Dít- To, 2 vòng lặp chạy đúng số dòng của dữ liệu, viết thế này nó chạynhiều hơn hay sao íXét từng dòng của cột A,B - Dò từng Dòng của cột C,D. Nếu trùng thì "OK"?
PHP:Option Explicit Public Sub sGpe() Dim sArr(), dArr(), I As Long, J As Long, R As Long, Tmp As String sArr = Range("A5", Range("A60000").End(xlUp)).Resize(, 4).Value R = UBound(sArr) ReDim dArr(1 To R, 1 To 1) For I = 1 To R dArr(I, 1) = "Error" Tmp = sArr(I, 1) & "#" & sArr(I, 2) For J = 1 To R If sArr(J, 3) & "#" & sArr(J, 4) = Tmp Then dArr(I, 1) = "OK" Exit For End If Next J Next I Range("E5").Resize(R) = dArr End Sub
Dò trùng tôi đã nghĩ đến "Dit" rồi, nhưng thấy dữ liệu của bạn ấy chỉ có "mấy dòng". Xài cái "Dit Chà bá" sợ nhiều người "chịu hổng nỗi"Sao Ba Tê không dùng Dít- To, 2 vòng lặp chạy đúng số dòng của dữ liệu, viết thế này nó chạynhiều hơn hay sao í
Thân
Số liệu e chỉ lấy ví dụ thôi ạ, chứ số liệu của e phải tầm >3000 dòng a ạDò trùng tôi đã nghĩ đến "Dit" rồi, nhưng thấy dữ liệu của bạn ấy chỉ có "mấy dòng". Xài cái "Dit Chà bá" sợ nhiều người "chịu hổng nỗi"
Hi hi...
Hình như với dữ liệu trong bài, với 25 dòng dữ liệu, code chạy hơn 400 lần ( hông bít phải hông nữa), nếu thêm vài chục dòng và thêm "cái xui" nữa code chạy hơi nhiềuDò trùng tôi đã nghĩ đến "Dit" rồi, nhưng thấy dữ liệu của bạn ấy chỉ có "mấy dòng". Xài cái "Dit Chà bá" sợ nhiều người "chịu hổng nỗi"
Hi hi...
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2