Nhờ anh chị viết giùm đoạn code nhỏ về mảng! (1 người xem)

Liên hệ QC

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

lyly2626

Thành viên chính thức
Tham gia
15/5/12
Bài viết
74
Được thích
1
Em đang chập chững VBA về phần biến mảng.
Nhờ anh/chị viết giùm 1 đoạn code để chuyển các ô màu vàng trong Sheet1 sang vị trí như Sheet2


Dữ liệu ở sheet1 là minh họa thực tế có nhiều dòng hơn ạ.
 

File đính kèm

Em đang chập chững VBA về phần biến mảng.
Nhờ anh/chị viết giùm 1 đoạn code để chuyển các ô màu vàng trong Sheet1 sang vị trí như Sheet2


Dữ liệu ở sheet1 là minh họa thực tế có nhiều dòng hơn ạ.

xem thử
Mã:
Option Explicit
Sub test()
Dim data, kq(1 To 60000, 1 To 12) As Variant
Dim i, j, jj, k As Long
data = Sheet1.[b4:l60000]
For i = 1 To UBound(data)
    If IsEmpty(data(i, 5)) Then Exit For
    If data(i, 1) <> "" Then
        k = k + 1
        For j = 1 To UBound(data, 2)
            jj = j
            If j > 5 Then jj = j + 1
            kq(k, jj) = data(i, j)
        Next
    Else
        kq(k, 6) = data(i, 5)
    End If
Next

If k Then
With Sheet2
.[b4:m60000].ClearContents
.[b4].Resize(k, 12) = kq
End With
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ đúng ý em rồi. Cám ơn nhiều ạ!
Cho em hỏi cái này ngoài lề chút. Tại sao khi đặt tên biến mọi người hay đặt tên các biến là: i, j, k vậy ạ? Sao ko là các chữ cái khác như: a, b, c. Có phải còn lý do nào khác để dễ nhớ, dễ hình dung gì ko ạ? Em ngây ngô đừng mắng e tội nghiệp. hihi
 
Upvote 0
Cho em hỏi cái này ngoài lề chút. Tại sao khi đặt tên biến mọi người hay đặt tên các biến là: i, j, k vậy ạ? Sao ko là các chữ cái khác như: a, b, c. Có phải còn lý do nào khác để dễ nhớ, dễ hình dung gì ko ạ? Em ngây ngô đừng mắng e tội nghiệp. hihi

Khi đặt tên biến thì nên đặt sao cho dễ nhớ, dễ hình dung (tức là liên quan tới tham số đang tính toán). Ví dụ: các chỉ số thường đặt là i, j, k...
Hoặc bạn có thể đặt là ong_gioi_01, ong_gioi_02, mat_trang_01, mat_trang_02... Miễn là khi dùng không báo lỗi là được.
 
Upvote 0
Cho em hỏi cái này 1 chút. Tại sao khi đặt tên biến mọi người hay đặt tên các biến là: i, j, k vậy ạ? Sao ko là các chữ cái khác như: a, b, c. Có phải còn lý do nào khác để dễ nhớ, dễ hình dung gì ko ạ?

Riêng các chữ cái W, F, J, Z thì còn thêm í nữa là để bàn fím hư đều ở các fím đó bạn!
 
Upvote 0
Cho em hỏi cái này ngoài lề chút. Tại sao khi đặt tên biến mọi người hay đặt tên các biến là: i, j, k vậy ạ? Sao ko là các chữ cái khác như: a, b, c. Có phải còn lý do nào khác để dễ nhớ, dễ hình dung gì ko ạ? Em ngây ngô đừng mắng e tội nghiệp. hihi
Theo ngu ý của tôi thì:
Những người đưa ra lý thuyết lập trình đầu tiên cũng đều giỏi về toán học và họ đặt ra các chỉ số i, j, k giống thói quen như khi họ giải toán về các dãy số. Dãy số trong toán học và mảng trong lập trình xét về lý thuyết thì khá gần gũi với nhau.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thì thấy hầu hết người ta cứ viết
For i = 1 to x
For j =.. to
next
Next i
Vậy mình cũng bắt trước vậy và ngầm hiểu i = dòng , j= cột ,k = k + 1
thành thói quen cứ vậy mà tới thôi...còn nếu thêm biến nữa thì ii, jj, hay x...
chứ hiểu tận gốc dễ thì thua.........--=0--=0
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thì thấy hầu hết người ta cứ viết
For i = 1 to x
For j =.. to
next
Next i
Vậy mình cũng bắt trước vậy và ngầm hiểu i = dòng , j= cột ,k = k + 1
thành thói quen cứ vậy mà tới thôi...còn nếu thêm biến nữa thì ii, jj, hay x...
chứ hiểu tận gốc dễ thì thua.........--=0--=0
có vẻ như tự ngầm hiểu với nhau i = dòng, j = cột. Lý do này chắc đúng nè mấy anh chị
 
Upvote 0
Có thể dãy số chả bao h được đem thi tốt nghiệp hay đại học nên chả mấy ai nhớ i, j, k dùng như chỉ số trong dãy số cả --=0.

