0

これまでのところ、配列ソースデータの単一列 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;        
}

ありがとう!

4

1 に答える 1