Excel วิธีแกะ แยกแยะ และย้อนรอย

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

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

ครั้นเวลาผ่านไปสัก 6 เดือน พอหยิบแฟ้มเดิมที่ตนเองสร้างขึ้นมากับมือเปิดขึ้นมาใช้งานอีกครั้งหนึ่ง แม้ว่าตนเองจะสร้างแฟ้มนั้นมาเองก็ตาม แต่มักพบว่าตัวเองจำไม่ได้เสียแล้วว่าอะไรเป็นอะไร พอคลิกดูสูตรที่ตนสร้างขึ้น อาจสงสัยขึ้นมาทีเดียวว่า ทำไมเมื่อ 6 เดือนที่แล้วมา เราจึงเลือกใช้สูตร Choose ทั้งๆที่ตอนนี้เราคิดว่าน่าจะใช้สูตร IF แทนดีกว่า แต่พอสร้างสูตร IF ลงไปก็พบว่า สูตร Choose เดิมนั่นแหละดีกว่าอยู่แล้ว ยิ่งตารางมีสูตรสลับซับซ้อนมากเท่าใด จะยิ่งสับสนสงสัยมากขึ้นเท่านั้น หลายๆคนอาจตัดสินใจสร้างแฟ้มงานใหม่ตั้งแต่ต้นเลยดีกว่า เพราะถ้าจะแกะสูตรเก่าที่ตนทำไว้ คงต้องใช้เวลานานกว่าการสร้างใหม่เสียอีก แต่ใครจะมั่นใจได้บ้างว่า แฟ้มงานที่ลงทุนสร้างขึ้นใหม่ จะให้คำตอบถูกต้องเช่นเดียวกับแฟ้มเดิมที่เคยใช้กันมาก่อน

ยิ่งกว่านั้น เนื่องด้วยความหวงแหนแฟ้มงานที่ตนเสียเวลาลงทุนสร้างขึ้นเองกับมือ จึงใช้คำสั่ง Protect Sheet กับ Protect Workbook ไว้ แต่กลับกลายเป็นว่า พอพิมพ์รหัสผ่านที่ตนจำได้ลงไป ไม่สามารถ Unprotect คืนกลับมาให้ใช้งานได้อย่างเดิมเสียแล้ว อาจเป็นไปได้ว่า ตนลืมรหัสที่เคยใช้ หรือตอนที่พิมพ์รหัสเพื่อ Protect คราวก่อนนั้น เผลอพิมพ์รหัสตัวเล็กเป็นตัวใหญ่ หรือไม่ได้สังเกตว่า ขณะที่พิมพ์รหัสนั้นกำลังใช้แป้นพิมพ์ภาษาใด ตนต้องทิ้งงานที่สร้างขึ้นเองมากับมือเพียงเพราะถอดรหัสที่ป้องกันไว้ไม่ได้เพียงแค่นี้เอง

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

ขั้นตอนการแกะแฟ้มโดยทั่วไป
  1. จัดทำสำเนาแฟ้มต้นฉบับเก็บไว้ และพยายาม Save ผลจาการแกะแต่ละขั้นเก็บเป็นแฟ้มชื่อใหม่
  2. สั่ง Tools > Protection > Unprotect Workbook / Sheet
  3. สั่ง Format > Sheet > Unhide เพื่อเปิด Sheet ที่อาจซ่อนไว้ออกมาให้เห็นครบทั้งหมด
  4. ในแต่ละ Sheet ให้เลือกตารางทั้งหมดแล้วคลิกขวา สั่ง Unhide หรือจะสั่ง Format > Row/Column > Unhide เพื่อเลิกการซ่อน Row และ Column
  5. เปลี่ยนรูปแบบในแต่ละเซลล์ให้เป็น General โดยสั่ง Format > Cells > Number > Type > General
  6. เปลี่ยนสีตัวอักษรเป็นสีดำและสีพื้นให้เป็นสีขาว เพื่อแสดงค่าที่บันทึกให้เห็นทั้งหมด
  7. เลิกกำหนดให้ค่าในเซลล์ชิดซ้าย ชิดขวา หรืออยู่กลางเซลล์ เพื่อให้เห็นตัวเลขชิดขวา และตัวอักษรชิดซ้ายตามปกติ
  8. ในแต่ละ Sheet ให้ตรวจสอบคำสั่ง Tools > Options > Transition ว่าไม่ได้กาช่อง Transition formula evaluation เพื่อเลิกใช้ตัวอักษรในการคำนวณ และจะได้เห็นค่า Error ถ้ามีสูตรคำนวณเกี่ยวข้องกับตัวอักษร
  9. กดปุ่ม F5 > Special แล้วเลือกค้นหาข้อมูลประเภทต่างๆ แล้วเปลี่ยนสีเซลล์ให้เห็นกลุ่มข้อมูลประเภทต่างๆแยกออกจากกัน
  10. สำหรับเซลล์ที่เป็นสูตร ใช้คำสั่ง Tools > Auditing หรือ Formula Auditing เพื่อค้นหาและทำแผนที่เซลล์ต้นทางหรือปลายทางในการส่งค่าต่อเนื่อง
  11. ถ้าเมนู Edit > Links ทำงานได้ แสดงว่ามีสูตร Link ข้ามแฟ้ม ให้ค้นหาชื่อแฟ้มต้นทางว่าอยู่ในเซลล์ใด โดยสั่ง Edit > Find > ชื่อแฟ้มต้นทาง ทั้งนี้อาจมีสูตร Link ซ่อนอยู่ในเมนู Insert > Name > Define, Format > Conditional Formatting, Data > Validation, หรือเป็น Macro ที่ Assigned ให้กับปุ่ม
  12. สั่ง Tools > Options > View > Formulas เพื่อแสดงสูตรในแต่ละเซลล์แล้วสั่งพิมพ์
