
列内のセルの範囲が指定されている場合、最後に入力されたエントリを見つけて、その値を返します。
元帳には、ほとんどの日、上から順に新しい行に値を入力する列があります。入力しなかった日は、セルは空のままです。最後に入力した値を使用したいのですが、検索方法がわかりません。論理的には、下から上へ検索して、範囲内の最初の空でないセルを探します。範囲は毎日大きくなりますが、関数は常に一番下のエントリを返す必要があります。エントリがまったく行われず、そのセルが空のままになる日もあるため、最初の空のセルで停止して 1 つ戻ることはできません。範囲全体で最後に入力されたセルを見つける必要があります。
find() または search() が最初の「Non-WhiteSpaceOrEmptyString」を見つけられるかどうかはわかりませんが、それを使用して下から上へ検索します。
答え1
自分でソリューションを作成しました。Google スプレッドシートでは、カスタム関数を作成できます。[ツール] メニューで、[スクリプト エディタ] をクリックします。エディタで、次の関数を追加します。
function LASTPOPULATED(range2d) {
if (!Array.isArray(range2d)) { return null; }
for (i=range2d.length-1; i>-1; i--) {
e = range2d[i];
if (!Array.isArray(e) || e.length != 1) { return null; }
v = e[0];
if (typeof(v) === 'number' || (typeof(v) === 'string' && v.length > 0)) { return v; }
}
return null;
}
使用するには、LASTPOPULATED(range) を呼び出します。range は cell1:cell2 の形式です。Google スプレッドシートの範囲は常に 2 次元であるため、B1:B100 などの列範囲を表していることを確認してください。そうしないと、入力された要素が見つかる前に 1 列以上が検出されると、関数は null を返します。