แสดงบทความที่มีป้ายกำกับ libreoffice แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ libreoffice แสดงบทความทั้งหมด

วันศุกร์ที่ 10 มิถุนายน พ.ศ. 2554

ใช้ Page Style ลำบาก!! ลดความยุ่งยากด้วยฟีเจอร์ Title Page

มีหลายคนมักจะถามผมเมื่อผมสอนการสร้างหนังสือบน Writer หลังจากที่สร้างสารบัญใน 3 คลิกเสร็จ ก็เกิดความสงสัยว่า ถ้าไม่อยากให้หน้าสารบัญ หรือหน้าปกมีเลขหน้าจะต้องทำอย่างไร

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

ต่อแต่นี้ไป คงหมดปัญหาแล้ว เพราะ LibreOffice ตั้งแต่เวอร์ชัน 3.3 เป็นต้นไป มีฟีเจอร์ชื่อว่า Title Page ซึ่งจะทำให้หน้าบางหน้าไม่มีเลขหน้าได้อย่างง่ายมาก

ฟีเจอร์นี้จริงๆ แล้วก็อาศัยหลักการของ Page Style นั่นแหละ แต่เราไม่ต้องไปยุ่งกับการสร้าง style หรืออะไรมากนัก เอาเป็นว่ามาเริ่มกันเลยดีกว่าว่าขั้นตอนจะเป็นอย่างไร

เอกสารเริ่มต้นจะเห็นว่าพอแทรกท้ายกระดาษ และเลขหน้า ก็จะปรากฏเลขหน้าทุกหน้า รวมถึงหน้าปกที่ไม่ต้องการให้เลขหน้าปรากฎด้วย
ต้องการให้หน้าปกไม่มีเลขหน้า ไปที่เมนู Format > Title Page
จะขึ้นหน้าต่างดังนี้
A : ให้เลือก Convert existing pages to title pages หมายถึง เปลี่ยนหน้าที่มีอยู่ไปเป็น title page แต่ถ้าเลือก Insert new title pages หมายถึง เพิ่มหน้ากระดาษใหม่มีอีกหน้าหนึ่ง เป็น title page
B : หมายถึง จะทำ title page กี่หน้า
C : Document Start หมายถึง เริ่มต้นทำ title page ที่หน้าแรกของเอกสาร หรือเลือกหน้าที่ต้องการเริ่ม
D : หมายถึง หน้าหลังจาก title page ที่กำหนด ให้เลขหน้าเริ่มที่เท่าไร
E : หมายถึง หน้าที่ทำ title page ให้เริ่มนับเลขหน้าที่เท่าไร

เบื้องต้นกำหนดเพียงแค่นี้แล้วกดปุ่ม OK
จะเห็นว่าหน้าแรกไม่มีเลขหน้า ตามที่ต้องการแล้ว

วันศุกร์ที่ 27 พฤษภาคม พ.ศ. 2554

LibreOffice สามารถอ้างอิงข้อมูลทั้งคอลัมน์ด้วย $A:$A ได้แล้ว

ก่อนหน้านี้การอ้างอิงข้อมูลของ OpenOffice.org นั้นต้องบอกข้อมูลเป็นช่วง เช่นถ้าต้องการจะอ้างอิงข้อมูลในคอลัมน์ A ทั้งหมด ต้องบอกเซลล์เริ่มต้นและเซลล์สุดท้ายให้ครบถ้วน เช่น A1:A1048576 ซึ่งยุ่งยาก ไม่สามารถอ้างอิงแบบ Excel คือ A:A ได้

ใน LibreOffice สามารถตั้งค่าได้ว่าการอ้างอิงนั้นจะใช้แบบ OpenOffice.org เดิม หรือเลือกใช้แบบ Excel