วิธีถอดรหัสป้องกัน Workbook และ Sheet

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

โปรแกรมที่ใช้ถอดรหัสป้องกันแฟ้มงานหรือที่เรียกกันว่า โปรแกรม Password Recovery นั้น ปัจจุบันเปิดให้ Download จากอินเตอร์เน็ตจากรายชื่อเว็บต่อไปนี้ นำมาใช้ถอดรหัสที่ยาว 2-3 ตัวอักษรได้ฟรี แต่ถ้ารหัสยาวกว่านั้น จำต้องจ่ายเงินซื้อโปรแกรมถอดรหัสมาใช้กัน เว็บบางแห่งจะรับบริการถอดรหัสให้โดยคิดค่าบริการเพียงเล็กน้อย อาทิเช่น

การถอดรหัสโดยทั่วไปแบ่งออกเป็น 2 ระดับ กล่าวคือ

  1. รหัสป้องกันการเปิดแฟ้ม ซึ่งใช้ในการเปิดแฟ้มขึ้นใช้งาน ถ้าใส่รหัสผิด จะไม่มีทางเปิดแฟ้มขึ้นใช้งานเลยทีเดียว รหัสระดับนี้ถือเป็นรหัสที่ถอดได้ยากที่สุด เนื่องจากบริษัทไมโครซอฟท์ใช้เทคโนโลยีขั้นสูงและเป็นความลับ เปิดเผยแต่เพียงว่าใช้วิธีสลายตัวรหัสเข้ากับเนื้อหาของแฟ้ม ทำให้ไม่สามารถใช้โปรแกรม Editor ใดค้นหาตัวรหัสได้เลย ทำให้โปรแกรมถอดรหัสต้องใช้วิธีที่เรียกว่า Brutal Force สุ่มรหัสทีละตำแหน่งทีละตัวอักษรหรือตัวเลขไปเรื่อยๆ อาจใช้เวลาเป็นวันกว่าจะสุ่มเจอรหัสป้องกัน
  2. รหัสป้องกันการแก้ไข Workbook หรือแก้ไข Sheet เทคนิคการใช้รหัสระดับนี้สามารถค้นหารายละเอียดได้จาก chicago.sourceforge.net/devel/docs/excel/encrypt.html และสามารถใช้ VBA ช่วยในการถอดรหัสได้ไม่ยากนัก โดยเฉพาะโปรแกรม Excel Password Remover จาก http://www.elkraft.ntnu.no/~huse/xlpassword.htm เปิดให้ Download Password.xla นำมาใช้ถอดรหัสได้ฟรี
วิธีใช้ Excel Password Remover (Password.xla)
  1. Unzip นำแฟ้ม Add-In ชื่อ Password.xla มาเก็บไว้ที่ Folder ใดก็ได้
  2. เปิด Excel แล้วสั่ง Tools > Add-Ins > Browse ค้นหาและเลือกชื่อแฟ้ม Password.xla จากนั้นกดปุ่ม OK จะพบว่า Password remover ปรากฏอยู่ในรายชื่อ Add-Ins Available และถูกกาไว้
  3. กดปุ่ม OK เพื่อเสร็จขั้นตอนการ Load Add-Ins ขึ้นมาใช้งานในเครื่อง PC นั้นๆ จะพบหน้าจอของ Password remover เปิดขึ้น แสดงว่าพร้อมใช้งานแล้ว ให้กดปุ่ม OK
  4. เปิดแฟ้มที่ต้องการถอดรหัส จากนั้นสั่ง Tools > Unprotect Sheet หรือ Unprotect Workbook ซึ่งในขณะที่โปรแกรมกำลังพยายามถอดรหัสอยู่นั้น จะมีระยะเวลาที่ใช้แสดงขึ้นตรงหัวมุมซ้ายล่างของจอ
  5. รอสักพัก อาจจะนานหรือเร็วขึ้นกับรหัสผ่านที่กำหนดยาวหรือสั้น เมื่อโปรแกรมถอดรหัสเสร็จแล้วจะเปิดหน้าจอขึ้นมาบอกว่าเสร็จแล้ว ให้กด OK เพื่อทำงานอื่นต่อไป
