วันอาทิตย์ที่ 30 กันยายน พ.ศ. 2555

การสลับเปลี่ยนแถวกับคอลัมน์ Excel ในกรณีที่เซลล์มีสูตร

การสลับเปลี่ยนแถวกับคอลัมน์ หรือ Transpose ใน Excel 2010 ทำให้เราทำงานได้รวดเร็วขึ้น ใช้ในหลายกรณี เช่น สลับแถวกับคอลัมน์ ในแผนภูมิ จะช่วยให้ดูแผนภูมิง่ายขึ้น ตรงตามจุดเน้น หรือการนำเสนอข้อมูล ในรูปตาราง ถ้าเปลี่ยนแถวเป็นคอลัมน์ ก็จะดูง่ายขึ้น

การนำเสนอข้อมูลตารางนี้ ดูดีมาก ถ้าต้องการเปรียบเทียบผลงานการขายของแต่ละคน


แต่ถ้าต้องการ ดูผลงานของแต่ละคน ว่ามีความก้าวหน้าอย่างไร ต้องสลับข้อมูลระหว่างแถวกับคอลัมน์ใหม่ ดังนี้



การสลับเปลี่ยนแถวกับคอลัมน์ใน Excel 2010 สามารถทำได้ง่าย โดยเลือกข้อมูล แล้วไปที่ วาง > วางแบบสลับเปลี่ยนแถวกับคอลัมน์

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

การแก้ไขต้องกำจัดสูตรออกจากเซลล์ให้หมด แล้วจึงทำการสลับแถวและคอลัมน์ภายหลัง

รายละเอียดดูได้จากวิดีโอนี้

วันอังคารที่ 4 กันยายน พ.ศ. 2555

การวิเคราะห์แบบสอบถามด้วย Excel

แบบสอบถามลักษณะ Rating scale สามารถวิเคราะห์ได้ด้วยโปรแกรม Excel โดยใช้สูตร countif() และการอ้างอิงเซลล์ (Cell Referencing) ทั้งแบบแน่นอน (Absolute Cell Referencing) แบบเชิงสัมพันธ์ (Relative Cell Referencing) และแบบผสม (Mixed Cell Referencing)

  • แบบเชิงสัมพันธ์ (Relative Cell Referencing) คือไม่มีการ lock คอลัมน์ หรือแถว ตำแหน่งของ Cell จะเคลื่อนที่ตามตำแหน่งของเคอร์เซอร์
  • แบบแน่นอน (Absolute Cell Referencing) เป็นการ lock ทั้งแถวและคอลัมน์ เช่น $A$1 นั่นคือ Cell ที่ถูกเลือก จะไม่เปลี่ยนตำแหน่ง ไม่ว่าเคอร์เซอร์ จะเคลื่อนที่ไปยังที่ใดก็ตาม
  • แบบผสม (Mixed Cell Referencing) เป็นการ lock เฉพาะแถว หรือ คอลัมน์ อย่างใดอย่างหนึ่ง เช่น $A1 (lock คอลัมน์)หรือ A$1 (lock แถว) ความสัมพันธ์ลักษณะนี้ ตำแหน่งของ Cell ที่ถูกเลือก จะเปลี่ยนแปลงตามตำแหน่งของเคอร์เซอร์ ขึ้นอยู่กับการ lock เช่น ถ้า lock แถว เมื่อตำแหน่งของเคอร์เซอร์เลื่อนลงไป ตำแหน่งของ Cell ที่ถูกเลือกจะไม่เปลี่ยน แต่ถ้า ตำแหน่งของเคอร์เซอร์เคลื่อนไปตามแนวนอน ตำแหน่งของ Cell ก็จะตามไปด้วย
ตัวอย่างต่อไปนี้ เป็นการแสดงการวิเคราะห์แบบสอบถาม โดยใช้สูตร Countif() แล้วหาค่าร้อยละของการตอบในแต่ละข้อ

สูตร countif มีรูปแบบการใช้งานคือ
 
countif(ช่วงข้อมูลที่จะให้นับ,ค่าที่ต้องการให้นับหรือเงื่อนไขนั่นเอง)
 
ในตัวอย่าง ช่วงที่ต้องการให้นับ คือคำตอบของทุกคนในแต่ละข้อคำถาม และเงื่อนไข คือ ระดับแต่ละระดับที่ให้เลือก ได้แก่ 5 4 3 2 1
 
 


วันอาทิตย์ที่ 2 กันยายน พ.ศ. 2555

การหาข้อมูลในตารางหนึ่ง ที่ไม่มีในอีกตารางหนึ่ง ของ Access 2010

บางครั้งเราต้องการหาว่า ข้อมูลในตารางหนึ่ง ที่ไม่มีในอีกตารางหนึ่ง จะทำอย่างไร สมมติว่า มีข้อมูล 2 ตาราง คือ tblCode และ tblData ตาราง tblCode เก็บรหัสอำเภอ และ tblData เก็บข้อมูลที่ผู้ใช้ป้อนเข้ามา ซึ่งมีรหัสอำเภออยู่ด้วย จึงต้องตรวจสอบว่า อำเภอใน tblData มีอยู่ในตาราง tblCode หรือไม่

