Các câu hỏi về mảng trong VBA (Array)

viehoai

GPE mỗi ngày
Tham gia ngày
22 Tháng năm 2009
Bài viết
2,595
Được thích
2,878
Điểm
860
Tuổi
46
Nơi ở
Thừa Thiên Huế
Xin các anh chị giúp đỡ Code Gán các giá trị của một Range là các phần tử của Mãng
Ví dụ: Tôi có các giá trị của Range("A1:A10"). Tôi muốn viết code để gán giá trị của các cells từ A1:A10 là các phần tử của Mãng Arr chẳn hạn.
Xin cảm ơn các anh chị
 

huuthang_bd

Chuyên gia GPE
Tham gia ngày
10 Tháng chín 2008
Bài viết
7,167
Được thích
8,083
Điểm
860
Nơi ở
TP.HCM
Xin các anh chị giúp đỡ Code Gán các giá trị của một Range là các phần tử của Mãng
Ví dụ: Tôi có các giá trị của Range("A1:A10"). Tôi muốn viết code để gán giá trị của các cells từ A1:A10 là các phần tử của Mãng Arr chẳn hạn.
Xin cảm ơn các anh chị
Như thế này nè bạn
PHP:
Dim Arr As Variant
Arr = [A1:A10].Value
 

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Xin các anh chị giúp đỡ Code Gán các giá trị của một Range là các phần tử của Mãng
Ví dụ: Tôi có các giá trị của Range("A1:A10"). Tôi muốn viết code để gán giá trị của các cells từ A1:A10 là các phần tử của Mãng Arr chẳn hạn.
Xin cảm ơn các anh chị
Có lẽ nên hỏi lại cho rõ là "gán giá trị của các cells từ A1:A10 các phần tử của Mãng Arr" có nghĩa là:
- Gán các giá trị của Cells từ A1 đến A10 vào 1 mảng Arr
- Gán các giá trị của Cells từ A1 đến A10 từ/ bằng 1 mảng Arr

Eo ôi, tiếng Việt!
 

viehoai

GPE mỗi ngày
Tham gia ngày
22 Tháng năm 2009
Bài viết
2,595
Được thích
2,878
Điểm
860
Tuổi
46
Nơi ở
Thừa Thiên Huế
Có lẽ nên hỏi lại cho rõ là "gán giá trị của các cells từ A1:A10 các phần tử của Mãng Arr" có nghĩa là:
- Gán các giá trị của Cells từ A1 đến A10 vào 1 mảng Arr
- Gán các giá trị của Cells từ A1 đến A10 từ 1 mảng Arr

Eo ôi, tiếng Việt!
Dạ ý em là
PHP:
Gán các giá trị của Cells từ A1 đến A10 vào 1 mảng Arr
Em làm theo cách của anh huuthang_bd đã được nhưng sao em thử thí nghiệm xuất một phẩn tử theo dạng:
1. Arr(i) thì báo lỗi
2. Arr(i,1) cho kết quả giá trị của phần tử thứ i
3. Arr(1,i) thì báo lỗi
Em đang tự học về Mãng, xin các anh chị giải thích thêm. Xin cảm ơn
 

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Arr(i, j) là phần tử của mảng tại dòng i, cột j của mảng
Do khai báo Dim Arr As variant và không khai báo chiều, nên mặc định Arr là mảng 2 chiều
A1:A10 là mảng dọc, không có nghĩa là mảng 1 chiều, đó là mảng 2 chiều: 1 chiều 10 dòng và 1 chiều 1 cột.

Muốn khai báo mảng 1 chiều thì khai báo
Dim Arr As variant
Redim Arr(10)
Nhưng lúc này mặc định mảng 1 chiều lại là mảng ngang.
Và muốn cho là mảng 1 chiều thực sự, thì không được gán giá trị 1 lần cho nó bằng 1 range trong bảng tính.