เทคนิคที่ใช้ในการกำหนดรหัสรหัสป้องกันในระดับ Workbook และ Sheet
ข้อมูลจาก chicago.sourceforge.net/devel/docs/excel/encrypt.html

Workbook Encryption
The 1Table structure contains three 16 byte numbers:

  • A random salt.
  • An MD5 hashed nonce, encrypted using RC4 with a key (K). This encrypted hash is stored as a second 16 byte number in 1Table.
  • The nonce is encrypted using key (K) and MD5 hashed then stored as a third 16 byte number in 1Table.

The key (K) is calculated in the following way:

  1. The password (expressed in Unicode) is MD5 hashed.
  2. The first five bytes of the password hash are put into an array with the 1st 16 byte number (the salt) stored in the 1Table structure.
  3. The salt is repeatedly concatenated with the password and then padded according to the MD5 algorithm.
  4. The MD5 hash is taken.
  5. The first five bytes of this hash are saved and then padded and MD5 hashed again.
  6. The first five bytes of this hash along with a counter byte become the RC4 key for encrypting/decrypting the document.

The counter periodically re-keys the RC4 engine by incrementing the counter byte modulo 8. This key is first MD5 hashed before RC4 key scheduling. This hash is the key (K). There is a better way to recover the document. This is to recover the five byte value which is the document key, add the counter byte and decrypt the document.

Worksheet Protection
When an Excel sheet is being protected with a password, a 16-bit (two byte) long hash is generated. To verify a password, it is compared to the hash. Obviously, if the input data volume is great, numerous passwords will match the same hash. This can be easily reproduced:

Protect a sheet (Tools-Protection-Protect Sheet)
with the password "test" (no quotes)
Unprotect it with the password "zzyw" (again no quotes)

Here is the algorithm to create the hash value:

  1. take the ASCII values of all characters shift left the first character 1 bit, the second 2 bits and so on (use only the lower 15 bits and rotate all higher bits, the highest bit of the 16-bit value is always 0 [signed short])
  2. XOR all these values
  3. XOR the count of characters
  4. XOR the constant 0xCE4B

Example: The password is abcdefghij (10 characters)

  • a -> 0x61 << 1 == 0x00C2
  • b -> 0x62 << 2 == 0x0188
  • c -> 0x63 << 3 == 0x0318
  • d -> 0x64 << 4 == 0x0640
  • e -> 0x65 << 5 == 0x0CA0
  • f -> 0x66 << 6 == 0x1980
  • g -> 0x67 << 7 == 0x3380
  • h -> 0x68 << 8 == 0x6800
  • i -> 0x69 << 9 == 0x5201 (unrotated: 0xD200)
  • j -> 0x6A << 10 == 0x2803 (unrotated: 0x1A800)

ชุดคำสั่ง VBA ใช้สำหรับถอดรหัสป้องกัน Sheet
ข้อมูลจาก
http://www.theofficeexperts.com/VBASamples/Excel02.htm
Sub PasswordBreaker()
‘Author unknown but submitted by brettdj of
www.experts-exchange.com
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
         End If
              Next: Next: Next: Next: Next: Next
              Next: Next: Next: Next: Next: Next
         End Sub

สิ่งที่แปลกในการถอดรหัสป้องกัน Sheet ก็คือ ถ้าเราใช้รหัส test เพื่อป้องกัน แต่สามารถใช้รหัส zzyw เพื่อถอดรหัสได้อีกรหัสหนึ่ง

วิธีเผยโฉม Sheet ที่ซ่อนไว้แบบสุดๆ