Có lẽ vì ngại trình chưa đủ nên tôi cũng chả mấy khi dám sờ tới mảng 2 chiều (cái này đau đầu lắm cơ --=0).. Nhưng tôi lại thường dùng i và j như 2 chỉ số phân biệt khi thao tác với mảng 1 chiều, đại loại như kiểu:
PHP:
For i = 1 to 9
    For j = i to 9
        Calc a(i), b(j) 
    Next
Next

Đối với tôi thì j chưa hẳn cứ phải là cột và i cứ phải là dòng, nó đơn giản là chỉ số hay cái gì theo ý tưởng.
 
Lần chỉnh sửa cuối:
Upvote 0
Hồi xưa, khi IBM còn là chủa tể máy tính thì ngôn ngữ FORTRAN được coi là chuẩn của ngành lập trình toán/khoa học (COBOL là chúa ngành lập trình thương mãi)

Theo luật mặc định của FORTRAN đời xưa thì các biến bắt đàu bằng ký tự I, J, K, L, M, N là số nguyên và các ký tự khác là số thực. Trình dịch tự động hiểu như vậy.

Vì chỉ số của mảng là số nguyên cho nên nguời ta hay đặt biến là I, J. Biến dùng đếm vòng lặp cũng vậy. Sau mấy chục năm dùng rồi thành thói quen chung.

Lý do tiện lợi nữa là nó cũng phù hợp với quy luật toán, I, J làm thứ tự; và M, N làm số đếm, ...

Chú: lúc Bill Gates còn tập tành viết BASIC thì tên biến của BASIC chỉ có 1 ký tự chứ (A, B,.., I, J..) và muốn hơn nữa thì chỉ thêm được 1 ký tự số (A1, A2,...)
 
Lần chỉnh sửa cuối:
Upvote 0
Theo ngu ý của tôi thì:
Những người đưa ra lý thuyết lập trình đầu tiên cũng đều giỏi về toán học và họ đặt ra các chỉ số i, j, k giống thói quen như khi họ giải toán về các dãy số. Dãy số trong toán học và mảng trong lập trình xét về lý thuyết thì khá gần gũi với nhau.
Tôi thử google câu hỏi trên ở xứ đã đẻ ra lập trình (bên Tây) và câu trả lời được tán thành nhiều nhất khiến tôi dự cảm tương tự ngu ý của mình. --=0
Chú Tây cùng ngu ý đã viết:
Why do most of us use 'i' as a loop counter variable?

i and j have typically been used as subscripts in quite a bit of math for quite some time (e.g., even in papers that predate higher-level languages, you frequently see things like "X[SUB]i,j[/SUB]", especially in things like a summation).
When they designed Fortran, they (apparently) decided to allow the same, so all variables starting with "I" through "N" default to integer, and all others to real (floating point). For those who've missed it, this is the source of the old joke "God is real (unless declared integer)".
....
Đây là link của nguồn trích dẫn
http://programmers.stackexchange.co...o-most-of-us-use-i-as-a-loop-counter-variable

Trình đọc hiểu tiếng Anh của tôi còn kém nên nếu tôi có ngộ nhận thì cũng xin được thông cảm lẫn sự tận tình chỉ bảo -\\/..
 
Lần chỉnh sửa cuối:
Upvote 0
It all depends on one's interpretation of the word 'apparently' inside parentheses, (apparently).
Cảm phiền anh chị/ có thể dịch nguyên văn cái trích dẫn lý giải i/j mà tôi nêu được không ạ! Tôi có đưa đoạn đó lên cũng là trông nhờ anh/chị nào hay chữ nghĩa tiếng Anh giải thích dùm vừa để mở mắt về lập trình mà cũng học thêm ngoại ngữ --=0.

Đóng ngoặc mỗi chữ "apparently" đã chẳng hiểu ý gì thì nguyên cái chú giải tiếng anh "It all depends on ..." này thì tôi xin mạn phép mù tịt ạ.--=0 Đã ngu tiếng Anh thì một chữ đã ngu mà mười chữ lại càng ngu luôn .--=0
 
Lần chỉnh sửa cuối:
Upvote 0
Mệt mỏi và +-+-+-++-+-+-++-+-+-+ quá ..........i,j ......... --=0--=0--=0
 
Upvote 0
Cảm phiền anh chị/ có thể dịch nguyên văn cái trích dẫn lý giải i/j mà tôi nêu được không ạ! Tôi có đưa đoạn đó lên cũng là trông nhờ anh/chị nào hay chữ nghĩa tiếng Anh giải thích dùm vừa để mở mắt về lập trình mà cũng học thêm ngoại ngữ --=0.

Đóng ngoặc kép mỗi chữ "apparently" đã chẳng hiểu ý gì thì nguyên cái chú giải tiếng anh "It all depends on ..." này thì tôi xin mạn phép mù tịt ạ.--=0 Đã ngu tiếng Anh thì một chữ đã ngu mà mười chữ lại càng ngu luôn .--=0

mình cũng có hi vọng mong manh là được ai đó dịch các đoạn tiếng Tây ở trên ra thành tiếng Việt
Nếu được vậy thì mình vừa được học tiếng VBA , vừa được học tiếng Tây , quá sướng . hi hi hi :-=:-=:-=
 
Upvote 0

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

Back
Top Bottom