Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
VBA
Array Function
ดาวน์โหลดคู่มือ

Partition Function

VBA Function, ส่งออกค่าเป็นประเภทข้อมูล Variant (String) ที่ชี้ถึงการปรากฏของข้อมูล ภายในการคำนวณตามลำดับของช่วงข้อมูล

ไวยากรณ์

Partition(number, start, stop, interval )

อากิวเมนต์ของฟังก์ชัน Partition มีรายละเอียด คือ

ส่วน รายละเอียด
number บังคับ, เป็นเลขจำนวนเต็มที่ต้องหาค่าในช่วง
start บังคับ, เป็นเลขจำนวนเต็มที่เป็นค่าเริ่มต้นของช่วง และค่าไม่สามารถน้อยกว่า 0
stop บังคับ, เป็นเลขจำนวนเต็มที่เป็นค่าสิ้นสุดของช่วง และค่าไม่ต้องน้อยกว่าหรือเท่ากับค่า start
interval บังคับ, เป็นเลขจำนวนเต็มที่เป็นค่าภายในขอบเขตของแต่ละช่วงตามลำดับจาก start ถึง stop และค่าไม่สามารถน้อยกว่า 1

ลักษณะการประยุกต์

ฟังก์ชัน Partition ชี้ถึงช่วงที่ระบุที่ number มีค่าภายในช่วง และส่งค่าออกเป็นประเภทข้อมูล Variant (String) ที่อธิบายช่วง ฟังก์ชัน Partition มีประโยชน์ในคิวรี่ โดยสร้างคิวรี่ (Select query) ที่แสดงลำดับที่อยู่ภายในช่วงต่างๆ เช่น ลำดับค่าจาก 1 ถึง 1000, 1001 ถึง 2000 และอื่นๆ

ตารางต่อไปเป็นการแสดงช่วงที่หาด้วยการตั้งค่า 3 ค่าของ start, stop และ interval โดยคอลัมน์ช่วงที่ 1 และช่วงสุดท้ายเป็นค่าที่ส่งออกมาด้วยฟังก์ชัน Partition ช่วงเหล่านี้แสดงด้วย ค่าขอบเขตล่าง:ค่าขอบเขตบน ซึ่งค่าขอบเขตล่างแยกจากค่าขอบเขตบนด้วยเครื่องหมาย colon (:)

start stop interval Before First First Range Last Range After Last
0 99 5 " :-1" " 0: 4" " 95: 99" " 100: "
20 199 10 " : 19" " 20: 29" " 190: 199" " 200: "
100 1010 20 " : 99" " 100: 119" " 1000: 1010" " 1011: "

ในตารางข้างบน แถวที่ 3 แสดงถึงผลลัพธ์เมื่อ start และ stop กำหนดกลุ่มของตัวเลขที่ไม่สามารถหารด้วย interval ได้ลงตัวโดยช่วงสุดท้ายมีช่วงตัวเลขเป็น 11 ในขณะที่ interval มีค่า 20

ถ้ามีความจำเป็น ฟังก์ชัน Partition จะส่งออกช่วงที่เผื่อช่องว่างหน้าตัวเลขทั้งค่าขอบเขตล่างและขอบเขตบน เพื่อทำให้มั่นใจว่าฟังก์ชัน Partition สามารถดูแลตัวเลขต่างและผลลัพธ์ของข้อความได้ถูกต้อง ระหว่างการจัดเรียงลำดับ

ถ้า interval เป็น 1 จะได้ช่วงเป็น number:number โดยไม่พิจารณาอากิวเมนต์ start และ stop เช่น interval เป็น 1, number เป็น 100 และ stop เป็น 100 ฟังก์ชัน Partition ส่งออกค่าเป็น “ 100: 100”

ถ้ามีส่วนใดส่วนหนึ่งเป็นค่าว่าง ฟังก์ชัน Partition ส่งออกค่าเป็น ค่าว่าง (Null)

ตัวอย่าง

ตัวอย่างการใช้ฟังก์ชัน Partition โดยสมมติว่า Table ชื่อ Orders มีฟิลด์ชื่อ Freight ให้สร้างชุดคำสั่ง SELECT เพื่อนับจำนวนใบสั่งซื้อที่จัดช่วงค่าขนส่งเป็นช่วงต่างๆ ฟังก์ชัน Partition จะไดรับการใช้ก่อนเพื่อสร้างช่วง จากนั้นฟังก์ชัน SQL Count จะนับใบสั่งซื้อในแต่ละช่วง ในตัวอย่างนี้ กำหนดค่าอากิวเมนต์ของฟังก์ชัน Partition คือ start = 0, stop = 500, interval = 50 จะได้ช่วงที่ 1 เป็น 0:49 และต่อไปจนถึง 500

SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);

ตัวอย่างการประยุกต์ใน Access

สามารถใช้ฟังก์ชัน Partition ในตารางการออกแบบคิวรี่และ SQL view ของ Query window ในตารางการออกแบบคิวรี่ สามารถใช้ฟังก์ชัน Partition ในฟิลด์คำนวณหรือกำหนด Criteria สำหรับคิวรี่แบบ Select

ตัวอย่างต่อไปแสดงการใช้ฟังก์ชัน Partition ในการสร้างฟิลด์คำนวณ ที่แสดงรายการจำนวนเรคคอร์ด ที่อยู่ในช่วงที่ระบุ สมมติให้ Table ชื่อ Orders มีฟิลด์ Freight ใน Query window ให้สร้างคิวรี่แสดงผลรวมใหม่โดยการเพิ่ม Table ชื่อ Orders และคลิกปุ่ม Total บนเมนูคำสั่ง Query ทำการ drag ฟิลด์ Freight ไปที่เซลล์แรกของแถว Field บนตารางการออกแบบคิวรี่ และตั้งค่าเวลล์ในแถว Totals เป็น Count ในฟิลด์ถัดมาให้กำหนด expression

Range: Partition([Freight], 0, 1000, 50)

กำหนดเซลล์ Total ของฟิลด์นี้เป็น Group by และเรียกใช้คิวรี่ ฟังก์ชัน Partition จะส่งออกค่าเป็น 11 ระดับ (0:99, 100:199, 200:299, และต่อไป) คิวรี่แสดงจำนวนใบสั่งซื้อที่อยู่ในแต่ละช่วง

ตัวอย่างต่อไปแสดงการใช้ฟังก์ชัน Partition ใน SQL view ของ Query window โดยการสร้างคิวรี่แบบ crosstab เพื่อหาค่าของฟิลด์ Freight ใน Table ชื่อ Orders ให้คำนวณจำนวนใบสั่งซื้อ แยกตามช่วงต้นทุนค่าขนส่ง ของลูกค้าแต่ละราย โดยช่วงกำหนดด้วยอากิวเมนต์ในฟังก์ชัน Partition ดังนี้ start = 0, stop = 1000, interval = 50 ให้ป้อน expression ใน SQL view เมื่อเรียกใช้คิวรี่ จะปรากฏชื่อคอลัมน์ของแต่ละช่วง

TRANSFORM Count(Orders.[OrderID]) AS [CountOfOrderID]
SELECT Orders.[CustomerID]
FROM Orders
GROUP BY Orders.[CustomerID]
PIVOT Partition(Int([Freight]), 0, 1000, 50);