ตามปกติคำสั่งบนเมนู Format > Sheet > Hide จะช่วยซ่อน Sheet และใช้คำสั่ง Format > Sheet > Unhide เพื่อเลือกเปิดเผย Sheet ที่ถูกซ่อนอยู่ แต่รายชื่อ Sheet ซึ่งแสดงให้เห็นอยู่นั้นอาจไม่ใช่ Sheet ทั้งหมดที่ถูกซ่อนอยู่ก็ได้ เนื่องจากแต่ละ Sheet ยังถูกซ่อนแบบสุดๆได้อีกวิธีหนึ่งโดยผ่านโปรแกรม Visual Basic Editor

  1. เปิดแฟ้มที่ต้องการตรวจสอบและ Unhide Sheet ขึ้นมาในโปรแกรม Excel
  2. กดปุ่ม Alt+F11 เพื่อเปิดโปรแกรม Visual Basic Editor (VBE) ซึ่งตามปกติจะถูกติดตั้งพร้อมกับโปรแกรม Excel อยู่แล้ว เพียงแต่ไม่แสดงตัวให้เห็น
  3. ถ้าเปิดขึ้นมาแล้วไม่เห็นหน้า Windows ตามภาพข้างต้นแสดงขึ้นทางด้านซ้ายของจอ ให้ใช้เมนูของโปรแกรม Visual Basic Editor สั่ง View > Project Explorer และ View > Properties Window จะพบรายชื่อแฟ้ม Excel แสดงอยู่ใน Project Explorer
  4. ใน Project Explorer ซึ่งแสดงรายชื่อแฟ้มอยู่นั้น ให้คลิกที่เครื่องหมายบวกด้านหน้าของชื่อแฟ้มเพื่อเปิดดูโครงสร้างภายในว่าประกอบด้วย Sheet ชื่อใดบ้าง
  5. ใน Project Explorer ให้คลิกชื่อ Sheet จะพบว่า Properties Window ด้านล่างแสดงคุณสมบัติของ Sheet ที่ถูกคลิกเลือก
  6. ใน Properties Window ให้คลิกลงไปในช่องด้านขวาของ Visible Property เพื่อเปลี่ยนจาก xlSheetVeryHidden กลับมาเป็น xlSheetVisible
  7. กดปุ่ม Alt+F11 เพื่อกลับมายังโปรแกรม Excel จะพบว่าแฟ้มที่เปิดอยู่นั้นมี Sheet ที่ถูกซ่อนไว้แบบสุดๆ เปิดเผยตัวกลับมาเห็นเช่นเดิม
หมายเหตุ
  • นอกจากนี้ยังมีวิธีลัดเพื่อเข้าสู่โปรแกรม Visual Basic Editor (VBE) โดยคลิกขวาที่ Sheet Tab > View Code
  • ใน Properties Window ควรสังเกตช่อง ScrollArea Property ด้วยว่าไม่ได้ระบุตำแหน่งเซลล์ใดไว้ เพื่อทำให้สามารถใช้ Scroll Bar เลื่อนย้ายตำแหน่งพื้นที่แสดงบนจอได้ตามปกติ ยกตัวอย่างเช่น ถ้าระบุ ScrollArea ไว้เป็น $A$1:$A$5 จะทำให้เราไม่สามารถขยับ Scroll Bar และไม่สามารถคลิกหรือใช้แป้นพิมพ์เลือกเซลล์นอกเหนือจากบริเวณเซลล์ A1:A5 ได้เลย

สำหรับผู้ที่คุ้นเคยกับการใช้โปรแกรม Excel VBA ควรเขียนรหัสต่อไปนี้เพื่อใช้ซ่อน Sheet แบบ VeryHidden และเปิดเผย Sheet ทั้งหมดทั้งที่ซ่อนไว้ทั้งหมด

Sub ActiveSheetVeryHidden()

On Error Resume Next
ActiveSheet.Visible = xlVeryHidden

End Sub

Sub UnhideAllSheets()

On Error Resume Next
For Each ThisSheet In ActiveWorkbook.Sheets
ThisSheet.Visible = True
Next ThisSheet

End Sub

