Cách viết 1 array không cố định trong vba

Liên hệ QC

minhvdn

Thành viên mới
Tham gia
17/3/17
Bài viết
12
Được thích
0
Done
 
Lần chỉnh sửa cuối:
Chào mọi người,

Mình muốn xin mọi người giúp đỡ cách viết 1 đoạn code vba, mục đích là để lấy sum 1 array theo kiểu (" : ") nhưng argument bên trong ngoặc không phải là 1 cell cố định, vì mình lấy cell theo kiểu cells(row,col).

Vd như mình lấy ô D3 làm chuẩn, array sẽ offset 2 dòng dưới là "D3: D5". Như vậy khi tịnh tiến các array sẽ là "D4: D6", "D5: D7",.. Mình muốn viết code cho đoạn này bằng cách lấy đầu dãy là cells(i,4) và cuối dãy là cells(i+2,4), thì cho hỏi syntax cho array là như thế nào ạ?

Thank all!
Trong code gỏ:
a=range(
Nhìn hướng dẫn
 
Trong code gỏ:
a=range(
Nhìn hướng dẫn

anh có thể viết mẫu giúp em trên file này được không ạ? vì nhìn formula em chưa viết đúng được. như trong file attached ở dưới thì ở cột B em muốn cộng 3 dòng 1, chạy từ B1 đến B6, đặt biến cho dòng là i, thì syntax lấy dãy là như thế nào ạ?
 

File đính kèm

  • VBATest.xlsm
    7.4 KB · Đọc: 12
anh có thể viết mẫu giúp em trên file này được không ạ? vì nhìn formula em chưa viết đúng được. như trong file attached ở dưới thì ở cột B em muốn cộng 3 dòng 1, chạy từ B1 đến B6, đặt biến cho dòng là i, thì syntax lấy dãy là như thế nào ạ?
anh có thể viết mẫu giúp em trên file này được không ạ? vì nhìn formula em chưa viết đúng được. như trong file attached ở dưới thì ở cột B em muốn cộng 3 dòng 1, chạy từ B1 đến B6, đặt biến cho dòng là i, thì syntax lấy dãy là như thế nào ạ?
"nhìn formula "
Viết code VBA hay viết công thức Excel?
 
ý em là formula của range trong code vba. btw nếu được xin nhờ anh viết thử trên file excel kia giúp em ạ, em cảm ơn anh.
Trong màn hình VBA gỏ đúng
a=range(
nhìn hướng dẫn rồi tự viết, chuyện nhỏ không nên nhờ người khác, tự vọc tới vọc lui mới giỏi được
 
Trong màn hình VBA gỏ đúng
a=range(
nhìn hướng dẫn rồi tự viết, chuyện nhỏ không nên nhờ người khác, tự vọc tới vọc lui mới giỏi được

syntax của range là range(cell1,[cell2]) tức là anh phải list toàn bộ các cell trong dãy để lấy được range, nhưng đây em đang muốn lấy tự động 2 cell đầu cuối theo dạng cells(row,col) dựa trên số dòng trong range đó, thì làm sao viết như kia được??

Anyway cảm ơn anh đã dành thời gian.
 
syntax của range là range(cell1,[cell2]) tức là anh phải list toàn bộ các cell trong dãy để lấy được range, nhưng đây em đang muốn lấy tự động 2 cell đầu cuối theo dạng cells(row,col) dựa trên số dòng trong range đó, thì làm sao viết như kia được??

Anyway cảm ơn anh đã dành thời gian.
range(cells(row1,col1) ,cells(row2,col2) )
 
range(cells(row1,col1) ,cells(row2,col2) )
anh ơi viết kiểu này nó lấy mỗi 2 giá trị đầu cuối chứ nó có lấy được cả dãy đâu?? thế giờ muốn lấy 1 dãy cả ngàn dòng thì nhập ngàn cái cells như thế sao?? chưa kể anh thử đưa cái code anh viết vào sum xem nó có báo lỗi k ạ??

Chắc anh em mình chưa hiểu ý nhau, sorry đã vô ý làm phiền anh ạ.
 
anh ơi viết kiểu này nó lấy mỗi 2 giá trị đầu cuối chứ nó có lấy được cả dãy đâu?? thế giờ muốn lấy 1 dãy cả ngàn dòng thì nhập ngàn cái cells như thế sao?? chưa kể anh thử đưa cái code anh viết vào sum xem nó có báo lỗi k ạ??

Chắc anh em mình chưa hiểu ý nhau, sorry đã vô ý làm phiền anh ạ.
Lẽ ra bạn phải cho kết quả tạm trong file để mọi người có thế hình dung ra kết quả bạn muốn gì. Thật sự mình đọc tới đọc lui vài lần nhưng không hiểu được ý của bạn.
 
Chào mọi người,

Mình muốn xin mọi người giúp đỡ cách viết 1 đoạn code vba, mục đích là để lấy sum 1 array theo kiểu (" : ") nhưng argument bên trong ngoặc không phải là 1 cell cố định, vì mình lấy cell theo kiểu cells(row,col).

Vd như trong file attached ở dưới thì ở cột B mình muốn cộng 3 dòng 1, chạy từ B1 đến B6, đặt biến cho dòng là i, ngoài ra có thể áp dụng sum k chỉ 3 mà n dòng, thì syntax lấy dãy là như thế nào ạ?

Thank all!
bạn nên dùng vòng lặp để duyệt qua từng phần tử của mảng nhé
 
anh ơi viết kiểu này nó lấy mỗi 2 giá trị đầu cuối chứ nó có lấy được cả dãy đâu?? thế giờ muốn lấy 1 dãy cả ngàn dòng thì nhập ngàn cái cells như thế sao?? chưa kể anh thử đưa cái code anh viết vào sum xem nó có báo lỗi k ạ??

Chắc anh em mình chưa hiểu ý nhau, sorry đã vô ý làm phiền anh ạ.
Bó tay
Mã:
Sub Troioi()
  Dim A As Range, B
  Set A = Range(Cells(1, 2), Cells(8, 2))
  B = Application.Sum(A)
End Sub
 
Có thể do thớt không rành tiếng Việt lắm. Bạn cần hỏi lại "cộng 3 dòng 1, chạy từ B1 đến B6" có phải là "sum 3 at a time, going from B1 to B6, that makes 2 resulting sums"
...
ở cột B mình muốn cộng 3 dòng 1, chạy từ B1 đến B6, đặt biến cho dòng là i, ngoài ra có thể áp dụng sum k chỉ 3 mà n dòng, thì syntax lấy dãy là như thế nào ạ?
k là một biến hay 1 từ? Tiếng Anh, tiếng Việt tiếng chuyên môn loạn lên hết!

... thế giờ muốn lấy 1 dãy cả ngàn dòng thì nhập ngàn cái cells như thế sao?? ...
Nếu thớt chịu khó đọc tiếng tiếng Việt thì ở đây, 100 cái bài giải có đến hơn 90 bài có làm cái này.
 
Xin đề nghị Ban ĐH diễn đàn nên tỏ thái độ với chủ bài đăng;

Không có cái kiểu qua cầu rút Ván như thế được!
 
Chưa xong đâu! Vui lòng phục hồi bài 1 như cũ.
Đã nói là thớt chưa chắc hiểu tiếng Việt mờ.
Bạn làm như thế này là "Tự lấy dây buộc mình rồi". Các thành viên trong Topic này có một nhược điểm là "Nhớ rất lâu" :eek:
Nếu thớt cũng có "nhược điểm là nhớ rất lâu" đó thì thớt sẽ nhớ rằng các thành viên không trong tô bít này có một ưu điểm là rất ghiền giải bài.
 
Lần chỉnh sửa cuối:
Nhớ lại, mình đã từng đề nghị diễn đàn này về chính sách "không cho sửa/xoá bài sau một thời gian ấn định" (1 ngày/24 giờ chẳng hạn)
 
Đề nghị bạn phục hồi lại bài viết của bạn. Bạn không được tự ý xóa bài của bạn. Sau thời gian là 24h (Nếu không chỉnh sửa được thì bạn có thể đăng bài trả lời và nhờ BQT phục hồi lại bài viết.) bắt đầu từ bài này, nếu như bạn chưa phục hồi tôi sẽ đình chỉ hoạt động của bạn.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom