hoclaptrinh
Thành viên hoạt động



- Tham gia
- 28/8/14
- Bài viết
- 151
- Được thích
- 6
Ở sheet 1 có 1 cột từ A1-A10, bên sheet 2 cần lấy giá trị như sau: sheet2!A1=sheet1!A1, sheet2!A3=sheet1!A2, ... sheet2!A18=sheet1!A10












bạn thử công thức này xemSory a! để e gửi file a xem dùm e
=IFERROR(INDIRECT("Sheet1!A"&1/3*ROW(A1)+2/3);"")
=IFERROR(INDIRECT("Sheet1!A"&1/3*ROW(A1)+2/3),"")

Vậy bạn xem thử cái nàySheet2!A28=sheet1!A10
Sub Laydulieu()
Dim Dulieu(), Ketqua(), I As Long, K As Long, N As Long
N = 2
With Sheet1
Dulieu = .Range("A1", .Range("A" & Rows.Count).End(3)).Value
End With
ReDim Ketqua(1 To Rows.Count, 1 To 1)
For I = 1 To UBound(Dulieu)
K = K + 1
Ketqua(K, 1) = Dulieu(I, 1)
K = K + N
Next I
With Sheet2
.Range("A1").Resize(K, 1) = Ketqua
End With
End Sub






Giải thích cho mình hiểu ("Sheet1!A"&1/3*ROW(A1)+2/3);"") chổ 1/3 và 2/3 vớibạn thử công thức này xem
hoặcMã:=IFERROR(INDIRECT("Sheet1!A"&1/3*ROW(A1)+2/3);"")
tùy theo định dạng máy bạnMã:=IFERROR(INDIRECT("Sheet1!A"&1/3*ROW(A1)+2/3),"")
chỗ trong ngoặc kép là phần sẽ giữ nguyên không thay đổi, còn chỉ thay đổi số đằng sau thôiGiải thích cho mình hiểu ("Sheet1!A"&1/3*ROW(A1)+2/3);"") chổ 1/3 và 2/3 với






excel trên win 10 thì phải làm sao để chạy được code vậy??(không biết a hay c luôn...)Vậy bạn xem thử cái này
Lần sau không được viết từ này Sory a! nữa nha. Không thì nghỉ chơi đóPHP:Sub Laydulieu() Dim Dulieu(), Ketqua(), I As Long, K As Long, N As Long N = 2 With Sheet1 Dulieu = .Range("A1", .Range("A" & Rows.Count).End(3)).Value End With ReDim Ketqua(1 To Rows.Count, 1 To 1) For I = 1 To UBound(Dulieu) K = K + 1 Ketqua(K, 1) = Dulieu(I, 1) K = K + N Next I With Sheet2 .Range("A1").Resize(K, 1) = Ketqua End With End Sub![]()
bạn thay 2/3 thành 20/3. bạn cứ làm phương trình như mình chỉ ở trên ý, nó ra màNhưng mình coppy vào bảng tính và sửa lại là dòng 1 sheet 2 thì lấy dòng 7 sheet 1, dòng 4 sheet 2 thì lấy dòng 8 sheet 1 thì kết quả vẫn lấy giá trị dòng 1 sheet 2 thì lấy dòng 1 sheet 1, dòng 4 sheet 2 thì lấy dòng 2 sheet 1