ปัญหานี้เป็นข้อข้องใจของผมมานานมากเพราะผมจะเอาสูตรนี้ไปประยุกต์ใช้กับ vlookup โดยใช้สูตรเพื่อสร้าง dynamic range ให้กับ vlookup
เหตุผลที่ต้องใช้วิธีนี้เพราะสูตร vlookup มีขั้นตอนนึงให้เราเลือกข้อมูลทั้งหมดที่จะใช้ทำ vlookup ถ้าคลุมข้อมูลทั้งหมดแบบปกติ และมีการเพิ่มข้อมูลที่แถวสุดท้าย สูตร vlookup จะไม่เห็นข้อมูลที่เพิ่มเข้ามาเพราะเราไม่ได้คลุมไว้ตั้งแต่แรก
จากตัวอย่างมีข้อมูลอยู่ถึงเซลล์ C6 ตัวอย่างผมใช้วิธีคลุมข้อมูล ถ้ากรณีใช้สูตรแบบนี้ แล้วเพิ่มข้อมูลในแถวที่ 7 สูตร vlookup นี้จะไม่เห็นข้อมูลในแถวที่ 7 นี่คือปัญหา

ผมเลยจำเป็นต้องสร้าง dynamic range เพื่อจะขยายช่วงข้อมูลหากมีการเพิ่มข้อมูลเข้ามา vlookup จะได้มองเห็นข้อมูลนั้น ซึ่งใน OpenOffice.org ผมจะใช้วิธีนี้
การทำ dynamic range ของผมใช้ฟังก์ชัน OFFSET ร่วมกับ COUNTA แต่ผมต้องกำหนดตำแหน่งเริ่มต้นและตำแหน่งสุดท้าย ผมคิดว่าวิธีนี้ไม่เวิร์ก เพราะไม่ต่างอะไรกันถ้าผมจะคลุมข้อมูลแบบวิธีแรกโดยคลุมเผื่อไว้กรณีมีข้อมูลเพิ่มเข้ามา และวิธีนี้ถ้าตำแหน่งที่ผมกำหนดไว้ไม่พอ ผมก็ต้องมาขยายข้อมูลอีกครั้ง ซึ่งผมว่าไม่เหมาะ

ใน LibreOffice แก้ปัญหานี้โดยการสามารถเลือกวิธีการอ้างอิงสูตรได้ โดยไปที่เมนู Tools - Options - LibreOffice Calc - Formula ด้านขวาให้เลือกแบบ Excel A1 แล้วกด OK
เมื่อเลือกเสร็จก็จะสามารถอ้างอิงแบบนี้ได้ครับ
ซึ่งผมมองว่าการอ้างอิงแบบนี้สะดวกกว่าแบบเก่า และ LibreOffice ดีตรงที่ว่าถ้าเครื่องผมตั้งแบบนี้ไว้ ไปเปิดกับเครื่องที่ตั้งเป็นรูปแบบของ OpenOffice.org โปรแกรมจะแปลงค่าให้สามารถใช้งานกับเครื่องนั้นทันที

การอ้างอิงแบบนี้สามารถไปใช้ประโยชน์อย่างอื่นได้อีกมากมายครับ

วันอังคารที่ 19 เมษายน พ.ศ. 2554

การค้นหาด้วยฟังก์ชัน Match บน LibreOffice

การค้นหาข้อมูลใน LibreOffice ทำได้หลายแบบ หากต้องการค้นหาเพียงแค่การ search ก็ใช้คำสั่ง find & replace ได้ แต่สำหรับการค้นหาว่าข้อมูลที่ต้องการอยู่ที่ record ใดบ้างจะต้องทำอย่างไร

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

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

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

พิมพ์ =MATCH(B2,$F$2:$F$3,0) ลงใน cell D2 หลังจากนั้นให้ทำ AutoFill ลงมายังช่องด้านล่างต่อไป เพื่อค้นหาว่าคอลัมน์ B แต่ละ record มีข้อความที่ต้องการค้นหาหรือไม่

เมื่อพบข้อความตามที่ต้องการ จะแสดงผลลัพธ์เป็นหมายเลข ในที่นี้หมายเลข 1 จะปรากฎเมื่อพบชื่อ "ทาทัต" หมายเลข 2 จะปรากฎเมื่อพบชื่อ "แทนไท" ตามข้อมูลที่ใช้ในการค้นหา ส่วนข้อมูลที่ไม่ได้ใช้ในการค้นหา หรือหาไม่พบ จะขึ้นเป็ฯ #N/A

หากไม่ต้องการให้ปรากฎข้อความ #N/A ให้พิมพ์ฟังก์ชันนี้แทน =IF(ISNA(MATCH(B2,$F$2:$F$3,0)),"",MATCH(B2,$F$2:$F$3,0)) เพื่อเช็คไม่ให้แสดงผล #N/A