私は Google スプレッドシートを作成しており、そのスプレッドシートに大量のデータを入力してから、別のシートでそこから統計を取得したいと考えています。値を正しくカウントするのに苦労しています。
私が達成しようとしていること -関数のターゲット/引数に基づいて繰り返し値をカウントすることにより、特定の列の統計を取得するために任意のセルに追加できる関数を構築します。
例:
シート 1 には、列 E に計算する必要があるデータがあります (ステータスを示す 1 文字または 2 文字を保持します。シート 2 は、すべての統計データを取得する場所です。次のような関数を追加します: =getData("A")
関数自体は既にシート 1 と列 E を指しています。ここで関数が言っているのは、「列 E のすべてのデータを取得して、A としてマークされているセルの数を教えてほしい」ということです。 .
ここで個別に検索する約5つの異なる値があります。A、B、C、D、E とします。したがって、C を検索する場合は、次のように使用して統計シートの別のセルに統計を取得します: =getData("C")
これまでに得たもの (それはうまくいきません) - 私はこのようなコーディングはかなり大雑把なので、まだ多くのことを学んでいます。これが私がこれまで試みていたことです:
function getData(target) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET1");
var lrow = ss.getLastRow();
var r = ss.getRange(2, 5, lrow, 1);
var data = r.getValues();
var count;
for (var i = 0; i < lrow ; i++) {
var count = 1;
for (var j = 0; j < i; i++) {
if (data[j][0].value(target) == data[i][0].value(target)) {
count++;
}
}
return (count);
}
}
私も試しました: if (data.value() == target) { count++; }
しかし、それも役に立たなかったようです。私は何を間違っていますか?正しくカウントしていないか、データをプルして正しくカウントしていません。かなりの数の投稿を検索しましたが、必要なものをまとめることができないようです。
誰かが提供できる助けに感謝します。ありがとう。
解決されたコード (@ScampMichael に感謝) - このわずかな違いにより、実際には =getData("Example1","Example2") の形式を使用して複数の値を検索し、合計を数えることができます。
function getData(target1, target2) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET1");
var lrow = ss.getLastRow();
var r = ss.getRange(2, 5, lrow-1, 1); // lrow-1 to not count header
var data = r.getValues();
var count = 0; // 0 must be declared here or you'll get error: Overflow on the spreadsheet
for (var i=0; i<data.length; i++) {
if (data[i][0] == target1) { // can repeat this part depending how many values you want to search for
count++;
}
if (data[i][0] == target2) {
count++;
}
}
return (count);
}