So unterscheiden Sie leere Zellen von Null

7

Ich möchte eine Reihe spezifischer Antworten aus einem Formular zählen, in dem die Antwort leer gelassen werden kann, Null oder eine andere Zahl 'd'.

Der folgende Code:

var data = sheet.getRange("B2:L").getValues();

var d = 0;
if (data[i][j] == d){
    count++;
}

nimmt an, dass dies an empty cell == 0wahr ist, und zählt somit die falsche Anzahl von Zellen, die tatsächlich den Wert Null enthalten

var d = 0;
if (data[i][j] != '' && data[i][j] == d){
    count++;
}

oder irgendeine Variation mit != null / != ""scheint für mich nicht zu funktionieren

BEARBEITEN: Link zum Dokument. Ich denke, Sie können das Skript sehen, wenn Sie eine Kopie erstellen.

Rabe
quelle
Können Sie uns ein Dokument mitteilen?
Jacob Jan Tuinstra
Das Hinzufügen des vollständigen Codes (zumindest des Zählteils) ist ebenfalls hilfreich. Können Sie Ihre Frage bearbeiten?
Jacob Jan Tuinstra
1
Ein Link zu meinem Dokument wurde hinzugefügt. Ich hoffe, Sie können das Skript sehen.
Rabe
Schön gestyltes Blatt, das Sie erstellt haben !! Ich werde mal schauen.
Jacob Jan Tuinstra

Antworten:

3

Wenn Sie für die verschiedenen dWerte zählen, müssen Sie überprüfen, ob die Objekte im Array sind stringoder numberbasieren:

for (var j=1; j<lastColumn-1; j++) {
  if (typeof data[i][j] !== 'string') {
    count[+data[i][j]][d]++;   
  }
}
Jacob Jan Tuinstra
quelle
Super, das hat perfekt funktioniert! Vielen Dank :)
Raven
4

Haben Sie die Funktion isBlank () ausprobiert ?

phermös
quelle
OP ist nach einer Skriptlösung.
Jacob Jan Tuinstra
1
@JacobJanTuinstra isBlank()ist eine Google Apps Script-Funktion (Link überprüfen ).
Punchlinern
@Punchlinern Wusste nicht, dass ...
Jacob Jan Tuinstra
1
Sie lernen jeden Tag etwas :)
Punchlinern
@phermous: Hast du es versucht?
Jacob Jan Tuinstra
3

Sie können auch Folgendes verwenden, um leer, Nullwert oder 'sonst' zu bestimmen.

 if (cell === "") // empty cell
     doEmptyCellStuff();
 else
 if (cell == 0)  // zero-value cell
     doZeroValueCellStuff();
 else
     dValueCellStuff();
Jimmy Ng
quelle
2
Der Titel entspricht nicht dem Problem. Ich musste tief graben, um das eigentliche Problem zu verstehen. Dies löst das Problem nicht
Jacob Jan Tuinstra
Warum nicht? Scheint, als würde es leere Zellen korrekt überspringen. Es ist nur so, dass doEmptyCellStuff im Fall des OP ein No-Op sein sollte ... und das letzte andere kann weggelassen werden.
DylanYoung