Hỏi về tham chiếu offset (1 người xem)

Người dùng đang xem chủ đề này

boydaigai

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
8/9/11
Bài viết
58
Được thích
12
+-+-+-++-+-+-++-+-+-++-+-+-+ E có thắc mắc như trong file đính kèm ạ
Mong được giúp đỡ
 

File đính kèm

E vẫn không hiểu tại sao 2 code ấy lại trả về 2 kết quả khác nhau
ví dụ ở code 1 : Sheet2.Range("B10").Offset(1, 0) xuống dưới 1 dòng trả về ô B11
code 2 : Sheet2.Range("A10").Offset(1, 1) xuống dưới 1 dòng, sang phải 1 dòng cũng trả về ô B11

+-+-+-++-+-+-++-+-+-++-+-+-+
Vậy thì code 2 phải sửa thế nào để cho kết quả như code1 ?
 
Upvote 0
code 1 :
Private Sub CommandButton1_Click()Dim a, i As Long
a = Sheet1.Range("C1000").End(xlUp).Row
For i = 2 To a
Sheet2.Range("B1002").End(xlUp).Offset(1, 0).Value = Sheet1.Range("C" & i).Value
Next i
End Sub
code2 :
Private Sub CommandButton2_Click()Dim a, i As Long
a = Sheet1.Range("C1000").End(xlUp).Row
For i = 2 To a
Sheet2.Range("A1002").End(xlUp).Offset(1, 1).Value = Sheet1.Range("C" & i).Value
Next i
End Sub

E chẳng hiểu sao lại khác nhau khi end(xlup) lên đều ra hàng thứ 10 cả +-+-+-++-+-+-++-+-+-++-+-+-++-+-+-+
 
Upvote 0
E vẫn không hiểu tại sao 2 code ấy lại trả về 2 kết quả khác nhau
ví dụ ở code 1 : Sheet2.Range("B10").Offset(1, 0) xuống dưới 1 dòng trả về ô B11
code 2 : Sheet2.Range("A10").Offset(1, 1) xuống dưới 1 dòng, sang phải 1 dòng cũng trả về ô B11

+-+-+-++-+-+-++-+-+-++-+-+-+
Vậy thì code 2 phải sửa thế nào để cho kết quả như code1 ?
code1: điểm gốc thay đổi sau mỗi lần tính
code2 : điểm gốc không thay đổi, trước sau vẫn chỉ là A1
do lệnh Range("....").End(XlUp).Offset(...,...)
Nếu bạn xóa sạch sheet2 rồi bấm test2 sẽ thấy giá trị nhập vào sheet2.[B2] =7 là số cuối của cột C sheet1. Thực chất là B2 được nhập 7 lần giá trị là 1, 2,...7 nhưng trên sheet2 sẽ lưu giá trị cuối cùng
Sửa lại dễ thôi nhưng không biết bạn định dùng test2 điền vào đâu
 
Upvote 0
Với macro (1)
PHP:
Private Sub CommandButton1_Click()
Dim a, i As Long
a = Sheet1.Range("C1000").End(xlUp).Row
For i = 2 To a
    Sheet2.Range("B1002").End(xlUp).Offset(1, 0).Value = Sheet1.Range("C" & i).Value
Next i
End Sub
Dữ liệu sẽ được điền tiếp ô trống ngay dưới ô cuối có dữ liệu của cột

Còn macro thứ hai, nó luôn xác định ô trống ngay dưới ô có dữ liệu của cột [A], nhưng lại điền số liệu ở cột có chỉ số dòng lớn hơn nó 1 đơn vị

Và như vậy số liệu sẽ chép đè hoài trên 1 ô đó mà thôi!
 
Upvote 0
E muốn code 2 trả về kết quả như code 1 thì phải chỉnh thế nào ạ +-+-+-++-+-+-+

lấy ô cuối cùng có dữ liệu của cột a lùi xuống 1 dòng làm hàng bắt đầu điền dữ liệu vào cột b.
ý e là thế
 
Lần chỉnh sửa cuối:
Upvote 0
E muốn code 2 trả về kết quả như code 1 thì phải chỉnh thế nào ạ +-+-+-++-+-+-+

lấy ô cuối cùng có dữ liệu của cột a lùi xuống 1 dòng làm hàng bắt đầu điền dữ liệu vào cột b.
ý e là thế
PHP:
Private Sub CommandButton2_Click()
...
Sheet2.Range("A1002").End(xlUp).Offset(1,0).Value = Sheet1.Range("C" & i).Value
...
End Sub
Sẽ điền vào cột A
Có lẽ bạn nên tìm hiểu về End(xlUp) và Offset(...,...).
Có thể bấm test1 vài lần rồi xem kết qủa tại sheet2 sẽ nắm được phần nào
-------------------
Sửa thế này cho nhanh
PHP:
Private Sub CommandButton2_Click()
...
Sheet2.Range("B" & i).Value = Sheet1.Range("C" & i).Value
...
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
E muốn code 2 trả về kết quả như code 1 thì phải chỉnh thế nào ạ +-+-+-++-+-+-+

lấy ô cuối cùng có dữ liệu của cột a lùi xuống 1 dòng làm hàng bắt đầu điền dữ liệu vào cột b.
ý e là thế

Bạn chạy thử cái này:
PHP:
Private Sub CommandButton2_Click()
 Dim a, i As Long
 a = Sheet1.Range("C1000").End(xlUp).Row
 For i = 2 To a
    Sheet2.Range("A1002").End(xlUp).Offset(I, 1).Value = Sheet1.Range("C" & i).Value
 Next i
End Sub
 
Upvote 0
Sau một hồi thì lại thành thế này


mới đc kết quả như code 1 +-+-+-++-+-+-++-+-+-+
E cảm ơn các anh chị hì hì@$@!^%
Thì cũng giống như HYen17 viết code sau cho bạn có phải gọn và dễ hiểu hơn không cứ thích vẽ râu ria thêm làm gì cho mệt bạn
PHP:
Sheet2.Range("A1002").End(xlUp).Offset(i, 1).Value = Sheet1.Range("C" & i).Value
 
Upvote 0

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

Back
Top Bottom