จงอย่าเชื่อในสิ่งที่มองเห็น

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

  1. ถ้า Sheet ถูก Protect อยู่ ขอให้สั่ง Tools > Protection > Unprotect Sheet เสียก่อน เพื่อเปิดเผยเซลล์ที่ซ่อนไว้แบบ Hidden จากคำสั่ง Format > Cells > Protection > Hidden ซึ่งกันไม่ให้ Formula Bar แสดงค่าที่อยู่ภายในเซลล์
  2. สั่ง Tools > Options > View > กาช่อง Row & column header เพื่อแสดงหัวตาราง แล้วตรวจสอบว่า Row และ Column เรียงต่อเนื่องกันหรือไม่ ถ้าพบว่าขาดหายไปให้สั่ง Format > Row > Unhide และ Format > Column > Unhide ทั้งนี้จงอย่ารีบเชื่อว่า Row และ Column ที่เห็นในตอนแรกที่เปิดแฟ้มเป็น Row และ Column ของจริง เพราะอาจเป็นแค่ภาพ Row หรือ Column Header ที่ถูกสร้างขึ้นเลียนแบบหัวตารางของจริงก็ได้
  3. สำหรับบาง Sheet ซึ่งไม่ได้ใช้วิธี Hide Sheet แต่ใช้วิธีสร้าง Outline เพื่อจัดลำดับการซ่อน Row หรือ Column เป็นชั้นๆตามลำดับการคำนวณ ให้คลิกปุ่ม Show Outline Symbol บน Expert1 Toolbar เพื่อเปิดให้เห็นโครงสร้างของ Outline (ถ้ามี)

    Expert1 Toolbar เป็นเมนูซึ่งติดตั้งเพิ่มเติมโดยใช้ Add-in ชื่อ Expert2000.xla สามารถ Download ฟรีได้จาก http://www.ExcelExpertTraining.com ส่วนผู้ที่เข้าอบรมหลักสูตรสุดยอดเคล็ดลับและลัดของ Excel ภาค 2 จะได้รับ Add-in ชื่อ Expert2004.xla
  4. เลือกเซลล์ใดเซลล์หนึ่งซึ่งมีความหมายเท่ากับเปิดโอกาสให้เลือกทั้งตาราง หรือจะเลือกพื้นที่ตารางเฉพาะส่วนที่ต้องการก็ได้ จากนั้นกดปุ่ม F5 > Special แล้วเลือกกาประเภทของข้อมูลที่ต้องการค้นหา หากต้องการค้นหาซ้ำให้กดปุ่ม F4 เพื่อทวนคำสั่งซ้ำ เมื่อเซลล์ข้อมูลประเภทที่ต้องการถูกเลือกแล้ว ควรเทสีพื้นลงไปในเซลล์หรือเปลี่ยนสีตัวอักษรให้เห็นแตกต่างกัน เช่น เซลล์ตัวเลขใช้พื้นเซลล์สีเหลือง เซลล์ตัวอักษรใช้พื้นเซลล์สีเขียว เซลล์สูตรใช้พื้นเซลล์สีฟ้า ทั้งนี้ควรเลือกเทสีพื้นก่อนการเลือกเปลี่ยนสี Font เนื่องจากวิธีเปลี่ยนสี Font อาจไม่สามารถเปิดเผยค่าทั้งหมดที่ถูกซ่อนไว้โดยใช้วิชาล่องหน
  5. ตรวจสอบเซลล์ที่พบว่าไม่มีค่าใด แต่เมื่อใช้ F5 > Special แล้วกลับพบว่าไม่ได้ว่างอย่างที่นึกไว้เนื่องจากอาจใช้วิชาล่องหน ซึ่งถูกใช้คำสั่ง Format > Cells > Number > Custom แล้วกำหนด Type เป็นเครื่องหมาย semi-colon 3 ตัวติดกัน ;;; ส่งผลให้ไม่ว่าจะเป็นค่าบวก ค่าลบ ค่าศูนย์ หรือตัวอักษรก็ตาม จะไม่แสดงค่าใดๆเลยให้เห็นในเซลล์ ซึ่งเราจะพบว่าเซลล์ไม่ได้ว่างอย่างที่เห็นได้โดยดูจากค่าที่แสดงในช่อง Formula Bar เท่านั้น ให้เปลี่ยน Format จาก ;;; เป็น General โดยเลือกเซลล์ที่ต้องการแล้วกดปุ่ม Ctrl+Shift+~ พร้อมกัน (แนะนำให้เปลี่ยน Format เซลล์ที่ต้องสงสัยเป็น General เพื่อช่วยให้เราเห็นค่าที่แท้จริง และทำลาย Format ที่ใช้เดิมทั้งหมดซึ่งอาจแสดงค่าผิดเพี้ยนจากค่าที่แท้จริง)
  6. ควรใช้ F5 > Special ค้นหา Object ซึ่งอาจเป็นรูปภาพที่มองไม่เห็นหรือเป็นรูปภาพขนาดเล็กมาก
วิธีตามรอยและย้อนรอยสูตร

เรื่องปวดเศียรเวียนเกล้าที่สุดในการใช้แฟ้ม Excel ที่ผู้อื่นสร้างขึ้น หรือแม้แต่แฟ้มที่ตนเองสร้างขึ้นเอง เห็นจะเป็นปัญหาการตามรอยและย้อนรอยสูตรนี่แหละ เพราะขนาดตนเองเป็นผู้สร้างสูตรต่างๆกับมือก็ตาม พอเวลาผ่านไปสักหกเดือน เราจะจำไม่ค่อยได้แล้วว่าข้อมูลใดอยู่ที่ไหน พอเปิดแฟ้มขึ้นมาดูจะงงเป็นไก่ตาแตก ไม่ทราบว่าจะเริ่มที่เซลล์ไหน และมีขั้นตอนใช้แฟ้มนั้นอย่างไรดี ยิ่งถ้าผู้ที่สร้างแฟ้ม ไม่ได้แยกส่วนข้อมูลไว้เป็นส่วนของ Input-Calculation-Output ด้วยแล้ว กว่าจะเริ่มต้นใช้งานต่อไปได้ จะต้องใช้เวลางมหาที่ไปที่มาของค่าต่างๆมิใช่น้อย

