ไม่มีใครมีเคล็ดลับพิเศษ (ไม่ต้องการ VBA อย่างยิ่ง) เพื่อบอกอย่างเป็นระบบว่าเซลล์มีค่าฮาร์ดโค้ดหรือเป็นสูตรที่ได้มาหรือไม่
ฉันกำลังจัดการกับข้อมูลบางอย่างที่มีผลรวมย่อยที่ฝังอยู่และพยายามดูว่าฉันสามารถแยกบรรทัดดิบออกได้หรือไม่
ไม่มีใครมีเคล็ดลับพิเศษ (ไม่ต้องการ VBA อย่างยิ่ง) เพื่อบอกอย่างเป็นระบบว่าเซลล์มีค่าฮาร์ดโค้ดหรือเป็นสูตรที่ได้มาหรือไม่
ฉันกำลังจัดการกับข้อมูลบางอย่างที่มีผลรวมย่อยที่ฝังอยู่และพยายามดูว่าฉันสามารถแยกบรรทัดดิบออกได้หรือไม่
คำตอบ:
ใช้การจัดรูปแบบตามเงื่อนไข เลือกตัวเลือก "ใช้สูตรเพื่อกำหนดเซลล์ที่จะจัดรูปแบบ" และพิมพ์ "= NOT (Cellhasformula)" สิ่งนี้จะฟอร์แมตสิ่งที่ฮาร์ดโค้ด
เลือกเซลล์ที่มีปัญหากดCtrl+ Gแล้วเลือกSpecial
เพื่อรับกล่องโต้ตอบต่อไปนี้:
จากนั้นระบุประเภทของเซลล์ที่คุณต้องการและคลิกจากOK
นั้นจะมีการเลือกเฉพาะเซลล์ประเภทนั้น
=iferror(Formulatext(cell),"Not Formula")
หรือเพื่อแสดงเฉพาะสูตร:
=iferror(Formulatext(cell),"")
อีกสองวิธีคือ
ฉันรู้ว่าคุณบอกว่าไม่ใช่ VBA ที่ต้องการ แต่ถ้าคุณไม่มีโซลูชันอื่นวัตถุ Range มีคุณสมบัติ HasFormula
คืนค่า: จริงถ้าเซลล์ทั้งหมดในช่วงมีสูตร เท็จถ้าไม่มีเซลล์ใดในช่วงที่มีสูตรอยู่ null มิฉะนั้น
ที่มา: http://msdn.microsoft.com/en-us/library/bb208626%28v=office.12%29.aspx
หากคุณต้องการจัดเก็บไฟล์ Excel ในรูปแบบสมุดงานที่ไม่มีมาโครคุณควรหลีกเลี่ยงทั้ง VBA และมาโคร (เช่นวิธี XL4 / XLM ที่แนะนำในคำตอบอื่น ๆ ) ในคำตอบนี้ฉันได้สมมุติว่าไฟล์ Excel ไม่มีแมโคร
หากคุณใช้ MS-Excel 2013 คุณสามารถใช้:
=ISFORMULA(reference)
หากคุณใช้ MS-Excel เวอร์ชันเก่ากว่า (เช่น 2010, 2007) จะไม่มีฟังก์ชั่นที่แท้จริงในการพิจารณาว่าเซลล์มีสูตรหรือไม่ อย่างไรก็ตามคุณสามารถประมาณได้โดยใช้:
=IF(OR(ISBLANK(reference);CELL("prefix";reference)<>"");FALSE;IF(CELL("type";reference)="l";TRUE;"MAYBE"))
ฟังก์ชันข้างต้นคืนค่า:
ผ่านพ้นวันที่ดั้งเดิมไปแล้ว แต่ถ้ามันใช้ได้กับทุกคนฉันสามารถจัดการกับสิ่งนี้ได้โดยเลือกช่วงของเซลล์จากนั้นใช้แทนที่ (Ctrl + H) ตั้งค่าเป็น 'ดูใน' "สูตร" และแทนที่เท่ากับ=
ด้วยเครื่องหมายอะโพสโทรฟี - เท่ากับ'=
นี้นำออกมาทุกสูตร แต่ที่เห็นได้ชัดก็จะแปลงสิ่งเช่นถ้า $ C $ 1 ที่มี=if($A1=$B1,"Match","Different")
การ'=if($A1'=$B1,"Match","Different")
สังเกตุที่A1'=B1
ตรงกลางของสูตรซึ่งอาจเป็นปัญหา แต่ก็ยังหมายความว่าคุณจะได้เห็นสูตรแม้ว่าจะไม่ใช่ในทางปฏิบัติ สามารถใช้ฟังก์ชัน SUBSTITUTE เพื่อเปลี่ยนกลับได้ดังนั้น $ D $ 1 จึงมี=SUBSTITUTE(C1,"'=","=")
เพียงแค่คัดลอกออกไปยัง Notepad และวางกลับไปที่ $ E $ 1
อีกวิธีหนึ่งคือ 'แสดงสูตร' แต่จะแสดงสูตรสำหรับทุกเซลล์ไม่ใช่เฉพาะช่วงที่เลือก
Function is_formula(c As Range) As Boolean
is_formula = Left(c.Formula, 1) = "="
End Function