(ความจริงถ้าออกแบบดี ๆ กำหนดให้ผู้ใช้เลือกจากตัวเลือก จะได้ถูกต้อง และไม่เกิดข้อผิดพลาด ก็จะไม่ต้องมาหาว่า ข้อมูลที่พิมพ์เข้ามาพิมพ์ถูกหรือไม่)

ตาราง tblCode
ตาราง tblData

จากตาราง จะเห็นว่า โพธาราม ในตาราง tblData ไม่มีในตาราง tblCode ในกรณีนี้ เราต้องการหาว่า ข้อมูลในตาราง tblData ที่ไม่มีในตาราง tblCode

การหาลักษณะนี้ นอกจากจะหาชื่ออำเภอที่ไม่ปรากฏ ในอีกกรณีหนึ่งคือพิมพ์ชื่ออำเภอผิด เช่น บ้านไร่ พิมพ์เป็น บ้านไร (ลืมใส่ไม้เอก) ก็จะสามารถหาได้ ด้วยวิธีเดียวกันนี้

วิธีการ

ให้สร้างแบบสอบถาม ชนิดเลือก (Select Query) และกำหนดความสัมพันธ์ของฟิลด์ที่ต้องการเป็นแบบ LeftJoin โดยให้รวมระเบียนทั้งหมดจากตาราง tblData และ เฉพาะระเบียนจาก tblCode ซึ่งมีเขตข้อมูลที่ใช้ในการรวมเท่ากัน จากความสัมพันธ์นี้ จะทำให้บางระเบียน ในตาราง tblData ซึ่งเป็นข้อมูลที่ไม่มีใน tblCode จะมีค่าเป็น Null คือ ไม่มีคู่ในตาราง tblCode ดังนั้น ถ้าจะแสดงเฉพาะข้อมูลในตาราง tblData ที่ไม่มีในตาราง tblCode จึงต้องไปกำหนดเงื่อนไขในส่วนของตาราง tblCode เท่ากับ Null ก็จะแสดงให้เห็นเฉพาะข้อมูลที่มีในตาราง tblData แต่ไม่มีในตาราง tblCode

ขั้นตอน
  1. สร้างแบบสอบถามใหม่ จากข้อมูลทั้งสองตาราง
  2. สร้างความสัมพันธ์ของฟิลด์ amph และ dataAmp เป็นแบบ left join โดย
    1. ลากฟิลด์ dataAmp ของตาราง tblData มาทับฟิลด์ amph ของตาราง tblCode
    2. คลิกขวาที่เส้นความสัมพันธ์ เลือก คุณสมบัติการรวม (join property)
    3. เลือกให้แสดงฟิลด์ทั้งหมดของตาราง tblData
    4. คลิก ตกลง จะได้ความสัมพันธ์ left join ดังภาพ
  3. ดับเบิ้ลคลิกที่ฟิลด์ dataAmp แล้ว ดับเบิ้ลคลิกที่ฟิลด์ amp เพื่อนำฟิลด์ทั้งสองไปไว้ที่เขตข้อมูลข้างล่าง
  4. ถ้าเรียกใช้แบบสอบถาม โดยกดปุ่มเครื่องหมายตกใจ จะเห็นว่ามีข้อมูลในฟิลด์ dataAmp ของตาราง tblData มาแสดงทั้งหมด และ มีช่องว่าง ในส่วนของฟิลด์ amph เนื่องจากไม่มีข้อมูล
  5. ดังนั้น ถ้าต้องการให้แสดงเฉพาะรายการ หรือ ระเบียน ที่มีในฟิลด์ dataAmp แต่ไม่มีใน amph จึงต้องกำหนดเงื่อนไขในฟิลด์ amph ให้แสดงเฉพาะที่มีค่าเป็น Null คือไม่มีข้อมูลอะไร หรือเป็นช่องว่าง (ความจริง Null ไม่เท่ากับช่องว่างนะครับ Null แปลว่า ไม่มีอะไรอยู่เลย -- งงไหมเนี่ย?)
  6. ที่ช่อง เกณฑ์ ของฟิลด์ amph ให้พิมพ์ Is Null เป็นการให้เงื่อนไขว่าให้แสดงเฉพาะที่เป็น Null เท่านั้น
  7. เรียกใช้แบบสอบถาม โดยกดปุ่มเครื่องหมายตกใจ ในแทบออกแบบ กลุ่มผลลัพธ์ จะเห็นเฉพาะอำเภอ โพธาราม เท่านั้น
  8. ถ้าดูแบบ SQL จะเห็นโค้ด SQL ดังนี้

    SELECT tblData.dataAmp, tblCode.amph
    FROM tblData LEFT JOIN tblCode ON tblData.dataAmp = tblCode.amph
    WHERE (((tblCode.amph) Is Null));