ขั้นตอนเบื้องต้น
  1. เริ่มแรกสุดต้องจัดเก็บแฟ้มต้นฉบับไว้ให้ดี เมื่อเปิดแฟ้มต้นฉบับ ให้รีบสั่ง Save as กำหนดชื่อแฟ้มใหม่
  2. ไม่ควรยอมให้รหัส VBA ในแฟ้มทำงาน โดยเปิดแฟ้มที่มีรหัส VBA แบบ Disable Macro เสมอ แล้วตรวจสอบรหัส VBA ที่ใช้อยู่ในแฟ้มนั้นก่อนว่าเป็นรหัสที่ใช้งานต่อได้อย่างปลอดภัยก่อน จึงจะยอมให้เปิดแฟ้มแบบ Enable Macro
  3. ตรวจสอบ File > Properties ว่า ผู้ที่สร้างแฟ้มนี้ได้บันทึกคำอธิบายวิธีการใช้งานไว้หรือไม่
  4. หากพบว่าแฟ้มที่ใช้งานนั้น Link ข้อมูลมาจากแฟ้มอื่น ให้เปิดแฟ้มต้นทาง โดยใช้เมนูคำสั่ง Edit > Links > Open Source ซึ่งจะช่วยทำให้สูตร Link ข้ามแฟ้มในแฟ้มปลายทางที่เรากำลังแกะสูตรอยู่ กลายเป็นสูตรสั้นลง ไม่แสดงชื่อ Drive และ Folder ด้านหน้าของชื่อแฟ้มต้นทางในเซลล์สูตร
  5. สั่ง File > Page Setup > Sheet > กาช่อง Black and white และกาช่อง Row and column headings เพื่อพิมพ์ตารางทั้งหมดแบบขาวดำ และมีหัวตารางบอกตำแหน่งอ้างอิง
  6. Unprotect และ Unhide ทุกอย่างที่ซ่อนหรือใส่รหัสป้องกันการแก้ไข โดยสั่ง
    • Tools > Protection > Unprotect Workbook
    • Tools > Protection > Unprotect Sheet
    • Tools > Options > View > กาช่อง Gridlines, Row and column headers, Horizontal scroll bar, Vertical scroll bar, และ Sheet tabs
    • View > Normal
    • View > Full Screen
  7. เปลี่ยนชื่อ Sheet ให้ใช้ชื่อสั้นและเข้าใจง่าย เพื่อสะดวกต่อการอ่านสูตรในเซลล์
  8. ปรับให้เซลล์แสดงสูตรที่ใช้ โดยสั่ง Tools > Options > View > กาช่อง Formulas แล้วพิมพ์ตารางแสดงสูตรนี้เก็บไว้อ้างอิงเป็นสูตรต้นฉบับ
  9. เปลี่ยนระบบการแก้ไขในเซลล์ โดยสั่ง Tools > Options > Edit ตัดกาช่อง Edit directly in cell เพื่อใช้ Formula Bar ในการแก้ไขแทนการแก้ไขในเซลล์โดยตรง และส่งผลให้เมื่อเรา Double คลิกลงไปในเซลล์สูตรปลายทาง (Dependent) จะพบว่า Excel จะพาเราย้อนไปเลือกเซลล์ต้นทาง (Precedent) ให้เลย และให้กด F5 ตามด้วยกด Enter เพื่อย้อนกลับมายังเซลล์สูตร
  10. สั่ง Insert > Name > Paste > Paste List เพื่อสรุปชื่อ Range Name, Formula Name, และ Constant Name ที่ใช้อยู่ในแฟ้ม
วิธีไล่ที่ไปที่มาของสูตรด้วย F5 ตามด้วย F4

เริ่มจากคลิกเลือกเซลล์สูตร จากนั้นกดปุ่ม F5 > Special เพื่อเปิด Goto Special

  • กาช่อง Precedents หากต้องการค้นหาเซลล์ต้นทางที่ส่งค่ามายังเซลล์สูตร
  • กาช่อง Dependents หากต้องการค้นหาเซลล์ที่รับค่าต่อจากเซลล์สูตร
  • เมื่อกดปุ่ม OK ให้กดปุ่ม F4 เพื่อทวนคำสั่งล่าสุดซ้ำต่อไปเรื่อยๆ จะพบว่า Excel กระโดดไปยังเซลล์ต่างๆให้เอง
วิธีค้นหาเซลล์แกะดำที่มีสูตรเพี้ยน

เริ่มจากคลิกเลือกตารางเซลล์สูตรที่สร้างไว้ตามแนวนอนหรือตามแนวตั้ง จากนั้นกดปุ่ม F5 > Special เพื่อเปิด Goto Special

  • กาช่อง Row Differences ถ้าเลือกเซลล์สูตรตามแนวนอน
  • กาช่อง Column Differences ถ้าเลือกเซลล์สูตรตามแนวตั้ง
  • เมื่อกดปุ่ม OK ให้กดปุ่ม F4 เพื่อทวนคำสั่งล่าสุดซ้ำต่อไปเรื่อยๆ จะพบว่า Excel กระโดดไปยังเซลล์ต่างๆให้เอง