Túm lại, mảng dọc bắt buộc là mảng 2 chiều. Mảng ngang thì tuỳ theo cách gán giá trị, gán bằng range trên sheet thì 2 chiều.

Thí dụ 2 sub sau:

PHP:
Sub Test1()
Dim Arr As Variant
ReDim Arr(1 To 10)
Arr = Range("A1:J1").Value
MsgBox Arr(4)
End Sub
PHP:
Sub Test2()
Dim Arr As Variant
ReDim Arr(1 To 10)
For i = 1 To 10
Arr(i) = Cells(1, i)
Next
MsgBox Arr(4)
End Sub
Test1 sẽ bị lỗi. Mà phải sửa thành MsgBox Arr(1, 4)
 
Lần chỉnh sửa cuối:

viehoai

GPE mỗi ngày
Tham gia ngày
22 Tháng năm 2009
Bài viết
2,595
Được thích
2,878
Điểm
860
Tuổi
46
Nơi ở
Thừa Thiên Huế
Arr(i, j) là phần tử của mảng tại dòng i, cột j của mảng
Do khai báo Dim Arr As variant và không khai báo chiều, nên mặc định Arr là mảng 2 chiều
A1:A10 là mảng dọc, không có nghĩa là mảng 1 chiều, đó là mảng 10 dòng 1 cột.

Muốn khai báo mảng 1 chiều thì khai báo
Dim Arr As variant
Redim Arr(10)
Nhưng lúc này mặc định mảng 1 chiều lại là mảng ngang.

Túm lại, mảng dọc bắt buộc là mảng 2 chiều.
Xin anh giải thích thêm
1. Thế trường hợp Mãng 1 chiều là mãng ngang với các phần tử là giá trị từ A1 đến A10 không được hả anh ?
2. Như trên anh khái báo
PHP:
Dim Arr As variant
Redim Arr(10)
Không khai báo luôn
PHP:
Dim Arr(10)
Mà phải Redim ?
Cảm ơn anh nhiều
 

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Xin anh giải thích thêm
1. Thế trường hợp Mãng 1 chiều là mãng ngang với các phần tử là giá trị từ A1 đến A10 không được hả anh ?
2. Không khai báo luôn Dim Arr(10)Mà phải Redim
1. Mảng ngang với các giá trị từ A1 đến A10: Được, gán từng giá trị một.:

Nhưng vẫn là ngang nhé, nên nếu gán ngược xuống sheet thì phải coi chừng quên.

PHP:
Sub Test3 ()
Dim Arr(1 to 10)
For i = 1 to 10
Arr(i) = Cells(i, 1)
Next
Range("B1:B10") = Arr
Range("C5:L5") = Arr
End Sub
Ta sẽ thấy B1:B10 cả 10 ô có cùng giá trị của A1. trong khi đó C5:L5 hiện đầy đủ theo hàng ngang.

2. Khai báo Arr(10) hay Khai báo Arr rồi ReDim Arr(10):

Tác dụng giống nhau. Nhưng Redim có cái lợi hơn vì cứ khai báo mảng khi kích thước mảng chưa biết. Sau đó tính toán kích thước xong mới ReDim lại.

3. Ghi chú:
Mặc định phần tử đầu của mảng đánh số 0, nên Arr(10) sẽ có 11 phần tử từ 0 đến 10. Và khi gán Cell(i, j) cho phần tử, sẽ bị lỗi vì không có cells(0,j) hoặc cells(i, 0)
Có 2 cách để cho Arr bắt đầu bằng 1:

