Tuesday, June 18, 2013

2:26 AM
เรื่องของเรื่อง มีอยู่ว่า ต้องการที่จะแปลง number format ที่มีเครื่องหมาย "," คั่นหลัก พัน หมื่น แสน ล้าน ให้เป็น text ซึ่งถ้าใช้คำส่ัง set field หรือ copy เอาไป paste ธรรมดา "," มันจะไม่มาด้วย ซึ่งหากมข้อมูลไม่มากเท่าไร ก็แค่เติม "," เข้าไปเองก็จบ

แต่ที่ไม่พบ ก็เพราะมีข้อมูลมากหลายที่ต้องทำ จึงต้องหาตัวช่วย ด้วยการใช้ Calculation ดังต่อไปนี้

สมมุติว่า
- Field A Type เป็น Number
- Field B Type เป็น Text
ต้องการส่งค่า field A ให้ field B โดยเอา format ที่จัดไว้ดีแล้วมาด้วย เช่น ส่งค่า 123,456 ไป ก็อย่าให้เอาเครื่องหมาย "," ออก ว่างั้นเหอะ

มาสูตรกัน อย่างแรก็ให้เปลี่ยน type ของ field B จาก text ธรรมดา ให้เป็น calculation แล้ว copy สูตรด้านล่างนี้ไปใส่ได้เลย

"$" &
Case(
A > 999999999,
Left(A, Length(Int(A))-9) & "," &
Middle(A, Length(Int(A)) - 8, 3) & "," &
Middle(A, Length(Int(A)) - 5, 3) & "," &
Right(Int(A),3) & "."&
If(Length(A - Int(A))<2, "0"&(A - Int(A)), (A - Int(A))),

A > 999999,
Left(A, Length(Int(A))-6) & "," &
Middle(A, Length(Int(A)) - 5, 3) & "," &
Right(Int(A),3) & "."&
If(Length(A - Int(A))<2, "0"&(A - Int(A)), (A - Int(A))),

A > 999,
Middle(A, 1, Length(Int(A)) - 3) & "," &
Right(Int(A),3) &"."&
If(Length(A - Int(A))<2, "0"&(A - Int(A)), (A - Int(A))) ,
A)

เราก็จะสามารถคงเครื่องหมาย "," เอาไว้ได้ ในตัวอย่าง เขาจะเริ่มด้วยเครื่องหมาย $ นะ หากไม่ต้องการก็ลบ "$" &  ออกไปซะ

ผลลัพธ์มันจะสร้างทศนิยม 2 ตำแหน่งให้ด้วย หากไม่ต้องการเอา ชุดนี้ออก & "."& xxxxxxxxxx เช่น ของชุดที่ A น้อยกว่า 999 ก็ให้เอา ชุดนี้ออก &"."&
If(Length(A - Int(A))<2, "0"&(A - Int(A)), (A - Int(A))) อย่าเผลอลบเลยไปล่ะ เดี๋ยว script จะทำงานพลาด

ลองเอาไปประยุกต์ใช้งานกันเองนะครับ

บทความอื่นๆ