- Tham gia
- 23/3/16
- Bài viết
- 705
- Được thích
- 52
Như bác VetMini nói, nguyên tắc hoán vị 2 phần tử là người ta nhớ "phần tử 1" ra "chỗ tạm thời" -> cho phần tử 1 bằng phần tử 2 -> cho phần tử 2 = "chỗ tạm thời".
..
Phần tử 1 nằm ở nửa trên, phần tử 2 nằm ở nửa dưới. Chỉ cần duyệt FOR ở nửa trên (hoặc dưới). Tổng chỉ số dòng của 2 phần tử luôn không đổi và bằng Ubound(Arr) + 1
Mã:Sub reverse() Dim r As Long, c As Long, k As Long Dim Arr, tmp Arr = ThisWorkbook.Worksheets("Sheet1").Range("C5:E11").Value k = UBound(Arr) + 1 For r = 1 To UBound(Arr) \ 2 For c = 1 To UBound(Arr, 2) tmp = Arr(r, c) Arr(r, c) = Arr(k - r, c) Arr(k - r, c) = tmp Next c Next r ThisWorkbook.Worksheets("Sheet1").Range("H5").Resize(UBound(Arr), UBound(Arr, 2)).Value = Arr End Sub
Làm gì có khái niệm mảng dọc, mảng ngang?Qua đó cũng hiểu thêm chút xíu thế nào là mảng chiều dọc và chiều ngang của mảng và hình dung dữ liệu nó hoạt động lật qua lật lại như 1 tấm rèm.
Làm gì có khái niệm mảng dọc, mảng ngang?
Bạn liên tưởng đến sheet nên bạn tự bịa ra khái niệm như thế? Vd. bạn nhập một đoạn hàng (một đoạn cột) nhiều ô vào mảng thì bạn cho đó là mảng ngang (dọc)? Thực ra chúng đều là mảng 2 chiều: 1 dòng nhiều cột (1 cột nhiều dòng).
Chỉ có khái niệm mảng n chiều, với n >= 1. Ngay cả mảng 1 chiều thì là một chiều chứ đâu là ngang hay dọc? Mà nếu chỉ có mảng dọc, ngang thì mảng 3 chiều là dọc hay ngang?
Không hẳn vậy. Thớt này thường tét cốt kỹ lắm. Có khi cả tuần lễ mới có kết quả.Chủ thớt này thật là vô tâm. mỗi lần nhờ mọi người viết code đều như vậy....! có code ôm đi là chạy mất dép. không có một lời cảm ơn người khác. Không biết mọi người có ý kiến gì không?
Ý Bác batman là mảng chỉ có mảng 1 chiều và 2 chiều đó chị Oanh Thơ, mảng 2 chiều duyệt ngang duyệt dọc, nên ý của chị cũng khá đúng đấy.Làm gì có khái niệm mảng dọc, mảng ngang?
Trên diễn đàn này đã có thành viên sử dụng mảng 4 chiều rồi bạn.Ý Bác batman là mảng chỉ có mảng 1 chiều và 2 chiều đó chị Oanh Thơ, mảng 2 chiều duyệt ngang duyệt dọc, nên ý của chị cũng khá đúng đấy.
Còn cái mảng 3D (chiều x , y , z) của Bác batman trong excel chưa thấy bao giờ, nên chưa dám chạm. Bác batman có thể giải thích về mảng 3D giúp em. Có phải 3 vòng lặp lòng nhau không Bác
CHAOQUAY có link bài viết không, tò mò quá.Trên diễn đàn này đã có thành viên sử dụng mảng 4 chiều rồi bạn.
Chiều của mảng với vòng lặp có liên quan gì ở đây đâu bạn
Bài này đọc được trước khi tham gia diễn đàn nên không lưu đường link bạn.CHAOQUAY có link bài viết không, tò mò quá.
Excel làm sao có giao diện 3D được ta.
https://vi.wikipedia.org/wiki/Không_gian_ba_chiều
OK đúng là có mảng 3 chiều thật nhưng 3 vòng lặp lồng nhau cũng không saiTrên diễn đàn này đã có thành viên sử dụng mảng 4 chiều rồi bạn.
Chiều của mảng với vòng lặp có liên quan gì ở đây đâu bạn
OK đúng là có mảng 3 chiều thật nhưng 3 vòng lặp lồng nhau cũng không sai
https://docs.microsoft.com/en-us/do...ide/language-features/arrays/array-dimensions
Có nói bạn sai gì đâu.Ý Bác batman là mảng chỉ có mảng 1 chiều và 2 chiều đó chị Oanh Thơ, mảng 2 chiều duyệt ngang duyệt dọc, nên ý của chị cũng khá đúng đấy.
Còn cái mảng 3D (chiều x , y , z) của Bác batman trong excel chưa thấy bao giờ, nên chưa dám chạm. Bác batman có thể giải thích về mảng 3D giúp em. Có phải 3 vòng lặp lòng nhau không Bác
Tiếng dùng thông dụng cho mảng trong lập trình:
chiều thứ nhất: dòng (row)
chiều thứ hai: cột (column)
chiều thứ ba: trang, hoặc lớp (page)
Khái niệm mảng ở hầu hết các bài trong thớt này là khái niệm mảng của lập trình. VBA là một ngôn ngữ lập trình. Dùng trong môi trường Excel thì nó được mặc định để sử dụng các đối tượng của Excel (Workbook, Worksheet, Range,... là điển hình của các đối tượng này). Nhưng khái niệm mảng của VBA cũng vẫn là khái niệm mảng của lập trình.
Excel là hiện thân của bảng tính trải rộng cho nên chủ yếu nó chỉ dùng 2 chiều. Nhưng "chủ yếu" không có nghĩa là luôn luôn. Sheets là thể hiện của chiều thứ ba. (lưu ý là nghĩa của page tương đối gần với sheet)
Người hởi ở bài #25 và #27 hiển nhiên là chưa phân biệt được VBA và Excel.
Kêu bác ấy giữ sức khỏe làm gì nhỉ?Bác giữ gìn sức khỏe!
Đã hiểu bài của Bác VetMini. 1 Sheet chỉ là mảng 2 chiều. Duyệt thêm sheet khác thành 3 chiều. Các object dùng để tham chiếu như : worksheets(""), sheets("") , ...có phải vậy không BácTiếng dùng thông dụng cho mảng trong lập trình:
chiều thứ nhất: dòng (row)
chiều thứ hai: cột (column)
chiều thứ ba: trang, hoặc lớp (page)
Khái niệm mảng ở hầu hết các bài trong thớt này là khái niệm mảng của lập trình. VBA là một ngôn ngữ lập trình. Dùng trong môi trường Excel thì nó được mặc định để sử dụng các đối tượng của Excel (Workbook, Worksheet, Range,... là điển hình của các đối tượng này). Nhưng khái niệm mảng của VBA cũng vẫn là khái niệm mảng của lập trình.
Excel là hiện thân của bảng tính trải rộng cho nên chủ yếu nó chỉ dùng 2 chiều. Nhưng "chủ yếu" không có nghĩa là luôn luôn. Sheets là thể hiện của chiều thứ ba. (lưu ý là nghĩa của page tương đối gần với sheet). Đối tượng loại Range của Excel có một số hàm để ngầm chuyển đổi giữa Range và mảng 2 chiều. Đối tượng loại WorksheetFunction cũng có khả năng tự chuyển đổi giữa mảng và Range. Tùy theo hàm mà nó chuyển 1 dòng/cột qua mảng 1 chiều, hay nhiều dòng và cột qua mảng 2 chiều. Hiện tại thì tôi chưa biết cách chuyển nhiều sheets thành mảng 3 chiều.
Người hởi ở bài #25 và #27 hiển nhiên là chưa phân biệt được VBA và Excel.
Kêu bác ấy giữ sức khỏe làm gì nhỉ?
Giữ thì có dùng hay không dùng nữa?
Giữ hoài (cất kỹ) mà không dùng thì nó (sức khỏe) cũng tự yếu đi mờ. Bác ấy bảo, "Ờ, giữ gìn sức khỏe nên nghỉ vào đây viết bài." Vậy tính sao?
Sao không kêu bác ấy dùng 'xả láng' mà vẫn khỏe.![]()
@befaintXin chào, befaint
Có sức khỏe là có tất cả mà bạn
Vì hôm trước bác VetMini có nói là bác ấy buồn ngủ quá. Hơn nữa Oanh Thơ(OT) được biết trong chủ đề này cũng có ít nhất ba người đáng tuổi ông nên khi nhận đc sự giúp đỡ OT gửi cảm ơn không mà vẫn cảm thấy thiếu thiếu gì đó nên cũng gửi thêm lời chúc sức khỏe đến người đó, ba người nhiều tuổi mà OT nhớ không nhầm là (>70) cụ thể bác:Siwtom, VetMini,DQ_SA. Vì ba bác vẫn có thể viết bài thường xuyên nên OT gọi là bác.
Rất khâm phục các bác, lên diễn đàn học hỏi mà được những người có kinh nghiệm như các bác chỉ giáo chẳng còn gì bằng.
Có bác tính lại hay nói thẳng nói thật mới đầu cảm giác hơi khó gần nhưng thực sự lại rất quan tâm vì đã nhiều lần giúp đỡ OT, OT ngẫm lại tính giống người ông của mình, khi ông còn sống khỏe OT cũng hay bị ông mắng chửi lắm giờ ông không còn OT lại cảm thấy nhớ ông nhiều nhất.. huhu
...
Xin lỗi.. lại bắt đầu lan man rồi..
Bạn cũng hay thức khuya lắm đó befaint.
Hi nhân đây cũng cảm ơn bạn nhé befaint cảm ơn bạn cũng đã nhiều lần giúp mình.
Chúc bạn tương lai thành công rực rỡ!
@befaint
Anh befaint đã được quan rồi nhé, sau này tiếp tục giúp đỡ chị OT nhé anh. Lúc 2 giờ sáng...![]()
Bạn đếm thêm cho tôi "1 bàn tay" rồiba người nhiều tuổi mà OT nhớ không nhầm là (>70) cụ thể bác:Siwtom, VetMini,DQ_SA.
1. VBA không phải là ngôn ngữ lập trình tổng quát (như Java, C/C++), không phải lập trình giáo khoa (Pascal), không phải lập trình HĐT (Java, Delphi, C#, C++), không phải lập trình web (PHP, Java, C#)lan mam 1 chút ... cũng đâu đó trên GPE này có ai đó nói VBA không phải là ngôn ngữ lập trình ....
Nhưng ai đó lại nói nó VBA là ngôn ngữ lập trình .... vậy ko biết ai nói đúng ai nói sai ta ??!!!
Hóng xem mở rộng kiến thức 1 chút![]()