- Dùng câu lệnh Option Base 1 trên đầu module
- Khai báo Arr(1 to 10), hoặc Arr(1 to 10, 1 to 1)
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
Xin anh giải thích thêm
1. Thế trường hợp Mãng 1 chiều là mãng ngang với các phần tử là giá trị từ A1 đến A10 không được hả anh ?
2. Như trên anh khái báo
PHP:
Dim Arr As variant
Redim Arr(10)
Không khai báo luôn
PHP:
Dim Arr(10)
Mà phải Redim ?
Cảm ơn anh nhiều
Ban chỉ cần nhớ điều này:
- Range và mảng không giống nhau
- 1 Range sau khi biến đổi thành mảng thì đó luôn là mảng 2 chiều
- Muốn biến thành mảng 1 chiều phải thêm các công đoạn khác, chẳng hạn dùng For... Next hoặc hàm TRANSPOSE
-----------
Hiểu thế là mọi chuyện êm xuôi
 

viehoai

GPE mỗi ngày
Tham gia ngày
22 Tháng năm 2009
Bài viết
2,595
Được thích
2,878
Điểm
860
Tuổi
46
Nơi ở
Thừa Thiên Huế
Ban chỉ cần nhớ điều này:
- Range và mảng không giống nhau
- 1 Range sau khi biến đổi thành mảng thì đó luôn là mảng 2 chiều
- Muốn biến thành mảng 1 chiều phải thêm các công đoạn khác, chẳng hạn dùng For... Next hoặc hàm TRANSPOSE
-----------
Hiểu thế là mọi chuyện êm xuôi
3 ý trên em hiểu sâu được vấn đề hơn. Trường hợp "Muốn biến thành mảng 1 chiều phải thêm các công đoạn khác, chẳng hạn dùng For... Next hoặc hàm TRANSPOSE" em hiểu được nhưng cách làm theo Transpost thì chưa biết, xin Sư phụ cho ví dụ.
Cảm ơn Sư phụ và Thầy Mỹ
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
3 ý trên em hiểu sâu được vấn đề hơn. Trường hợp "Muốn biến thành mảng 1 chiều phải thêm các công đoạn khác, chẳng hạn dùng For... Next hoặc hàm TRANSPOSE" em hiểu được nhưng cách làm theo Transpost thì chưa biết, xin Sư phụ cho ví dụ.
Cảm ơn Sư phụ và Thầy Mỹ
Ví dụ thế này:
- Bạn có dữ liệu tại A1:A10
- Bạn muốn nối chuổi từ các cell ở vùng trên
- Bạn nghĩ ra có thể dùng làm Join để làm điều này
- Nhưng hàm Join chỉ làm việc với mảng 1 chiều
- Vậy việc của bạn phải biến Range("A1:A10") thành 1 mảng và phải là mảng 1 chiều
Ta làm như sau:
PHP:
Sub Test()
  Dim Arr
  Arr = Range("A1:A10").Value
  Arr = WorksheetFunction.Transpose(Arr)
  Range("B1") = Join(Arr, ", ")
End Sub
Rút gọn:
PHP:
Sub Test()
  Dim Arr
  Arr = WorksheetFunction.Transpose(Range("A1:A10"))
  Range("B1") = Join(Arr, ", ")
End Sub
Rút gọn tiếp:
PHP:
Sub Test()
  Range("B1") = Join(WorksheetFunction.Transpose(Range("A1:A10")), ", ")
End Sub
Tóm lại:
- Với 1 Range là 1 vùng có nhiều dòng, 1 cột thì khi qua hàm TRANSPOSE nó sẽ biến thành mảng 1 chiều
- Với 1 Range là 1 vùng có nhiều cột, 1 dòng thì khi qua hàm TRANSPOSE nó sẽ biến thành mảng 2 chiều (có thể mường tượng là mảng dọc) ---> Lại qua hàm TRANSPOSE tiếp lần nữa, nó sẽ biến thành mảng 1 chiều
Ví dụ: Nối chuổi các cell trong vùng A1:J1
PHP:
Sub Test()
  With WorksheetFunction
    Range("A2") = Join(.Transpose(.Transpose(Range("A1:J1"))), ", ")
  End With
