EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Function dup(x As Range, y As Range)
With Application.WorksheetFunction
dup = .Index(x, .Match(0, .CountIf(y, x), 0), 1)
End With
End Function
ไฟล์แนบเพิ่มเติมครับตามที่อาจารย์แจ้งครับsnasui wrote: Tue Sep 07, 2021 7:47 pm กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงผลลัพธ์ที่ต้องการ จะได้สะดวกต่อการตอบของเพื่อนสมาชิกครับ
Code: Select all
Function Abcdef(rngs As Range) As Variant
Dim r As Range
Dim c As New Collection, it As Variant
Dim a() As Variant, l As Long
On Error Resume Next
For Each r In rngs
c.Add r.Value, r.Value
Next r
For Each it In c
ReDim Preserve a(l)
a(l) = it
l = l + 1
Next it
Abcdef = Application.Transpose(a)
End Function
ขอบคุนครับ ได้ผลลัพธ์ตามต้องการsnasui wrote: Wed Sep 08, 2021 7:55 pm ปกติการเขียนสูตรใช้เองจะใช้เมื่อไม่มีฟังก์ชันของ Excel ให้ใช้ สำหรับกรณีนี้สามารถใช้ฟังก์ชันปกติทำงานได้ไม่จำเป็นต้องเขียนฟังก์ชันด้วย VBA แต่อย่างใดครับ
ตัวอย่างด้านล่างเพื่อใช้เป็นกรณีศึกษาในการเขียนฟังก์ชันหาค่าไม่ซ้ำขึ้นมาใช้เอง
วิธีการใช้ เซลล์ใด คีย์Code: Select all
Function Abcdef(rngs As Range) As Variant Dim r As Range Dim c As New Collection, it As Variant Dim a() As Variant, l As Long On Error Resume Next For Each r In rngs c.Add r.Value, r.Value Next r For Each it In c ReDim Preserve a(l) a(l) = it l = l + 1 Next it Abcdef = Application.Transpose(a) End Function
=Abcdef(A4:A21)
Enter
หากใช้ Excel 2010 อาจจะใช้ Index เข้าไปช่วยเช่น
=INDEX(Abcdef($A$4:$A$21),ROWS(C$4:C4))
Enter > Copy ลงด้านล่าง