Odpowiedzi:
Za pomocą tego małego fragmentu możesz to zrobić.
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;
}
W tej odpowiedzi Tom Horwood znalazł sposób na obejście stosowania cytatów.
Dodaj skrypt w Narzędzia> Edytor skryptów i naciśnij przycisk błędu, aby aktywować uwierzytelnianie.
Utworzyłem dla Ciebie przykładowy plik: Check for Formula
isFormula(a1)
? (w MS Excel jest to funkcja, która pobiera parametr zakresu)
Użyj wbudowanej funkcji ISFORMULA () .
Myślę, że właśnie odkryłem nieudokumentowaną formułę w nowych Arkuszach Google. @Pnuts powiedział, że CELL
formuła nie działa (częściowo dlatego, że jest dostępna tylko w nowych Arkuszach Google), więc skopiowałem kod do nowego Arkusza Google. Wystąpił błąd, mówiąc, że moja (niestandardowa) formuła akceptuje tylko jeden argument, a nie dwa:
Zmiana nazwy isFormula
na coś innego spowodowała działającą funkcję niestandardową. Po tym stworzyłem jeszcze jeden Arkusz Google i użyłem isFormula
formuły. Formuła nie pojawia się w autouzupełnianiu, ale działa:
Jeśli więc formuła jest dostępna w nowych Arkuszach Google, to byłaby to najlepsza odpowiedź:
=isFormula(A1)
Dostępne tylko w nowych Arkuszach Google. Poprosiłem kilka innych osób o potwierdzenie nowej formuły i jest ona potwierdzona. Ponieważ jest to nieudokumentowane, jego implementacja jest niepewna i może zniknąć. ARRAYFORMULA
Nie działa w przypadku korzystania z tej nowej formule.
Stworzyłem dla ciebie przykładowy plik: isFormula
Wygląda na to, że Google ma ukrytą wbudowaną funkcję ISFORMULA()
. Zdałem sobie sprawę, kiedy usunąłem własną funkcję i nadal działałem. Wypróbowałem to w nowym arkuszu kalkulacyjnym i nadal działa. Brak problemu z pamięcią podręczną.
isFormula2("A1")
. więc próbowałem utworzyć nową wersję tego typu:function isFormula2(cell) { return (cell.getFormula())!=""; }
i spodziewałem się, że będzie można go wywoływać przy użyciu,isFormula2(A1)
ale wydaje się, że to nie działa, a przy próbie debugowania pokazuje sięcell
jako niezdefiniowany ... każdy pomysł, dlaczego tak jest i czy mogłoby być inaczej zmienione, więc będzie działaćf(A1)
zamiastf("A1")
?