วันเสาร์ที่ 1 กันยายน พ.ศ. 2555

การปรับข้อมูลในตาราง โดยใช้ข้อมูลอีกตาราง Access 2010

บางครั้ง เราต้องการตรวจสอบข้อมูลในตารางข้อมูล โดยมีข้อมูลที่ถูกต้องซึ่งเก็บไว้อีกตารางหนึ่ง เช่น  จากตัวอย่างต่อไปนี้
เรามีตารางราง tblCode เก็บรหัสอำเภอ และชื่ออำเภอ ส่วน ตาราง tblData ที่ผู้ใช้กรอกเข้ามา มีข้อมูล รหัสอำเภอ ชื่ออำเภอ ชื่อคน และ อายุ

ตาราง tblCode

ตาราง tblData

เราต้องการตรวจสอบข้อมูล ว่า รหัสอำเภอในตาราง tblData นั้นถูกต้องหรือไม่ โดยให้ตรวจสอบจากรหัสอำเภอ ในตาราง tblCode

วิธีการ

สร้าง แบบสอบถามชนิดปรับปรุง หรือ Update Query เพื่อให้แก้ไขข้อมูลรหัสอำเภอในตาราง tblData แต่มีข้อแม้ว่า ชื่ออำเภอในตาราง tblData จะต้องถูกต้อง และมีอยู่ในตาราง tblCode ด้วย

ขั้นตอน

  1. สร้างแบบสอบถาม โดยไปที่แท็บ สร้าง > กลุ่มแบบสอบถาม > ออกแบบ แบบสอบถาม
  2. เลือกตาราง tblCode และ ตาราง tblData
  3. กำหนดความสัมพันธ์ฟิลด์ที่มีชื่ออำเภอทั้งสอง โดยลากฟิลด์ amph ของ ตาราง tblCode มาวางไว้ที่ฟิลด์ dataAmp ของตาราง tblData จะเห็นว่ามีเส้นความสัมพันธ์เชื่อมฟิลด์ทั้งสองฟิลด์
  4. ดับเบิ้ลคลิกที่ฟิลด์ aCode ของตาราง tblData ซึ่งเป็นฟิลด์ที่เราต้องการตรวจสอบและแก้ไขให้ถูกต้อง ชื่อฟิลด์จะไปปรากฎในฟิลด์ ดังภาพ
  5. เปลี่ยนชนิดของแบบสอบถาม เป็นชนิด ปรับปรุง หรือ Update Query โดย ไปที่แท็บ ออกแบบ กลุ่มชนิดของแบบสอบถาม เลือก ปรับปรุง
  6. ที่ช่อง ปรับปรุงเป็น ให้ระบุชื่อตาราง tblCode และฟิลด์ Code คือให้ปรับปรุงทุกฟิลด์ในตาราง tblData โดยให้รหัสตรงกับชื่อฟิลด์ โดยพิมพ์ชื่อตารางรางและคั่นด้วยเครื่องหมายจุด ดังนี้ tblCode.Code โปรแกรมจะใส่เครื่องหมายวงเล็บใหญ่ให้ ดังภาพ (หรือจะพิมพ์ใส่ไปด้วยก็ได้)
  7. กดปุ่มเครื่องหมายตกใจ ในกลุ่มผลลัพธ์
  8. โปรแกรมจะแจ้งให้ทราบว่า จะมีฟิลด์ที่ถูกปรับปรุงทั้งหมดเท่าไร
  9. กด ใช่
  10. กลับไปดูข้อมูลในตาราง tblData จะเห็นว่า ข้อมูลถูกปรับปรุงเรียบร้อยแล้ว ทุกอำเภอมีรหัสถูกต้องตามตาราง tblCode
  11. ถ้าดูแบบ SQL จะเห็นโค้ด ดังนี้

    UPDATE tblCode INNER JOIN tblData ON tblCode.amph = tblData.dataAmp SET tblData.aCode = [tblCode].code;
  12. ในกรณีที่มีอำเภอ ที่ไม่มีรายชื่ออยู่ในตาราง จะไม่มีการปรับข้อมูล เช่น ในกรณีที่มีคนเพิ่มมาอีก 2 คน แต่มีคนหนึ่งมาจาก โพธาราม ซึ่งอำเภอนี้ไม่มีในตาราง tblCode เมื่อเรียกใช้ Query1 ให้ตรวจสอบแก้ไข ปรับปรุงข้อมูล จะเห็นว่า อำเภอ โพธาราม จะไม่เปลี่ยนแปลงอย่างใด
  13. ในกรณีที่ต้องการตรวจสอบดูว่า ข้อมูลในตาราง tblData ไม่มีในตาราง tblCode มีวิธีหาอีกแบบหนึ่ง ต้องการดูวิธีการนี้ คลิกที่นี่