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 ạ.
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
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
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 ạ?
Theo ngu ý của tôi thì: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
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ị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.........![]()
For i = 1 to 9
For j = i to 9
Calc a(i), b(j)
Next
Next
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.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.
Đây là link của nguồn trích dẫnChú 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)".
....
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ữ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ữ.
Đó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 ạ.Đã ngu tiếng Anh thì một chữ đã ngu mà mười chữ lại càng ngu luôn .
![]()