これまでのところ、配列ソースデータの単一列 VlookUp に対して次の作業を行っています。
これを作成した目的は、複数のシートから大量のデータを取得するときに、静的な情報を検索してインポート領域に配置することでした。
スプレッドシート内でクエリを使用して目的を達成することはできますが、スプレッドシートがかなり動かなくなります。
また、古いシートでは、次のようなことを行います: =arrayformula(VLookUp(A2:A,Data!A:K,{3,4,7,10}*sign(Row(A2:A)),false)) 取得する列 A からの行の一致基準の列 C、D、G、J
新しいシートでは、これはもはや不可能です。 悲しい顔!!!!
function finderLookUPReturnArray_(Sheet,Range,lookupItem,IndexOffset,IndexOffsetReturn) // finderLookUP(Ref Sheet, Ref Sheet Range, Current lookup Item, Ref Sheet Column for Current lookup Item , Ref Sheet Column for qualified Current lookup Item RETURN)
{
var newArray = new Array();
var data = SpreadsheetApp.getActive().getSheetByName(Sheet).getRange(Range).getValues(); //Syncs sheet by name and range into var
for(var i = 0; i<lookupItem.length; i++)
{
for(nn=0;nn<data.length;nn++)
{
var Sending = "";
if (data[nn][IndexOffset]==lookupItem[i])
{
var Sending = data[nn][IndexOffsetReturn];
newArray.push(Sending);
break;
}
}
if(isEmpty_(Sending)==true)
{
var Sending = "#N/A";
newArray.push(Sending);
}
}
return newArray;
}
//------------------
function isEmpty_(string)
{
if(!string) return true;
if(string == '') return true;
if(string === false) return true;
if(string === null) return true;
if(string == undefined) return true;
string = string+' '; // check for a bunch of whitespace
if('' == (string.replace(/^\s\s*/, '').replace(/\s\s*$/, ''))) return true;
return false;
}
ありがとう!