(sưu tầm từ bài viết của NDU- GPE)
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:
- 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 Code:
Sub Test()
Dim Arr
Arr = Range("A1:A10").Value
Arr = WorksheetFunction.Transpose(Arr)
Range("B1") = Join(Arr, ", ")
End Sub
Dim Arr
Arr = Range("A1:A10").Value
Arr = WorksheetFunction.Transpose(Arr)
Range("B1") = Join(Arr, ", ")
End Sub
Rút gọn:
PHP Code:
Sub Test()
Dim Arr
Arr = WorksheetFunction.Transpose(Range("A1:A10"))
Range("B1") = Join(Arr, ", ")
End Sub
Dim Arr
Arr = WorksheetFunction.Transpose(Range("A1:A10"))
Range("B1") = Join(Arr, ", ")
End Sub
Rút gọn tiếp:
PHP Code:
Sub Test()
Range("B1") = Join(WorksheetFunction.Transpose(Range("A1:A10")), ", ")
End Sub
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
- 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 Code:
Sub Test()
With WorksheetFunction
Range("A2") = Join(.Transpose(.Transpose(Range("A1:J1"))), ", ")
End With
End Sub
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)
-------------
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)
from: ndu96081631, 25-03-11
Không có nhận xét nào:
Đăng nhận xét