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.