End Sub
Phải 2 lần TRANSPOSE mới có thể biến Range("A1:J1") thành mảng 1 chiều
-------------
Nói thêm:
- Đã gọi là mảng 1 chiều thì không mường tượng nó là DỌC NGANG gì cả... đơn giàn là MẢNG 1 CHIỀU thôi
- Mảng 1 chiều và 2 chiều có thể mường tượng chúng khác nhau như khi so sánh ĐƯỜNG THẰNG và MẶT PHẲNG vậy (đường thẳng chỉ có duy nhất chiều dài, còn mặt phẳng thì mới có 2 chiều DỌC, NGANG)
 
Lần chỉnh sửa cuối:

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Nói thêm:
- Đã gọi là mảng 1 chiều thì không mường tượng nó là DỌC NGANG gì cả... đơn giàn là MẢNG 1 CHIỀU thôi
- Mảng 1 chiều và 2 chiều có thể mường tượng chúng khác nhau như khi so sánh ĐƯỜNG THẰNG và MẶT PHẲNG vậy (đường thẳng chỉ có duy nhất chiều dài, còn mặt phẳng thì mới có 2 chiều DỌC, NGANG)
Dẫu rằng nói 1 chiều thì không có dọc ngang, tựa như đường thẳng, và khác với mặt phẳng. Nhưng đó là xét theo hệ quy chiếu là đứng trong không gian 1 chiều và đang chỉ nhận thức được 1 chiều.

Giả sử tồn tại 1 thế giới mà sinh vật ở đó chỉ nhận thức được 1 chiều trong không gian, thì khi 1 vật thể di chuyển dọc theo đường thẳng, anh ta sẽ trông thấy sự dịch chuyển. Nếu 1 sinh vật ở hành tinh khác đến và nhận thức được không gian 2 chiều, anh ta đi ra khỏi đường thẳng vào chiều thứ 2. Vậy sinh vật tại đó sẽ nghĩ gì? Nó cho rằng sinh vật lạ đã biến mất.
Còn đối với sinh vật ở hành tinh khác đến, thì nghĩ: tao đâu có biến mất, mày chỉ đi được theo chiều X của tao, còn tao đi 2 hướng, vừa X vừa Y.
(Suy luận tương tự giữa không gian 2 chiều, 3 chiều, và n chiều)

Và khi sinh vật lạ này kể cho đồng hương của nó nghe, nó sẽ kể: Tụi nó chỉ đi ngang hông à, hông có ra khỏi cái đường thẳng đó được.

Chữ ngang để làm chi? để vẽ ra cho đồng hương nó hiểu.

Tưởng tượng xong, quay về Array. Array 1 chiều mà gán xuống sheet (bảng 2 chiều), thì phải gán ngang. Gán dọc là sai.
Nên
vẫn phải
hình dung
mảng 1 chiều

mảng
ngang!

Vì ta là thành viên GPE, thế giới GPE là thế giới bảng tính có ít nhất 2 chiều, và ta là sinh vật nhận thức được n chiều.
 
Lần chỉnh sửa cuối:

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
Chữ ngang để làm chi? để vẽ ra cho đồng hương nó hiểu.
Tưởng tượng xong, quay về Array. Array 1 chiều mà gán xuống sheet (bảng 2 chiều), thì phải gán ngang. Gán dọc là sai.
Dạ, cái này em biết nhưng nhiều lúc em sợ rằng mường tượng nhiều quá sẽ dẫn đến ngộ nhận
Giống như trường hợp Add List cho 1 ListBox
- Em có dữ liệu tại A1:A3
- Muốn muốn Add dữ liệu này vào ListBox1
- Mường tượng rằng ListBox được xếp theo chiều dọc, mà thằng A1:A3 cũng đang dọc, vậy thì cứ Add thoải mái
PHP:
Sub Test1()
  Sheet1.ListBox1.List() = Range("A1:A3").Value
