มีฟังก์ชั่นที่จะบอกได้หรือไม่ว่าเซลล์หนึ่งมีค่าธรรมดา (ป้อนด้วยตนเอง) หรือมีสูตรหรือไม่?
มีฟังก์ชั่นที่จะบอกได้หรือไม่ว่าเซลล์หนึ่งมีค่าธรรมดา (ป้อนด้วยตนเอง) หรือมีสูตรหรือไม่?
คำตอบ:
ด้วยตัวอย่างเล็ก ๆ น้อย ๆ นี้คุณสามารถทำได้
function isFormula(startcol, startrow) {
// prepare string
var str = String.fromCharCode(64 + startcol) + startrow;
// retrieve formula
var fCell = SpreadsheetApp.getActiveSpreadsheet()
.getRange(str).getFormula();
// return false if empty else true
return fCell ? true : false;
}

ในคำตอบนี้ Tom Horwood พบวิธีหลีกเลี่ยงการใช้คำพูด
เพิ่มสคริปต์ภายใต้เครื่องมือ> เครื่องมือแก้ไขสคริปต์และกดปุ่มข้อผิดพลาดเพื่อเปิดใช้งานการตรวจสอบความถูกต้อง
ฉันได้สร้างไฟล์ตัวอย่างให้คุณ: ตรวจสอบสูตร
isFormula(a1)อย่างไร (ใน MS Excel มันจะเป็นฟังก์ชั่นที่ได้รับพารามิเตอร์ช่วง)
ใช้ฟังก์ชันในตัวของISFORMULA ()
ฉันคิดว่าฉันเพิ่งค้นพบสูตรที่ไม่มีเอกสารใน Google ชีตใหม่ @Pnuts กำลังบอกว่าCELLสูตรใช้งานไม่ได้ (บางส่วนเนื่องจากมีเฉพาะใน Google ชีตใหม่) ดังนั้นฉันจึงคัดลอกรหัสไปยัง Google ชีตใหม่ เกิดข้อผิดพลาดขึ้นบอกฉันว่า (กำหนดเอง) สูตรของฉันยอมรับข้อโต้แย้งเพียงข้อเดียวและไม่ใช่สองข้อ:

การเปลี่ยนชื่อisFormulaเป็นอย่างอื่นส่งผลให้ฟังก์ชันที่กำหนดเองทำงานได้ หลังจากนี้เป็นกรณีฉันสร้าง Google Sheet อีกอันและใช้isFormulaสูตร สูตรไม่ปรากฏในการเติมข้อความอัตโนมัติ แต่ทำงานได้:

ดังนั้นหากสูตรมีอยู่ใน Google ชีตใหม่ทั้งหมดนี่จะเป็นคำตอบที่ดีที่สุด:
=isFormula(A1)
มีเฉพาะใน Google ชีตใหม่เท่านั้น ฉันขอให้คนอื่นสองสามคนยืนยันสูตรใหม่และได้รับการยืนยันแล้ว เนื่องจากไม่มีเอกสารประกอบการใช้งานจึงไม่แน่ใจและอาจหายไป ARRAYFORMULAไม่ทำงานเมื่อใช้กับสูตรใหม่นี้
ฉันได้สร้างไฟล์ตัวอย่างสำหรับคุณ: isFormula
ดูเหมือนว่ามีฟังก์ชันในตัวที่ซ่อนอยู่ISFORMULA()จาก Google ฉันรู้เมื่อฉันลบฟังก์ชั่นของตัวเองและยังทำงานอยู่ ฉันลองในสเปรดชีตใหม่และยังใช้งานได้ ไม่มีปัญหาแคช
isFormula2("A1")ฟังก์ชั่นของคุณเป็นจริงได้รับสตริงซึ่งเป็นที่อยู่ของเซลล์ได้ ดังนั้นฉันจึงพยายามสร้างเวอร์ชันใหม่เช่นนี้:function isFormula2(cell) { return (cell.getFormula())!=""; }และฉันคาดว่ามันจะใช้งานได้isFormula2(A1)แต่ดูเหมือนจะไม่ทำงานและเมื่อพยายามที่จะดีบั๊กมันจะแสดงว่าไม่ได้cellกำหนด ... แนวคิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น การเปลี่ยนแปลงจึงจะทำงานกับf(A1)แทนf("A1")?