ทุกครั้งที่ Excel กระโดดไปยังเซลล์ต่างๆ ควรสังเกตรูปแบบสูตรบน Formula Bar และกลุ่มของเซลล์ที่เลือกไว้ซึ่งแสดงถึงรูปแบบสูตรที่ใช้ในเซลล์แต่ละกลุ่ม

วิธีสร้างแผนที่แสดงที่ไปที่มาของสูตร

แม้การใช้ Goto Special จะช่วยทำให้ Excel กระโดดไปเลือกเซลล์ต้นทางปลายทางของสูตรให้เองก็ตาม แต่ยังสู้คำสั่งจากเมนู Tools > Auditing > Show Auditing Toolbar หรือ Tools > Formula Auditing > Show Formula Auditing Toolbar ใน Excel XP ขึ้นไปไม่ได้ เนื่องจากการ Auditing จะช่วยสร้างเส้นลูกศรชี้ไปยังเซลล์ปลายทางให้ด้วย ดีกว่าการใช้ Goto Special ซึ่งเราต้องจำที่ไปที่มาด้วยตนเอง

ก่อนที่จะใช้คำสั่งสร้างแผนที่ควรสั่ง Save แฟ้มให้เรียบร้อยก่อน เนื่องจากหากมีเซลล์สูตรที่เกี่ยวข้องกันมากมาย จะเสียเวลารอนานทีเดียวกว่าจะลากเส้นลูกศรครบทั้งหมด เมื่อ Formula Auditing สร้างเส้นลูกศรให้แล้ว ให้ชี้ที่เส้นลูกศรแล้ว Double คลิกเพื่อกระโดดกลับไปกลับมาระหว่างเซลล์ต้นทางปลายทาง ซึ่งหากเป็นสูตรที่ Link ข้าม Sheet หรือข้ามแฟ้ม จะเห็นภาพตารางที่ต้นทางหรือปลายทางของเส้น และเมื่อ Double คลิกที่เส้นจะเปิดจอ Goto ขึ้นมา ให้เลือกเซลล์ต่าง Sheet หรือต่างแฟ้มที่แสดงต้องการไป

เส้นลูกศรที่ได้นี้ สามารถพิมพ์ลงบนกระดาษประกอบตารางเพื่อเป็นแผนที่แสดงที่ไปที่มาของสูตร แต่เมื่อสั่ง Save จะถูกลบทิ้งไป ไม่สามารถเก็บเส้นลูกศรไว้ติดแฟ้ม

ร่องรอยที่สาบสูญ

Goto Special และ Formula Auditing ทำหน้าที่ตามรอยและย้อนรอยสูตร ช่วยค้นหาที่ไปที่มาของการคำนวณซึ่งส่งค่าต่อไปเรื่อยๆ อย่างไรก็ตามเครื่องมือดังกล่าวยังไม่สามารถค้นหาร่องรอยของสูตรในลักษณะต่อไปนี้

  1. สูตรซึ่งใช้ตำแหน่งอ้างอิงเป็น Text เช่น สูตร Indirect
  2. สูตรซึ่งเปลี่ยนเป็น Text เพื่อหยุดการคำนวณ โดยการเติมเครื่องหมาย " ด้านหน้าเครื่องหมายเท่ากับ เช่น "=Sum(A1:A5) เพื่อหยุดไม่ให้คำนวณผลบวกตัวเลขในเซลล์ A1:A5 ทั้งนี้อาจสั่งผ่าน Edit > Replace เปลี่ยนเครื่องหมาย = เป็น "= ทำให้ลดจำนวนเซลล์สูตรลง ส่งผลให้แฟ้มคำนวณเร็วขึ้น
  3. สูตรซึ่งสร้างขึ้นโดย VBA หรือเป็นสูตร Function VBA ทำหน้าที่รับค่าจากเซลล์อื่น เช่น สูตร FnLink รับค่าจากเซลล์ A5

    Function FnLink()
    FnLink = [A5]
    End Function

วิธีค้นหาและทำลาย Link ข้ามแฟ้ม

ตั้งแต่ Excel XP เป็นต้นมา เราสามารถกดปุ่ม Break Link จากเมนูคำสั่ง Edit > Links แต่คำสั่งนี้จะทำลายสูตรทุกสูตรในเซลล์ซึ่งมีสูตร Link ข้ามแฟ้ม ให้กลายเป็นตัวเลข ทำให้สูตรอื่นๆในเซลล์นั้นถูกทำลายตามไปด้วย ดังนั้นคำสั่งนี้จึงเหมาะสำหรับการทำลายสูตร Link ข้ามแฟ้มซึ่งมีเพียงสูตรเดียวในเซลล์หนึ่งๆเท่านั้น