End Sub
Test thử thấy OK
Còn hơi nghi ngờ, Test thử bằng code thứ 2:
PHP:
Sub Test2()
  Dim Arr
  Arr = Sheet1.ListBox1.List
  MsgBox IsArray(Arr)
End Sub
Kết quả = TRUE???
Vậy là sao?
Từ 1 mảng "dọc" (2 chiều) sau cho vào ListBox, lấy ra kiểm tra nó lại thành "ngang" (1 chiều)
???
Test tiếp 1 sub khác:
PHP:
Sub Test3()
  Dim Arr
  Arr = Array("a", "b", "c")
  Sheet1.ListBox1.List() = Arr
End Sub
Arr đương nhiên là mảng 1 chiều, và nó "ngang" theo cách nói của sư phụ, vậy mà vẫn Add vào ListBox được bình thường
Đồng ý rằng có sự "biến đổi" gì đó trong quá trình Add List nhưng nếu ngay từ đầu mình quá tin vào cái vụ "ngang" này thì không khỏi có lúc bị lúng túng (em đã từng bị vậy)
Cũng giống như trường hợp mảng 1 chiều khi gán vào Sheet thì phải gán theo chiều ngang, nhưng khi lấy dữ liệu "ngang" ấy từ sheet để biến nó thành mảng thì mảng ấy lại vẫn cứ... 2 chiều (chẳng làm cách nào cho nó "ngang" được nếu không thông qua quá trình biến đổi)
Thôi thì ngay từ đầu khẳng định rằng mảng 1 chiều không "ngang, dọc" gì cả... Có "ngang" chăng là do ta tự mường tượng ra cho phù hợp với những suy luận của riêng ta mà thôi
Ẹc... Ẹc...
(Mong sư phụ đừng giận em phản biện, vì đàng nào thì mấy cái Array này cũng do sư phụ dạy em)
 
Lần chỉnh sửa cuối:

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Ziận kí rì mà ziận. Có trao đổi mới cùng tiến bộ chứ.
Vấn đề ở trong bài của ndu vừa viết, so với việc "gán xuống sheet phải gán ngang" đó là 2 sự tương tác khác nhau:

- Gán xuống sheet là sự tương tác giữa 2 thế giới 1 chiều và 2 chiều.
- Xử lý Arr, xào nấu chế biến, mắm muối tương cà, đó là sự tương tác giữa thế giới 1 chiều với nhau.

Range của sheet, rõ ràng là 2 chiều. Array là sản phẩm của VBA, anh này thông minh, nên 1 chiều cũng lụm, 2 chiều cũng lụm. Nhưng hễ 1 chiều thì anh í thích "ngang" cơ. Nên lụm về là quất sang 1 chiều cho tụi dân bản địa nó xơi cho nhanh.

Còn khi gán vào Listbox, là sản phẩm của VBA (1 chiều hoặc 2 chiều), bản thân cái listbox là hàng xuất khẩu, đã thiết kế dọc cho người 2 chiều dùng, nên nó lại phải xoay dọc ra trước khi gán.

Code Test3 ở trên, nếu thêm 2 dòng lệnh này sẽ thấy:

PHP:
Sub Test3()
  Dim Arr
  Arr = Array("a", "b", "c")
  Sheet1.ListBox1.List() = Arr
  Range("C1:E1") = Arr
  Range("C2:E2") = ListBox1.List()
End Sub
Arr vẫn cứ ngang, còn Listbox thì vẫn cứ dọc. Vì listbox dùng để tương tác với cư dân 2 chiều. Còn Arr để bọn nó xơi với nhau.

Cáng nói càng thấy khó xơi, nhưng nếu hiểu bản chất thì tốt hơn.

Thôi thì Nó dọc ngang gì kệ nó, nhưng nhớ khi gán xuống sheet thì nó ngang, muốn gán dọc thì transpose.
Hoặc chẳng cần nhớ. Gán xuống thấy sai thì gán lại.
 

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Còn hơi nghi ngờ, Test thử bằng code thứ 2:
PHP:
 	 Sub Test2()
  Dim Arr
  Arr = Sheet1.ListBox1.List
  MsgBox IsArray(Arr)
