กำลังมองหาสูตร“ isFormula” สำหรับ Google Spreadsheets


13

มีฟังก์ชั่นที่จะบอกได้หรือไม่ว่าเซลล์หนึ่งมีค่าธรรมดา (ป้อนด้วยตนเอง) หรือมีสูตรหรือไม่?

คำตอบ:


5

ด้วยตัวอย่างเล็ก ๆ น้อย ๆ นี้คุณสามารถทำได้

รหัส

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 พบวิธีหลีกเลี่ยงการใช้คำพูด

ตัวอย่าง

เพิ่มสคริปต์ภายใต้เครื่องมือ> เครื่องมือแก้ไขสคริปต์และกดปุ่มข้อผิดพลาดเพื่อเปิดใช้งานการตรวจสอบความถูกต้อง

ฉันได้สร้างไฟล์ตัวอย่างให้คุณ: ตรวจสอบสูตร


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

@epeleg ดูคำตอบที่แก้ไขแล้วของฉัน
Jacob Jan Tuinstra

:) ดังนั้นคุณเปลี่ยนมันเพื่อที่จะไม่ได้รับที่อยู่แทนที่จะได้รับคอลัมน์และแถว นี่ไม่มีรูปแบบที่การโทรจะเป็นisFormula(a1)อย่างไร (ใน MS Excel มันจะเป็นฟังก์ชั่นที่ได้รับพารามิเตอร์ช่วง)
epeleg

@epeleg ที่ใกล้เคียงที่สุดคือรูปแบบ 1 ("A2: A2")ดูไฟล์ตัวอย่างของฉัน ฟังก์ชั่นที่กำหนดเองทำงานในลักษณะนั้น คุณจะได้รับความคุ้มค่า ด้วยอัญประกาศสตริงที่สามารถใช้เป็นเช่นนี้ แต่ไม่สามารถคัดลอก / วาง โซลูชัน COLUMN และ ROW เป็นเพียงรอบการทำงาน (หลีกเลี่ยงไม่ได้)
จาค็อบ Jan Tuinstra

สิ่งที่จะเป็นค่าที่ฟังก์ชั่นที่กำหนดเองจะได้รับถ้าคุณเรียกมันด้วย isFormula (a1: a1)? และ isFormula เกี่ยวกับ (a1: b2) คืออะไร?
epeleg

9

คำตอบสั้น ๆ

ใช้ฟังก์ชันในตัวของISFORMULA ()

ความเป็นมาและคำอธิบาย

ฉันคิดว่าฉันเพิ่งค้นพบสูตรที่ไม่มีเอกสารใน Google ชีตใหม่ @Pnuts กำลังบอกว่าCELLสูตรใช้งานไม่ได้ (บางส่วนเนื่องจากมีเฉพาะใน Google ชีตใหม่) ดังนั้นฉันจึงคัดลอกรหัสไปยัง Google ชีตใหม่ เกิดข้อผิดพลาดขึ้นบอกฉันว่า (กำหนดเอง) สูตรของฉันยอมรับข้อโต้แย้งเพียงข้อเดียวและไม่ใช่สองข้อ:
ป้อนคำอธิบายรูปภาพที่นี่

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

ดังนั้นหากสูตรมีอยู่ใน Google ชีตใหม่ทั้งหมดนี่จะเป็นคำตอบที่ดีที่สุด:

สูตร

=isFormula(A1)

บันทึก

มีเฉพาะใน Google ชีตใหม่เท่านั้น ฉันขอให้คนอื่นสองสามคนยืนยันสูตรใหม่และได้รับการยืนยันแล้ว เนื่องจากไม่มีเอกสารประกอบการใช้งานจึงไม่แน่ใจและอาจหายไป ARRAYFORMULAไม่ทำงานเมื่อใช้กับสูตรใหม่นี้

ตัวอย่าง

ฉันได้สร้างไฟล์ตัวอย่างสำหรับคุณ: isFormula


ดี ดูเหมือนว่า Google จะใช้การแนะนำของฉัน :) แต่ฉันจะเปลี่ยนเป็น "Google ชีตใหม่" ได้อย่างไร
epeleg

น่าสนใจ การทำงานสำหรับบัญชี Gmail ของฉัน แต่ไม่ได้อยู่ในปพลิเคชัน Google บัญชีของฉัน ...
epeleg

2
ISFORMULA () ได้รับการบันทึกไว้แล้ว ดูsupport.google.com/docs/answer/6270316?hl=th
Rubén

2

ดูเหมือนว่ามีฟังก์ชันในตัวที่ซ่อนอยู่ISFORMULA()จาก Google ฉันรู้เมื่อฉันลบฟังก์ชั่นของตัวเองและยังทำงานอยู่ ฉันลองในสเปรดชีตใหม่และยังใช้งานได้ ไม่มีปัญหาแคช

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