วันเสาร์ที่ 2 กรกฎาคม พ.ศ. 2554

การสร้างลิงค์

มาลองสร้างตัวอย่างไฟล์ชื่อ Source.xls กันหน่อย ในชีทชื่อว่า FirstSheet มีข้อมูลอยู่แค่ 2 เซลล์ ในเซลล์ B2 และ B3 มีตัวเลข 10 และ 20 ตามลำดับ
ถ้าเรายังไม่ได้ตั้งชื่อ Range Name ให้กับเซลล์ B2 ว่า FirstCell และยังไม่ได้ตั้งชื่อให้กับเซลล์ B3 ว่า SecondCell การนำค่าจากเซลล์ไปใช้ที่อื่นจะต้องใช้ตำแหน่งอ้างอิงโดยตรง ซึ่งวิธีง่ายๆเพื่อนำค่า link ไปใช้ เรียกว่า วิธี Pointing คือเริ่มจากพิมพ์เครื่องหมายเท่ากับ = แล้วคลิกเลือกเซลล์ที่ต้องการค่า แล้วกด Enter
เริ่มจากการ link ตัวเลข 10 จากเซลล์ B2 ไปใช้ที่เซลล์อื่นในชีทเดิม สมมติว่าจะนำค่าไปใช้ที่เซลล์ C3 เราก็คลิกลงไปในเซลล์ C3 ก่อน แล้วพิมพ์ = แล้วคลิกเซลล์ B2 แล้วกด Enter เป็นอันเสร็จขั้นตอน จะได้สูตร
สูตร link ภายในชีทเดียวกัน :
=B2
สูตร link จะเริ่มยาวขึ้นและดูเหมือนจะสร้างยากขึ้น เมื่อสร้างสูตร link ข้ามชีทหรือ link ข้ามไฟล์ แต่วิธีสร้างสูตร link นั้นไม่ได้ยากอย่างที่เห็นสูตรว่ายาวขึ้นหรอก เพราะเราสามารถใช้วิธี Pointing อย่างเดิมนั่นแหละ เพียงพิมพ์ = แล้วคลิกหาเซลล์ที่ต้องการนำค่ามาให้ได้ก็แล้วกัน ไม่ว่าจะ link มาจากที่ใด จะนำค่ามาใช้ได้ทั้งนั้น (ถ้าเซลล์ต้นทางที่ต้องการอยู่คนละไฟล์กัน หลังจากพิมพ์ = แล้ว ต้องคลิกเมนู Window เพื่อไปที่ไฟล์นั้นให้ได้ก่อน แล้วจึงคลิกไปที่ชีทและเซลล์ของค่าต้นทาง)
สูตร link ข้ามชีท :
=FirstSheet!B2
สูตร link ข้ามไฟล์ :
=[Source.xls]FirstSheet!$B$2
สูตร link ข้ามไฟล์
กรณีไฟล์ Source.xls ถูกเก็บไว้ที่ folder C:\XLBook\ และยังไม่ถูกเปิดขึ้นมา :
='C:\XLBook\[Source.xls]FirstSheet'!$B$2
คราวนี้ถ้าตั้งชื่อ Range Name ให้กับเซลล์ B2 ว่า FirstCell และตั้งชื่อให้กับเซลล์ B3 ว่า SecondCell การนำค่าจากเซลล์ต้นทางไปใช้ที่อื่นจะใช้ชื่อที่ตั้งไว้แทน ซึ่งใช้วิธี Pointing อีกนั่นเอง โดยเริ่มจากพิมพ์เครื่องหมายเท่ากับ = แล้วคลิกเลือกเซลล์ที่ต้องการค่า
ถ้าจำชื่อเซลล์ได้แต่จำไม่ได้ว่า เซลล์ชื่อนั้นอยู่ที่ใด หลังจากพิมพ์ = แล้ว (หากต้องการ link ข้ามไฟล์ ให้ตามด้วยการคลิกเมนู Window ไปที่ไฟล์ต้นทางก่อน) แล้วกดปุ่ม F3 เพื่อเลือกชื่อที่ต้องการตามรูปถัดไป แล้วกด Enter
สูตร link ภายในชีทเดียวกัน :
=FirstCell
สูตร link ข้ามชีท :
=FirstCell
สูตร link ข้ามไฟล์ :
=Source.xls!FirstCell
สูตร link ข้ามไฟล
กรณีไฟล์ Source.xls ถูกเก็บไว้ที่ folder C:\XLBook\ และยังไม่ถูกเปิดขึ้นมา :
='C:\XLBook\Source.xls'!FirstCell
คงเห็นกันชัดเจนแล้วว่า ประโยชน์จากการใช้ Range Name ทำให้ตัวสูตร Link ดูง่ายและมีความหมายชัดเจนตามชื่อที่ตั้ง แต่ขอให้สังเกตว่า ตัวสูตร link ข้ามไฟล์ยังคงติดชื่อไฟล์ Source.xls มาด้วย หากจะทำให้สูตร link จิ๋วและแจ๋วจริงๆ น่าจะหาทางทำให้ตัวสูตร link ข้ามไฟล์สั้นลงไปอีก คุณลองคิดหาทางซิว่า เป็นไปได้ไหม ที่เราจะใช้สูตร =FirstCell นี้แหละให้ link ข้ามไฟล์ได้ด้วย
ลองเสริมปัญหานี้เพิ่มเติมอีกหน่อย หาก FirstCell บวกกับ SecondCell แล้วมีค่าเท่ากับ 30 พอดี ให้คืนค่าเป็นคำตอบออกมาว่า Accept แต่ถ้าบวกกันแล้วไม่เท่ากับ 30 ให้คืนค่าเป็นคำตอบว่า Reject โดยใช้สูตร IF ช่วยดังนี้
=IF( FirstCell+SecondCell=30, "Accept", "Reject" )
ตามปกติสูตรนี้จะใช้ได้ในไฟล์ต้นทาง ไม่ว่าจะใช้ในชีทใดก็สามารถใช้สูตรแบบเดียวกันได้ตลอด แต่ถ้าต้องการใช้ในไฟล์อื่นโดยอ้างอิงถึงค่าในเซลล์ FirstCell กับ SecondCell จากไฟล์ชื่อ Source.xls จะต้องใช้สูตรยาวขึ้น ดังนี้
สูตรที่ 1 กรณีไม่ได้ใช้ Range Name :
=IF([Source.xls]FirstSheet!B2 + [Source.xls]FirstSheet!B3 = 30, "Accept", "Reject")
สูตรที่ 2 กรณีใช้ Range Name :
=IF(Source.xls!FirstCell + Source.xls!SecondCell = 30, "Accept", "Reject")
สูตรที่ 3 กรณีใช้ Range Name ข้ามไฟล์ :
=IF(FirstCell + SecondCell = 30, "Accept", "Reject")
หากเป็นสูตร link ข้ามไฟล์ โดยที่ไฟล์ Source.xls ถูกเก็บไว้ที่ folder C:\XLBook\ และยังไม่ถูกเปิดขึ้นมา :
สูตรที่ 1 กรณีไม่ได้ใช้ Range Name :
=IF('C:\XLBook\[Source.xls]FirstSheet'!B2 + 'C:\XLBook\[Source.xls]FirstSheet'!B3 = 30, "Accept", "Reject")
สูตรที่ 2 กรณีใช้ Range Name :
=IF('C:\XLBook\Source.xls'!FirstCell + 'C:\XLBook\Source.xls'!SecondCell = 30, "Accept", "Reject")
สูตรที่ 3 กรณีใช้ Range Name ข้ามไฟล ์:
=IF(FirstCell + SecondCell = 30, "Accept", "Reject")
สูตรที่ 1 และ 2 เป็นตัวสูตรซึ่งใช้กันทั่วไป สร้างขึ้นโดยใช้วิธี Pointing และถ้าต้องการใช้ Range Name ก็ใช้วิธีกดปุ่ม F3 เพื่อนำชื่อ Range Name มาประกอบในสูตร น่าสังเกตว่า ตัวสูตรทั้งสองนี้จะเปลี่ยนแปลงยาวขึ้น โดยเพิ่มตำแหน่ง folder C:\XLBook\ หากไฟล์ Source.xls ยังไม่ถูกเปิดขึ้นมา
คราวนี้มาดูสูตรจิ๋วและแจ๋วซึ่งเป็นสูตรที่ 3 กันบ้าง พบว่าสูตรไม่เปลี่ยนแปลงไปจากเดิมเลย ไม่ต้องคำนึงว่าไฟล์ต้นทาง Source.xls จะเปิดขึ้นหรือไม่ แถมยังคงมีตัวสูตรเหมือนกับสูตรที่ใช้ในไฟล์เดียวกันด้วยซ้ำ
=IF(FirstCell + SecondCell = 30, "Accept", "Reject")
เราใช้ Range Name แบบพิเศษซึ่งน้อยคนนักจะใช้เป็น กล่าวคือ Excel สามารถกำหนดชื่อ Range Name ในไฟล์ปลายทาง โดยอ้างอิง Refer to เซลล์ในไฟล์ต้นทางได้ด้วย กลายเป็น Range Name ข้ามไฟล์ ซึ่งสามารถตั้งชื่อขึ้นและเรียกดูชื่อได้จากเมนู Insert > Name > Define
ถ้าคุณนึกว่า นี่เองคือที่มาของวิธี link แบบจิ๋วและแจ๋ว ก็ผิดถนัด เพราะเราไม่ต้องเสียเวลามาสั่ง Insert > Name > Define เพื่อตั้งชื่อเซลล์ทั้งสองนี้หรอก Excel ตั้งแต่ Version 97 เป็นต้นมา จะช่วยสร้างชื่อนี้ให้เองเมื่อสั่ง Cut แล้ว Paste ข้ามไฟล์ โดยเราไม่ต้องเสียแรงเสียเวลาคลิกกลับไปกลับมาระหว่างไฟล์เลยด้วยซ้ำ
ขั้นตอนในการสร้างสูตร link ข้ามไฟล์
  1. ในไฟล์ต้นทาง Source.xls ตั้งชื่อ Range Name ให้กับเซลล์ B2 ว่า FirstCell และตั้งชื่อให้กับเซลล์ B3 ว่า SecondCell เหมือนเช่นที่เคยทำตามปกติ
  2. เลือกเซลล์ใดก็ได้ในชีทนั้น เช่น ในเซลล์ C3 สร้างสูตร
    =IF(FirstCell+SecondCell=30,"Accept","Reject")
  3. สั่ง Cut เซลล์ C3 แล้วคลิกเมนู Windows เลือกไปที่ไฟล์และเซลล์ปลายทาง แล้วสั่ง Paste จะได้สูตรเดียวกันที่เซลล์ปลายทาง พร้อมกับเกิด Range Name ข้ามไฟล์ให้เอง สามารถตรวจสอบชื่อที่สร้างขึ้นได้จากเมนู Insert > Name > Define
ข้อควรระวัง หากไฟล์ปลายทางมีเซลล์ชื่อซ้ำกับ FirstCell และ SecondCell เมื่อสั่ง Paste เซลล์สูตรที่ Cut มา คุณจะถูก Excel ถามว่า ต้องการใช้ชื่อตามที่มีอยู่ หรือต้องการตั้งชื่อใหม่ ขอแนะนำให้เลือกตั้งชื่อใหม่ เพื่อไม่ให้ซ้ำกับชื่อที่มีอยู่แล้วในไฟล์ปลายทางนั้น 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น