มีฟังก์ชั่นที่จะบอกได้หรือไม่ว่าเซลล์หนึ่งมีค่าธรรมดา (ป้อนด้วยตนเอง) หรือมีสูตรหรือไม่?
มีฟังก์ชั่นที่จะบอกได้หรือไม่ว่าเซลล์หนึ่งมีค่าธรรมดา (ป้อนด้วยตนเอง) หรือมีสูตรหรือไม่?
คำตอบ:
ด้วยตัวอย่างเล็ก ๆ น้อย ๆ นี้คุณสามารถทำได้
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")
?