End Sub
</span> </span>

Kết quả = TRUE???
Vậy là sao?
Từ 1 mảng "dọc" (2 chiều) sau cho vào ListBox, lấy ra kiểm tra nó lại thành "ngang" (1 chiều)
Khúc này ndu chưa test đúng cách. IsArray(Arr) = True đâu thể khẳng định nó 1 chiều, hay là ngang?

Phải Test thế này:

PHP:
Sub test4()
  Dim Arr
  Arr = Sheet1.ListBox1.List
  MsgBox IsArray(Arr)
    Range("C1:E1") = Arr
  Range("C2:E2") = ListBox1.List()
MsgBox Arr(1)

End Sub
Sẽ bị lỗi dòng cuối.

Nếu Arr là mảng ngang, sao gán xuống sheet hàng ngang bị sai?
Nếu Arr là mảng 1 chiều, sao không truy xuất được Arr(1)?

Vậy mà thay câu cuối bằng MsgBox Arr(1, 0) thì OK. Vì Arr là 2 chiều, kính thưa toàn thể đại biểu!
Vì Arr lấy giá trị từ Listbox, nên Listbox cũng 2 chiều, kính thưa toàn thể anh chị em quan viên hai họ!
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
Nếu Arr là mảng ngang, sao gán xuống sheet hàng ngang bị sai?
Nếu Arr là mảng 1 chiều, sao không truy xuất được Arr(1)?

Vậy mà thay câu cuối bằng MsgBox Arr(1, 0) thì OK. Vì Arr là 2 chiều, kính thưa toàn thể đại biểu!
Vì Arr lấy giá trị từ Listbox, nên Listbox cũng 2 chiều, kính thưa toàn thể anh chị em quan viên hai họ!
Vâng, em sơ suất chổ này nhưng sư phụ test như vậy cũng nói lên rằng: Mảng 1 chiều (mà sư phụ cho là ngang ấy) sau khi đưa vào ListBox thì nó lại biến thành dọc ( 2 chiều) giống y chang trường hợp gán mảng vào Range
Ý em muốn nói rằng: Nếu ta nhìn vào Range trên sheet thì sau khi thí nghiệm ta sẽ cảm giác "Thì ra mảng 1 chiều nó hơi... ngang ngang"... Nhưng nếu lấy ListBox làm thí nghiệm thì ta lại nghĩ ngược lại: "Thì ra mảng 1 chiều nó hơi.. dọc dọc"
Khi nghiên cứu sâu hơn về mảng thì cái thuật ngữ "dọc, ngang" đôi lúc sẽ khiến ta bị rối
Ẹc... Ẹc...
(Ý em chỉ nới về sự mường tượng, sợ rằng "chấp nhận" sẽ khiến ta "ngộ nhận" chứ không phải em không đồng ý với các ý kiến của sư phụ)
--------------------------------------
Nói thêm 1 điều theo kinh nghiệm của em:Để biết mảng có phải 1 chiều hay không, em thường dùng hàm Join để test ---> Nếu báo lỗi thì đấy không phải là mảng 1 chiều
--------------------------------
Cuối cùng em kết nhất chổ này:
Thôi thì Nó dọc ngang gì kệ nó, nhưng nhớ khi gán xuống sheet thì nó ngang, muốn gán dọc thì transpose.
Hoặc chẳng cần nhớ. Gán xuống thấy sai thì gán lại.
Vì khi viết code em cũng từng làm thế
 
