Nhờ anh, chị sửa code giúp

Liên hệ QC

Tuan_hcth

Thành viên thường trực
Tham gia
8/4/07
Bài viết
206
Được thích
11
Chào anh, chị
Nhờ các anh, chị xem giúp đoạn code như hình sai chỗ nào mà nó không chạy ra kết quả ạ. Em cảm ơn
1571797504844.png
Bài đã được tự động gộp:

 
Lần chỉnh sửa cuối:
Được rồi anh ạ. Em cảm ơn anh. Nhưng em tưởng là vòng lặp nó chạy bắt đầu từ dòng 7 chứ nhỉ (trong vùng mảng arr)?
Tại vì người viết code trên chỉ chuyên mảng chứ không chuyên bảng tính cho nên quên mất là giữa mảng và bảng tính có độ lệch 6 dòng.

Nếu là người có kinh nghiệm bảng tính thì sẽ đặt một range mốc:
Set rg = ActiveSheet.Range("A7")
Lúc ấy, rg sẽ đồng bộ với mảng, không còn bị lệch, và các tham chiếu đến Cells sẽ là:
rg.Cells(i, 2) và rg.Cells(i, 3)
 
Upvote 0
Em hỏi thêm chút ạ: giờ em muốn chuyển điều kiện ô G5 và H5 sang sheet2 và vùng cần gián arr1 sang sheet2 thì code phải sửa thế nào ạ? Em đã thử nhưng không ra kết quả. Em cảm ơn
Ai giúp em với ạ. Code sửa lại như hình nhưng chạy không ra kết quả
1571801629156.png
 
Upvote 0
Em hỏi thêm chút ạ: giờ em muốn chuyển điều kiện ô G5 và H5 sang sheet2 và vùng cần gián arr1 sang sheet2 thì code phải sửa thế nào ạ? Em đã thử nhưng không ra kết quả. Em cảm ơn
v1 = Sheet2.Range("G5").Value
v2 = Sheet2.Range("H5").Value
Sửa chỗ so sánh với Sheet1.Range("G5") thành so sánh với v1, và tương tự cho v2.
Ở dòng gần cuối, sửa Sheet1.Range("G7") thành Sheet2.Rang("G7")

Nhưng mà code trên luộm thuộm lắm. Nếu phải sửa thì viết lại cho rồi.

Chú: copy code và paste lại trên đây. Chứ nhìn hình ngừoi ta lười sửa lắm.
 
Lần chỉnh sửa cuối:
Upvote 0
v1 = Sheet2.Range("G5").Value
v2 = Sheet2.Range("H5").Value
Sửa chỗ so sánh với Sheet1.Range("G5") thành so sánh với v1, và tương tự cho v2.
Ở dòng gần cuối, sửa Sheet1.Range("G7") thành Sheet2.Rang("G7")

Nhưng mà code trên luộm thuộm lắm. Nếu phải sửa thì viết lại cho rồi.
Em sửa như anh (hình tại bài #8) nhưng không ra kết quả ạ. Anh xem giúp em với
 
Upvote 0
Upvote 0
Đôngt hời, cho biết rõ hơn "không ra kết quả" tức là sao. Chả thấy cái gì cả hay ra sai ý muốn? Và sai như thế nào?

Em gửi code ạ. Ấn chạy không báo lỗi và cũng không ra kết quả gì cả ạ.

Sub loc()
Dim arr As Variant, arr1 As Variant
Dim i As Long
Dim k As Long
Dim lr As Long
Dim sr As Long
Dim a As Variant, b As Variant
a = Sheet2.Range("H5").Value
b = Sheet2.Range("G5").Value
lr = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
arr = Sheet1.Range("A7:C" & lr).Value
sr = UBound(arr)
ReDim arr1(1 To sr, 1 To 3)
For i = 1 To UBound(arr)
If Cells(i + 6, 2) = a And Cells(i + 6, 3) = b Then
k = k + 1
arr1(k, 1) = arr(i, 1)
arr1(k, 2) = arr(i, 2)
arr1(k, 3) = arr(i, 3)
End If
Next i
With Sheet2
If k Then
.Range("G7").Resize(k, 3).ClearContents
.Range("G7").Resize(k, 3) = arr1
End If
End With
End Sub
 
Upvote 0
Em gửi code ạ. Ấn chạy không báo lỗi và cũng không ra kết quả gì cả ạ.

Sub loc()
Dim arr As Variant, arr1 As Variant
Dim i As Long
Dim k As Long
Dim lr As Long
Dim sr As Long
Dim a As Variant, b As Variant
a = Sheet2.Range("H5").Value
b = Sheet2.Range("G5").Value
lr = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
arr = Sheet1.Range("A7:C" & lr).Value
sr = UBound(arr)
ReDim arr1(1 To sr, 1 To 3)
For i = 1 To UBound(arr)
If Cells(i + 6, 2) = a And Cells(i + 6, 3) = b Then
k = k + 1
arr1(k, 1) = arr(i, 1)
arr1(k, 2) = arr(i, 2)
arr1(k, 3) = arr(i, 3)
End If
Next i
With Sheet2
If k Then
.Range("G7").Resize(k, 3).ClearContents
.Range("G7").Resize(k, 3) = arr1
End If
End With
End Sub
Đoán tiếp:
Sheet2.Cells(i + 6, 2)
Sheet2.Cells(i + 6, 3)
 
Upvote 0
Đoán tiếp:
Sheet2.Cells(i + 6, 2)
Sheet2.Cells(i + 6, 3)
Thớt này thuộc vào hạng lỳ câm. Chạy không đúng mà cứ nhất định hỏi qua hỏi lại. Bắt người ta đoán mình muốn gì.
Đoán: xét dữ liệu bên sheet1, so sánh với một bảng bên sheet2, nếu có thì chép qua sheet 2.
Nhận xét: thuật toán này chép dữ liệu so le chứ không ngay hàng.

Vả lại code luộm thuộm bỏ bố. Hổng biết thớt lượm ở đâu ra. Bạn có rảnh viết lại giùm luôn cho thớt.
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh, chị xem giúp em với ạ
Nhờ các anh, chị xem giúp em với ạ
Code sai tùm lum, luận lý điều kiện "If Cells(i + 6, 2) = a And Cells(i + 6, 3) = b Then" và kết quả trả về "arr1(k, 1) = arr(i, 1) " không ăn nhập gì nhau, không thể đoán được yêu cầu xử lý dữ liệu, không viết lại được
 
Upvote 0
Web KT

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

Back
Top Bottom