จะทราบได้อย่างไรว่าเซลล์ Excel มีสูตรหรือฮาร์ดโค้ด


17

ไม่มีใครมีเคล็ดลับพิเศษ (ไม่ต้องการ VBA อย่างยิ่ง) เพื่อบอกอย่างเป็นระบบว่าเซลล์มีค่าฮาร์ดโค้ดหรือเป็นสูตรที่ได้มาหรือไม่

ฉันกำลังจัดการกับข้อมูลบางอย่างที่มีผลรวมย่อยที่ฝังอยู่และพยายามดูว่าฉันสามารถแยกบรรทัดดิบออกได้หรือไม่


โหมด "แสดงสูตร" (Ctrl + `) ช่วยได้หรือไม่
sblair

มันทำได้ แต่ฉันจะไม่คิดว่ามัน "เป็นระบบ" - ต้องการให้ฉันทำลายเส้นผลรวมย่อยด้วยมือ
YGA

คำตอบ:


8

ใช้การจัดรูปแบบตามเงื่อนไข เลือกตัวเลือก "ใช้สูตรเพื่อกำหนดเซลล์ที่จะจัดรูปแบบ" และพิมพ์ "= NOT (Cellhasformula)" สิ่งนี้จะฟอร์แมตสิ่งที่ฮาร์ดโค้ด


8
นี่ไม่ใช่คำตอบที่สมบูรณ์ แต่จริงๆแล้วมันค่อนข้างหรูหรา คำตอบแบบเต็มคือ: j-walk.com/ss/excel/usertips/tip045.htm กุญแจสำคัญคือคุณต้องสร้างชื่อ (ผ่านทางสูตร -> ตัวจัดการชื่อ) ที่เรียกว่า "Cellhasformula" ที่ "หมายถึง" สูตรลึกลับ = GET.CELL (48, INDIRECT ("rc", FALSE)) ตามที่ลิงก์บอกว่าสูตรใช้ GET.CELL ซึ่งเป็นภาษามาโคร XLM (รุ่นก่อนของ VBA) และไม่สามารถใช้โดยตรงในแผ่นงาน ARG "48" ทำให้ GET.CELL ส่งคืน 'จริง' หากเซลล์มีสูตร INDIRECT โดยทั่วไปจะสร้างการอ้างอิงไปยังแต่ละเซลล์ในช่วงที่เลือก
YGA

ฉันได้แก้ไขคำตอบเพื่อรวมรายละเอียดเหล่านั้นแล้ว ขอบคุณ @YGA
Alain

15

เลือกเซลล์ที่มีปัญหากดCtrl+ Gแล้วเลือกSpecialเพื่อรับกล่องโต้ตอบต่อไปนี้:

ไปที่กล่องโต้ตอบพิเศษ

จากนั้นระบุประเภทของเซลล์ที่คุณต้องการและคลิกจากOKนั้นจะมีการเลือกเฉพาะเซลล์ประเภทนั้น



3
=iferror(Formulatext(cell),"Not Formula")

หรือเพื่อแสดงเฉพาะสูตร:

=iferror(Formulatext(cell),"")

สำหรับทุกคนที่ใช้ LibreOffice Calc แทน Excel ให้แทนที่ formulatext () ด้วยสูตร ()
fixer1234

2

อีกสองวิธีคือ

  1. ใช้เครื่องมือการทำแผนที่เช่นMappitของฉัน! addin (ซึ่งสามารถเรียกใช้เป็น addin ที่เชื่อถือได้)
  2. คุณสามารถใช้วิธีแก้ปัญหา XLM / Range Namesที่มีประโยชน์มากซึ่งให้การระบายสีแบบเรียลไทม์ของเซลล์ hardcoded สูตรเซลล์ที่เชื่อมโยงเป็นต้นซึ่งไม่จำเป็นต้องมีความรู้ด้านการเขียนโปรแกรมเพื่อปรับใช้ซึ่งแตกต่างจาก VBA

1

ฉันรู้ว่าคุณบอกว่าไม่ใช่ VBA ที่ต้องการ แต่ถ้าคุณไม่มีโซลูชันอื่นวัตถุ Range มีคุณสมบัติ HasFormula

คืนค่า: จริงถ้าเซลล์ทั้งหมดในช่วงมีสูตร เท็จถ้าไม่มีเซลล์ใดในช่วงที่มีสูตรอยู่ null มิฉะนั้น

ที่มา: http://msdn.microsoft.com/en-us/library/bb208626%28v=office.12%29.aspx


1

หากคุณต้องการจัดเก็บไฟล์ 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"))

ฟังก์ชันข้างต้นคืนค่า:

  • TRUE สำหรับเซลล์ที่มีสูตรซึ่งส่งผลให้ข้อมูล String
  • FALSE สำหรับเซลล์ที่มีตัวอักษร String หรือว่างเปล่า
  • "MAYBE" สำหรับเซลล์ที่มีบูลีนตัวเลขหรือวันที่ไม่ว่าค่านี้จะเป็นตัวอักษรหรือผลลัพธ์ของสูตร

1

ผ่านพ้นวันที่ดั้งเดิมไปแล้ว แต่ถ้ามันใช้ได้กับทุกคนฉันสามารถจัดการกับสิ่งนี้ได้โดยเลือกช่วงของเซลล์จากนั้นใช้แทนที่ (Ctrl + H) ตั้งค่าเป็น 'ดูใน' "สูตร" และแทนที่เท่ากับ=ด้วยเครื่องหมายอะโพสโทรฟี - เท่ากับ'=

นี้นำออกมาทุกสูตร แต่ที่เห็นได้ชัดก็จะแปลงสิ่งเช่นถ้า $ C $ 1 ที่มี=if($A1=$B1,"Match","Different")การ'=if($A1'=$B1,"Match","Different")

สังเกตุที่A1'=B1ตรงกลางของสูตรซึ่งอาจเป็นปัญหา แต่ก็ยังหมายความว่าคุณจะได้เห็นสูตรแม้ว่าจะไม่ใช่ในทางปฏิบัติ สามารถใช้ฟังก์ชัน SUBSTITUTE เพื่อเปลี่ยนกลับได้ดังนั้น $ D $ 1 จึงมี=SUBSTITUTE(C1,"'=","=")เพียงแค่คัดลอกออกไปยัง Notepad และวางกลับไปที่ $ E $ 1

อีกวิธีหนึ่งคือ 'แสดงสูตร' แต่จะแสดงสูตรสำหรับทุกเซลล์ไม่ใช่เฉพาะช่วงที่เลือก


1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function

คุณสามารถเพิ่มคำอธิบายสั้น ๆ เพื่อบอกเราว่าเกิดอะไรขึ้นที่นี่ :)
bertieb

เพียงแค่ติดไว้ในโมดูล VBA แม้ว่าฉันจะรู้ว่าตอนนี้ OP ไม่ต้องการ VBA แต่อย่างไรก็ตามนั่นเป็นเหตุผลที่ฉันใช้
George Skelton

นั่นไม่ใช่คำอธิบายจริงๆ
bertieb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.