Lần chỉnh sửa cuối:

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
(Ý em chỉ nới về sự mường tượng, sợ rằng "chấp nhận" sẽ khiến ta "ngộ nhận" chứ không phải em không đồng ý với các ý kiến của sư phụ)
Vậy mường tượng thêm 1 điều, Listbox và những cái tương tự là đồ xuất khẩu cho cư dân 2 chiều xài. Thì dân 1 chiều phải chế tác cho phù hợp con mắt 2 chiều mới bán được.

Còn cứ lấy sản phẩm 1 chiều của nó về xài, thì tự mình phải chế lại.
 
Lần chỉnh sửa cuối:

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
Vậy mường tượng thêm 1 điều, Listbox và những cái tương tự là đồ xuất khẩu cho cư dân 2 chiều xài. Thì dân 1 chiều phải chế tác cho phù hợp con mắt 2 chiều mới bán được.
Còn cứ lấy sản phẩm 1 chiều của nó về xài, thì tự mình phải chế lại.
Cảm ơn sư phụ... Để tài rất thú vị!
Vậy sư phụ có dự định viết 1 bài về Array (1 chiều và 2 chiều) không nhỉ? Cũng cơ bản về dễ hiểu giống như bài viết về For.. Next ấy
(Em đã từng nhở bài viết ấy mà nên người)
 

ptm0412

Excel Ordinary Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,420
Được thích
28,701
Điểm
1,910
Tuổi
57
Nơi ở
Gò Vấp
Hy vọng rằng đây chính là topic đó. Theo cách là ai có thắc mắc cứ vào đây hỏi, ai biết thì cứ trả lời. Mình sẽ sẵn sàng tham gia. Mà đã tham gia rồi đấy thôi? Nói kiểu không gian 1 chiều, 2 chiều, và sinh vật ngoài hành tinh cũng đâu có khó hiểu lắm nhỉ?
 

thanhlanh

Thành viên tích cực
Tham gia ngày
21 Tháng hai 2008
Bài viết
840
Được thích
1,215
Điểm
860
Trong mỗi vòng lặp mình đã tạo được bốn mảng con có kích thước bằng nhau là Arr1(1 to n,1); Arr2(1 to n,1); Arr3(1 to n,1) và
Arr4(1to n,1). Mỗi vòng lặp kích thước mảng (giá trị n) khác nhau.
Nhờ các bạn chỉ cho đoạn code:
Trong vòng lặp đó nối dần các mảng con thành:
- Mảng dạng ma trận bốn cột ArrTg(Arr1, Arr2, Arr3, Arr4) số dòng bằng tổng các kích thước của tất cả các lần lặp (xích ma(n)).
- Hoặc nối thành các mảng (bốn mảng) một chiều có cùng kích thước (mình nghĩ cái này khả thi hơn) nhờ các bạn làm cho kiểu này nhé!
 
Lần chỉnh sửa cuối:

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,166
Được thích
52,404
Điểm
11,910
Trong mỗi vòng lặp mình đã tạo được bốn mảng con có kích thước bằng nhau là Arr1(1 to n,1); Arr2(1 to n,1); Arr3(1 to n,1) và
Arr4(1to n,1). Mỗi vòng lặp kích thước mảng (giá trị n) khác nhau.
Nhờ các bạn chỉ cho đoạn code:
Trong vòng lặp đó nối dần các mảng con thành:
- Mảng dạng ma trận bốn cột ArrTg(Arr1, Arr2, Arr3, Arr4) số dòng bằng tổng các kích thước của tất cả các lần lặp (xích ma(n)).
- Hoặc nối thành các mảng (bốn mảng) một chiều có cùng kích thước (mình nghĩ cái này khả thi hơn) nhờ các bạn làm cho kiểu này nhé!
Hổng biết ý anh có phải là gộp 4 mảng ấy thành Arr(1 to n, 1 to 4) không nhỉ? ---> Mảng này nếu gán vào bảng tính thì mỗi cột của nó sẽ đúng = 1 mảng con
Nếu không phải như em suy đoán thì anh cứ đưa ví dụ cụ thế lên đi
 
Top Bottom