แทนที่จะใช้คำสั่ง Break Link ซึ่งจะทำลายสูตรทั้งหมดในเซลล์ หากต้องการเปลี่ยนแปลงเฉพาะส่วนของสูตร Link ข้ามแฟ้ม ขอให้ใช้ขั้นตอนต่อไปนี้

  1. สั่ง Edit > Links เพื่อตรวจสอบชื่อแฟ้มต้นทางก่อนว่ามีชื่ออะไรบ้าง
  2. สั่ง Edit > Find เพื่อค้นหาเซลล์ที่มีคำว่า xls หรือ ชื่อแฟ้ม.xls จากนั้นให้เปลี่ยนสีพื้นเซลล์หรือสีตัวอักษรเพื่อเป็นสัญลักษณ์บอกตำแหน่งว่ามีสูตร Link ข้ามแฟ้มอยู่ในเซลล์ใด
  3. คลิกเลือกสูตรเฉพาะส่วนที่ต้องการแก้ไข จากนั้นพิมพ์ตัวเลขทับ หรือกดปุ่ม F9 เพื่อเปลี่ยนสูตร Link ข้ามแฟ้มให้เป็นตัวเลข

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

ดังนั้นเพื่อป้องกันปัญหาไม่ให้เกิดขึ้นแล้วต้องเสียเวลาแก้ไขสูตรในภายหลัง เราควรจัดเตรียมเซลล์เพื่อสร้างสูตร Link ข้ามแฟ้มแยกจากเซลล์คำนวณอื่นๆไว้เป็นตารางหรือ Sheet เป็นพื้นที่เพื่อใช้เป็นพื้นที่สำหรับสูตร Link ข้ามแฟ้มเป็นการเฉพาะ จากนั้นจึงค่อยสร้างสูตรคำนวณนำค่าไปคำนวณต่ออีกชั้นหนึ่ง อย่าใช้วิธีสร้างสูตร Link ข้ามแฟ้มซ้อนเข้าไปคำนวณร่วมกับสูตรอื่นเป็นอันขาด

  • หากต้องการทำลาย Link ข้ามแฟ้มให้กลายเป็นตัวเลข ให้ใช้คำสั่ง Edit > Links > Break Link หรือใช้วิธี Copy ทั้งตารางแล้วสั่ง Paste Special แบบ Value ทับตารางสูตรลงไปเพื่อทำให้กลายเป็นตัวเลขทั้งหมด
  • หากต้องการเก็บสูตร Link ข้ามแฟ้มไว้เช่นเดิม ให้เปิดแฟ้มต้นทางขึ้นมาแล้วลบเซลล์ทั้งหมดทิ้ง เว้นเซลล์ต้นทางที่ส่งค่าไปยังสูตร Link ข้ามแฟ้ม ทั้งนี้สามารถใช้วิธี Double คลิกลงไปในเซลล์สูตร Link ข้ามแฟ้ม ซึ่ง Excel จะกระโดดย้อนไปหาเซลล์ต้นทางในแฟ้มต้นทางให้เอง (จะใช้วิธี Double คลิกดังกล่าวได้ ต่อเมื่อสั่ง Tools > Options > Edit > ตัดกาช่อง Edit directly in cell ไว้ก่อน)
  • หากต้องการเก็บสูตร Link ข้ามแฟ้มไว้เช่นเดิม แต่ต้องการให้ส่งค่าเท่ากับ 0 ให้เปิดแฟ้มต้นทางขึ้นมาแล้วลบค่าในเซลล์ทั้งหมดทิ้ง ซึ่งจะช่วยให้แฟ้มต้นทางกลายเป็นแฟ้มขนาดเล็กมาก
  • หากต้องการเปลี่ยนสูตร Link ข้ามแฟ้มให้กลายเป็นสูตร Link ข้าม Sheet ให้ใช้วิธี Cut เซลล์ต้นทางจากแฟ้มต้นทาง มา Paste ลงในแฟ้มปลายทาง ซึ่ง Excel จะช่วยเปลี่ยนแปลงสูตร Link ให้เอง

นอกจากสูตร Link ข้ามแฟ้มซึ่งอยู่ในเซลล์แล้ว ยังอาจมีสูตร Link ข้ามแฟ้ม ซ่อนอยู่อีกในส่วนอื่นๆ เช่น

  1. Range Name และ Formula Name ให้ตรวจดูจากคำสั่ง Insert > Name > Define
  2. Data Validation แบบ Custom
  3. Conditional Formatting แบบ Formula is
  4. Assigned Macro ซึ่งกำกับติดไว้กับ Object ที่เป็นรูปภาพหรือปุ่ม

ขอให้ตรวจสอบและจัดการกับสูตร Link ข้ามแฟ้มจนกว่าจะไม่พบเมนูคำสั่ง Edit > Links เปิดให้ใช้งาน จากนั้นจึงจะถือว่าเป็นแฟ้มซึ่งสามารถนำไปใช้งานได้อย่างอิสระต่อไป

2 thoughts on “Excel วิธีแกะ แยกแยะ และย้อนรอย

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s