Tạo function trả về mảng (1 người xem)

Người dùng đang xem chủ đề này

duongapt

Thành viên mới
Tham gia
25/9/11
Bài viết
19
Được thích
1
Giới tính
Nam
Kính gửi các Kỹ sư
Em mới tập viết hàm trong excel, nhưng viết mãi mà vẫn không có kết quả.
Function dtarr(vungdulieu as variant)
Dtarr=vungdulieu
Range ("a2:c17").formularray=dtarr
End function
Sao mà khi nhân enter lại không ra kq
Giúp em với
 
Kính gửi các Kỹ sư
Em mới tập viết hàm trong excel, nhưng viết mãi mà vẫn không có kết quả.
Function dtarr(vungdulieu as variant)
Dtarr=vungdulieu
Range ("a2:c17").formularray=dtarr
End function
Sao mà khi nhân enter lại không ra kq
Giúp em với
Bạn dự định cho cái hàm hoạt động như thế nào. Rõ cái này mới góp ý được.
 
Giả sử 2 có 2sheet
Sh1&sh2
Ở sh2 em muốn trả kết quả từ sh1!a1:c16
Theo dạng mang bằng function chứ không dùng sub
 
Hàm mảng tự tạo cũng fải kết thúc bởi tổ hợp 3 fím
Mình lấy ví dụ hàm mảng tự tạo như sau:
Ở trang Sh1 của bạn có cột {b:b] chứa họ & đệm của danh sách HS; (Cột [C:C] là tên, . . .
Chúng ta cần lên danh sách các em họ "Nguyễn" ở Sh2 thì làm vầy:
PHP:
Function DSHo( Ho As String)
 Dim Rng As Range, sRng As Range, Arr(1 to 99, 1 to 3)
 Dim W as Long, J As Long
 Sheets("Sh1").Select
Set Rng=Columns("B:B")
Set sRng=Rng.Find( Ho, , xlFormulas, xlPart)
If Not sRng Is Nothing Then
   Set Rng = sRng.Resize( [B65500].End(xlUp).Row)
  For Each Srng In Rng
     If sRng.Value = Ho Then
           W =W +1:              Arr(w,1)=W
      Arr(w,2)= sRng.Value:          Arr(w,3)=  sRng.Offset(,1).Value
  end If
 Next sRng
 Else
   MsgBox "Nothing"
 End If
9     DSHo =  Arr()
End Function

Xin lỗi Về sự trả về của hàm phải đổi lại như dòng 9 như trên
 
Chỉnh sửa lần cuối bởi điều hành viên:
Hàm mảng tự tạo cũng fải kết thúc bởi tổ hợp 3 fím
Mình lấy ví dụ hàm mảng tự tạo như sau:
Ở trang Sh1 của bạn có cột {b:b] chứa họ & đệm của danh sách HS; (Cột [C:C] là tên, . . .
Chúng ta cần lên danh sách các em họ "Nguyễn" ở Sh2 thì làm vầy:
PHP:
Function DSHo( Ho As String)
 Dim Rng As Range, sRng As Range, Arr(1 to 99, 1 to 3)
 Dim W as Long, J As Long
 Sheets("Sh1").Select
Set Rng=Columns("B:B")
Set sRng=Rng.Find( Ho, , xlFormulas, xlPart)
If Not sRng Is Nothing Then
   Set Rng = sRng.Resize( [B65500].End(xlUp).Row)
  For Each Srng In Rng
     If sRng.Value = Ho Then
           W =W +1:              Arr(w,1)=W
      Arr(w,2)= sRng.Value:          Arr(w,3)=  sRng.Offset(,1).Value
  end If
 Next sRng
 Else
   MsgBox "Nothing"
 End If
 If W Then
    Sheets("Sh2").[C3].Resize(W,3).Value= Arr()
 End If
End Function
Nếu ghi kết quả từ ô gõ công thức thì làm thế nào vậy Chú. Cám ơn Chú nhiều ạ
 
Sao em thấy của Anh Tuân,enter là ra kết quả như hàm BS_vlookup
Em muốn làm hàm như vậy đó
 
Oh, ý e không phải vậy, vì thực tế em cần hàm tượng tự của aTuan, để lọc dữ liệu 1 điều kiện thôi. Do công ty hạn chế nền không dùng anh Tuân được
 
Nếu ghi kết quả từ ô gõ công thức thì làm thế nào vậy Chú. Cám ơn Chú nhiều ạ
Vì mảng ta khai báo 99 dòng & 3 cột;
Cho nên ta lấy chuột tô chọn bắt đầu từ ô [C3] (trang Sh2) xuống cỡ 20 hay 30 dòng (tùy theo suy đón kết quả nhiều chừng nào) & 3 cột;
Nhấp chuột lên thanh công thức & nhập =DSHo("Nguyễn") & kết thúc bỡi tổ hợp nêu trên.
Chúc bạn thành công!
 
Vì mảng ta khai báo 99 dòng & 3 cột;
Cho nên ta lấy chuột tô chọn bắt đầu từ ô [C3] (trang Sh2) xuống cỡ 20 hay 30 dòng (tùy theo suy đón kết quả nhiều chừng nào) & 3 cột;
Nhấp chuột lên thanh công thức & nhập =DSHo("Nguyễn") & kết thúc bỡi tổ hợp nêu trên.
Chúc bạn thành công!
Không có cách nào cho no tự chọn Theo số dòng và cột kết quả cần trả về ha hả Chú
 

Bài viết mới nhất

Back
Top Bottom