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.


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]++;   
  }
}

Super, das hat perfekt funktioniert! Vielen Dank :)
Raven


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();

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.