Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Dec 2015
    Bài viết
    0

    Hàm tự tạo trả về mảng các giá trị

    :15:​
    BÀI 1: KHÁI NIỆM HÀM TRẢ VỀ 1 MẢNG CÁC GIÁ TRỊ:


    Như chúng ta được biết các hàm trong excel nói chung, trong đó có cả các hàm tự tạo (UFD) thường trả về giá trị tại một ô hiện hành.

    Vậy có thể có cách nào để một hàm tự tạo nào đó trả về là một mảng giá trị (hiển thị trên các ô khác nhau của 1 vùng)

    Lấy ví dụ: Ta dùng hàm VLOOKUP() để trả về một phần tử đầu tiên thỏa mãn điều kiện của hàm. Tuy nhiên trong bảng tham chiếu có đến hơn 9 phần tử thỏa mãn với điều kiện đó.

    Vậy có cách nào để nhập công thức vào một hay nhiều ô thì tất cả các kết quả sẽ hiện ra ở các ô hay không (kể từ ô hiện hành)?

    Muốn vậy, ta xét đến hàm tự tạo sau đây dùng để giải phương trình bậc hai:



    Mã nguồn PHP:
    [COLOR=#000000]
    [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]PTBac2[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]aA [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]bB [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]cC [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Dim Temp[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]1 To 3[/COLOR][COLOR=#007700]): [/COLOR][COLOR=#0000BB]Dim DelTa [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double DelTa[/COLOR][COLOR=#007700]= ([/COLOR][COLOR=#0000BB]bB [/COLOR][COLOR=#007700]^ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) - ([/COLOR][COLOR=#0000BB]4 [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]aA [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]cC[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]“Phuong Trinh “ Select [/COLOR][COLOR=#007700]Case [/COLOR][COLOR=#0000BB]DelTa [/COLOR][COLOR=#007700]Case [/COLOR][COLOR=#0000BB]Is [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000BB]0 Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) & [/COLOR][COLOR=#DD0000]"Vo nghiem" [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]" " [/COLOR][COLOR=#007700]Case [/COLOR][COLOR=#0000BB]0 Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) & [/COLOR][COLOR=#DD0000]"Mot nghiem:" [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = -[/COLOR][COLOR=#0000BB]bB [/COLOR][COLOR=#007700]/ ( [/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]aA[/COLOR][COLOR=#007700]): [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#007700]Case Else [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) & [/COLOR][COLOR=#DD0000]"Hai nghiem:" [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = (-[/COLOR][COLOR=#0000BB]bB [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]Sqr[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]DelTa[/COLOR][COLOR=#007700])) / ( [/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]aA[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = (-[/COLOR][COLOR=#0000BB]bB [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]Sqr[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000BB]DelTa[/COLOR][COLOR=#007700]))/([/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]aA[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]End Select PTBac2 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Temp End [/COLOR][COLOR=#007700]Function [/COLOR
    Tại trang tính (“S2”) ta nhập các trị 1, 3 & -4 vố các ô tương ứng [A1], [B1] & [C1]
    Sau đó dùng chuột quét chọn các ô từ [B3] đến [d3]
    Tiếp theo bấm chuột lên thanh công thức và nhập cú pháp hàm
    [B]:rachoa:

    ---------- Post added at 01:06 ---------- Previous post was at 01:02 ----------

    :dangiuqua:​
    2./ Hàm trả về tên các tập tin trong thư mục cụ thể nào đó (với đường dẫn đầy đủ):



    Giả dụ chúng ta có thư mục FileSpec, và muốn liệt kê tên các tập tin trong đó lên trang tính excel, ta có thể dùng hàm mảng tự tạo như sau.



    Mã nguồn PHP:
    [COLOR=#000000]
    [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]FileList[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]FileSpec [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String[/COLOR][COLOR=#007700]) As [/COLOR][COLOR=#0000BB]Variant [/COLOR][COLOR=#DD0000]' Returns an array of filenames that match FileSpec;' ' If no matching files are found, it returns False.' [/COLOR][COLOR=#0000BB]Dim FileArray[/COLOR][COLOR=#007700]() As [/COLOR][COLOR=#0000BB]Variant Dim FileCount [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Integer[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Dim FileName [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String On Error [/COLOR][COLOR=#007700]GoTo [/COLOR][COLOR=#0000BB]NoFiles FileCount [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]FileName [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Dir[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]FileSpec[/COLOR][COLOR=#007700]) If [/COLOR][COLOR=#0000BB]FileName [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#0000BB]Then [/COLOR][COLOR=#007700]GoTo [/COLOR][COLOR=#0000BB]NoFiles Loop until no more matching files are found [/COLOR][COLOR=#007700]Do While [/COLOR][COLOR=#0000BB]FileName [/COLOR][COLOR=#007700]<> [/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#0000BB]FileCount [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]FileCount [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 ReDim Preserve FileArray[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]FileCount[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]FileArray[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]FileCount[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]FileName FileName [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Dir[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#0000BB]Loop FileArray[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]FileCount FileList [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]FileArray[/COLOR][COLOR=#007700]: Exit Function [/COLOR][COLOR=#0000BB]NoFiles[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]FileList [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]False End [/COLOR][COLOR=#007700]Function [/COLOR
    Hướng dẫn sử dụng hàm: Ta có thư mục D:tapta:​[/RIGHT]

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    12
    Ðề: Hàm tự tạo trả về mảng các giá trị

    Bạn cho mình hỏi tý, điểm ưu thế của hàm này với offset à gì vậy?

  3. #3
    Ngày tham gia
    Nov 2015
    Bài viết
    3
    Ðề: Bài 2

    :tapta:​
    3./ Trích xuất dữ liệu của 1 người theo năm sinh trùng tên
    Giả dụ cơ quan chúng ta có vài trăm nhân viên; Trong đó có một số không ít người trùng họ tên; (Xin xem bảng sau:rachoa:​[/RIGHT]

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Bài 3: Tìm địa điểm & cự ly giữa các trạm thu phát sóng

    :dangiuqua:​
    Giả dụ chúng ta có danh sách liệt kê các trạm thu phát như trong file đính kèm. (Cột 'A' là tên trạm; Cột 'B' là kinh độ & cột 'C' là vĩ độ)

    Để tìm ra trạm gần nhất & cụ ly giữa trạm làm mốc & trạm gần nhất; chúng ta đã có hàm người dùng như sau:



    Mã nguồn PHP:
    [COLOR=#000000]
    [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]TramGanNhat1[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Tram [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]LookupRange [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Optional Ten [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Boolean [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]True[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Dim Long_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Lat_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Min_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Temp [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double Dim wW [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double Dim Clls [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Dim MyAdd [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String Long_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Lat_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Min_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]10 [/COLOR][COLOR=#007700]^ [/COLOR][COLOR=#0000BB]6 [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]Each Clls In LookupRange[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Resize[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]LookupRange[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Rows[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Count[/COLOR][COLOR=#007700]) If [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Value [/COLOR][COLOR=#007700]<> [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Value Then wW [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Temp [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Abs[/COLOR][COLOR=#007700]((([/COLOR][COLOR=#0000BB]wW [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]Long_[/COLOR][COLOR=#007700]) ^ [/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]+ ([/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]Lat_[/COLOR][COLOR=#007700]) ^ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) ^ ([/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700])) If [/COLOR][COLOR=#0000BB]Temp [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000BB]Min_ Then Min_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]MyAdd [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Address End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Next Clls TramGanNhat1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]IIf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Ten[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]MyAdd[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]Function [/COLOR
    :15:​
    Nhưng hàm này (đưa ra kết quả tương ứng trên 2 cột 'H' & 'I' trong file đính kèm) vẫn chưa thỏa mản yêu cầu người dùng. Yêu cầu đó là dùng 1 hàm cho ra hai kết quả liền 1 lúc; Một là địa danh trạm gần nhất (dạng chuỗi kí tự) & cự ly (Kiểu dữ liệu số) cho một lần viết hàm.

    Yêu cầu này được thỏa mãn bỡi hàm mảng người dùng sau:



    Mã nguồn PHP:
    [COLOR=#000000]
    Option Explicit[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Option Base 1 [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]TramGanNhat[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Tram [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]LookupRange [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Dim Long_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Lat_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Min_ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Temp [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double Dim wW [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double Dim Clls [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Dim MyAdd [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String Long_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Lat_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Min_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]10 [/COLOR][COLOR=#007700]^ [/COLOR][COLOR=#0000BB]6 [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]Each Clls In LookupRange[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Resize[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]LookupRange[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Rows[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Count[/COLOR][COLOR=#007700]) If [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Value [/COLOR][COLOR=#007700]<> [/COLOR][COLOR=#0000BB]Tram[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Value Then wW [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Temp [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Abs[/COLOR][COLOR=#007700]((([/COLOR][COLOR=#0000BB]wW [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]Long_[/COLOR][COLOR=#007700]) ^ [/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]+ ([/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]Lat_[/COLOR][COLOR=#007700]) ^ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) ^ ([/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700])) If [/COLOR][COLOR=#0000BB]Temp [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000BB]Min_ Then Min_ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Temp[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]MyAdd [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Clls[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Address End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Next Clls ReDim MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) As [/COLOR][COLOR=#0000BB]Variant MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]MyAdd[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Min_ TramGanNhat [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]MDL End [/COLOR][COLOR=#007700]Function [/COLOR
    (Lưu ý: Hàm mảng phải được kết thúc bằng tổ hợp 3 fím)
    Kết quả thể hiện trên 2 cột 'E' & 'F' của 1 dòng tương ứng.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Bài 4: Dùng hàm mảng tự tạo để thể hiện các nghiệm của fương trình đường tròn

    Đề bài:
    Hãy tìm các cập nghiệm của fương trình
    X^2 + Y^2 = Z ^2 với X & Y là số nguyên dương < 21

    Để giải bài tập này, chúng ta nhờ tới sự hỗ trợ của hàm mảng tự tạo sau đây:



    Mã nguồn PHP:
    [COLOR=#000000]
    Option Explicit[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Option Base 1 [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]DuongTron[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#0000BB]Dim Xx [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Yy [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Zz [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Dem [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte ReDim MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]30[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) For [/COLOR][COLOR=#0000BB]Xx [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1 To 20 [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]Yy [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1 To 20 Zz [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Abs[/COLOR][COLOR=#007700](([/COLOR][COLOR=#0000BB]Xx [/COLOR][COLOR=#007700]^ [/COLOR][COLOR=#0000BB]2 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]Yy [/COLOR][COLOR=#007700]^ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) ^ ([/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700])) If [/COLOR][COLOR=#0000BB]Int[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Zz[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Zz Then Dem [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Dem [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Dem[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Xx[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Dem[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Yy MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Dem[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Zz End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Next Yy[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Xx [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]Xx [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Dem [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 To 30 MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Xx[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]""[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Xx[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#0000BB]MDL[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Xx[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"" [/COLOR][COLOR=#0000BB]Next Xx DuongTron [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]MDL End [/COLOR][COLOR=#007700]Function [/COLOR
    Cách dùng:
    Ta dùng chuột quét chọn vùng từ "G1:I16"; Ta tô màu nền cho vùng này xanh nhạt.
    Sau đó, ta bấm chuột lên thanh công thức & nhập cú fáp =DuongTron()
    Sau đó ta kết thúc hàm bằng tổ hợp 3 fím dành cho hàm mảng.

    Chúc các bạn thành công.

    :15:

  6. #6
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Hàm tự tạo trả về mảng các giá trị

    Giả dụ chúng ta có bảng số liệu như sau:



    Mã:
    Đ Vị  |Viết Bis|Bút chì|Tập|Giấy|Thước
    P. KT |  11    |  19   | 27|  35| 43
    PX A  |  40    |  36   | 32|  38| 34
    PX B  |  95    |  85   | 75|  65| 55
    Yêu cầu đề ra là ta xoay bảng số liệu trên thành dạng như sau:



    Mã nguồn PHP:
    [COLOR=#000000]
    Trích [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]Đ Vị[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]SLg Viết Bis[/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]KT[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]11 Bút chì [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]KT[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]19 Tập [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]KT[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]27 Giấy [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]KT[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]35 Thước [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]KT[/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]43 Viết Bis[/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX A [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]40 Bút chì [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX A [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]36 Tập [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX A [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]32 Giấy [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX A [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]38 Thước [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX A [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]34 Viết Bis[/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX B [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]95 Bút chì [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX B [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]85 Tập [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX B [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]75 Giấy [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX B [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]65 Thước [/COLOR][COLOR=#007700]|[/COLOR][COLOR=#0000BB]PX B [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]55 [/COLOR
    Hàm mảng có nội dung sau đây sẽ thực hiện việc đó 1 cách lẹ làng & chính xác:



    Mã nguồn PHP:
    [COLOR=#000000]
    Option Explicit [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]PhanTach[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Rng [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Dim Cot [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Hang [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Long Dim Col [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]jJ [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Long[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Rws [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Long Cot [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Rng[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Columns[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Count[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Hang [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Rng[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Rows[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Count ReDim Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1 To Cot [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]Hang[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1 To 3[/COLOR][COLOR=#007700]): [/COLOR][COLOR=#0000BB]Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"Trích" [/COLOR][COLOR=#0000BB]Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"DV"[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#DD0000]"SL" [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]Rws [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]2 To Hang [/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000BB]Cot Col [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Col [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Col [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]Cot [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]1 Then Col [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000BB]jJ [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]jJ [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Rws[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Rng[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]Col[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Rws[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Rng[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]jJ [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Mang[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Rws[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]Rng[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]jJ [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]Col[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value Next Rws PhanTach [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Mang[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]Function [/COLOR
    Cách thức để đạt được mục đích là:

    Dùng chuột quét chọn vùng i1:K16 & tiếp theo ta bấm chuột lên thanh công thức & nhập cú fáp hanTach(B2:G5)
    (Vùng B2:G5 là vùng chứa dữ liệu ban đầu)
    Sau đó kết thúc bằng tổ hợp 3 fím dành cho hàm mảng.

    (húc các bạn thành công.

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    8
    Ðề: Hàm tự tạo trả về mảng các giá trị




    Trích dẫn Gửi bởi newbee
    Bạn cho mình hỏi tý, điểm ưu thế của hàm này với offset à gì vậy?
    Hàm OFFSET() bạn nêu có làm được như các hàm trên không?

  8. #8
    Ngày tham gia
    Nov 2015
    Bài viết
    14
    Ðề: Hàm tự tạo trả về mảng các giá trị

    trong excel mình kém phần này nhất: đó là sử dụng các hàm. huhu. ai có cách nào bày cho mình với.

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Hàm tự tạo trả về mảng các giá trị




    Trong excel mình kém phần này nhất: đó là sử dụng các hàm. huhu.
    Ai có cách nào bày cho mình với.
    Ta có thể áp dụng cách ngược lại, đó là xin được fép hỏi: Nghề của bạn là gì.
    Néu chỉ đang là sinh viên, thì bạn sang ******************/forum/ sẽ tìm thấy 1 số từ cơ bản đến fức tạp nhất của VN!

    Chúc thành công nhân dịp xuân về!

    :lala:

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Hàm tự tạo trả về mảng các giá trị



    Trong hình ta thấy trang tính chứa đề bài gồm dữ liệu trước cột [K] (vùng Input);
    Yêu cầu ta thu dược số liệu điền vô form có bên fải của trang tính.
    Với lưu í là trường số lượng được tính từ trị tương ứng trong cột [C] của application đã chọn ở ô [M10]
    ứng với hệ số ghi dưới các ô [D7:F7] (với App4 ta có số lượng 400 & hệ số là 0.4 (400 * 0.4)
    Sau đó nhân với hệ số đang ghi trong [G8:j8]

    Toàn bộ công việc đã ghi trong file kèm theo;
    Công việc còn lại cuối cùng của bạn chỉ là chọn 1 application trong danh sách có sẵn trong [M10]

    Chúc các bạn vui vẻ.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •