2014-11-07 37 views
6

Tôi đã tự hỏi làm thế nào để điền vào một mảng đa chiều trong Excel VBA. Mảng 1d có thể được điền như sau:Điền mảng đa chiều

Dim myarray as variant 

myarray = Array("sheep", "goat", "chicken") 

Làm cách nào để điền vào mỗi hàng riêng biệt cho mảng đa chiều?

+0

Bạn có thể điền nhanh mảng 2 chiều bằng cách sử dụng mảng động và nhập dữ liệu vào một phạm vi trên trang tính. Sau đó, bạn có thể chỉ đơn giản là: 'array = Range (" Range ")'. Đối với nhiều hơn 2 chiều, bạn phải đọc từng giá trị riêng lẻ. –

+0

Đó là mảng 1-D bạn có - bạn có thực sự có nghĩa là đa chiều không? –

Trả lời

12

Bạn có thể làm điều này:

Dim a 
a = [{1,2;3,4;5,6}] 

Hạn chế:

  • chỉ này hoạt động với mảng kiểu Variant, vì [x] là viết tắt cho Evaluate("x") có nghĩa là x được giải thích thông qua Excel, và Excel chỉ trả về các biến thể. Vì vậy, khai báo Dim a As Variant hoặc một mảng Dim a() As Variant hoạt động tốt. Nhưng không phải bất kỳ loại mảng nào khác, ví dụ: Dim a() As String không thành công.

  • Điều này chỉ hoạt động cho một loại mảng đa chiều cụ thể, cụ thể là hai mảng hai chiều. Không phải ba, bốn, vv chiều.

+0

Thật sao ?? Đó là hoàn toàn mát mẻ! Làm thế nào trên trái đất tôi chưa từng thấy cú pháp này trước đây ?! –

+1

Cần lưu ý rằng điều này chỉ hoạt động như được hiển thị. Một biến được khai báo là một mảng sẽ không thể tải theo cách này. Bạn sẽ nhận được lỗi biên dịch: "Không thể gán cho mảng". –

+0

@ jbarker2160: Vâng, không hoàn toàn. Xem chỉnh sửa của tôi cho câu trả lời. –