消除 Ref# 引用不存在问题

Eliminate Ref# Reference Does Not Exist Issue

UpdateDemogInfoDA 脚本中,我允许用户输入新信息,将其捕获到另一个工作表 (JBD) 中,然后在“示例数据”选项卡中用新信息覆盖旧信息。

然后当按下新查找按钮时,将根据 CustID 填充要查找的公式。出于某种原因,并且仅对于某些单元格(如方向和键码),数据正在转换为:

REF#! Reference Does Not Exist error.

我不明白为什么。我包含了 NameSearchDAUpdateDemogInfoDA 的代码,希望我遗漏了一些对您来说很明显的东西。我也愿意接受有关清理它的任何建议,以便它运行得更快。

我已确保示例数据中的所有单元格未被 运行 .breakapart() 合并。我已确保 JBD 单元格引用正在从客户中心提取正确单元格的数据。

我的电子表格是<https://docs.google.com/spreadsheets/d/1noCiboVB5_yTq9H0W_-q9goqc4E9Gq0DhcNMuXj9Kz4/edit#gid=622975187>

这 3 个选项卡是 DA 客户中心、JBD(要复制的数据的临时保存位置)和示例数据(主数据库)。

我通常使用 Jay R Levesque 作为我的样本客户。如果您点击按名称搜索按钮,您可以 select 用户,然后 select 从下拉列表中选择地址。这将填充该 CUST ID,然后所有公式都从该唯一 ID 驱动。

    function UpdateDemogInfoDA() {
    
    var ss=SpreadsheetApp.getActive();
    var sh1=ss.getSheetByName('Sample Data');
    var rg1=sh1.getDataRange();
    var vA=rg1.getValues();
    var sh2=ss.getSheetByName('JBD');
    var id=sh2.getRange('DU2').getValue();
    var JBDdata=sh2.getRange(2,2,1,137);
      
       
      
    for(var i=0;i<vA.length;i++) {
    if(vA[i][0]==id) {
    JBDdata.copyTo(sh1.getRange(i+1,2,1,137),{contentsOnly:true});
    ss.toast("Match found. Demographics Updated");
    
        break;
         }
     }

SearchByName 代码

function NameSearchDA(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("DA Customer Center");
var filters = ss.getSheetByName("Filters");

var name = sheet.getRange("C9");
var allnames = filters.getRange("A2");
var address=sheet.getRange("C11");
var name2address=filters.getRange("E2");
var valname = allnames.getDataValidation();
var valaddress=name2address.getDataValidation();

var custid=sheet.getRange("H7");
var contractrenewal=sheet.getRange("H8");
var name = sheet.getRange("C9");
var alladdress = filters.getRange("A12");
var prevcust=sheet.getRange("C10");
var address=sheet.getRange("C11");
var zip=sheet.getRange("C12");
var phone = sheet.getRange("C13");
var email = sheet.getRange("C14");
var city=sheet.getRange("E12");
var source=sheet.getRange("H12");
var altphone=sheet.getRange("G13");
var altemail=sheet.getRange("G14");
var altcontact=sheet.getRange("C15");
var type=sheet.getRange("G15");
var contactphone1=sheet.getRange("C16");
var contactphone2=sheet.getRange("G16");
var contactemail=sheet.getRange("C17");
var mailbox=sheet.getRange("C19");
var ccbox=sheet.getRange("E19");
var emailbillbox=sheet.getRange("G19");
var mailingaddress=sheet.getRange("C20");
var startdate=sheet.getRange("H20");
var wintermailaddress=sheet.getRange("C21");
var enddate=sheet.getRange("H21");
var keycode=sheet.getRange("G22");
var directions=sheet.getRange("C23");

var custidmatch = "=iferror(index('Sample Data'!$A:$Q,Match($C&$C,'Sample Data'!$D:$D&'Sample Data'!$F:$F,0),1))";
var contractrenewdatematch = "=if(H7>0,filter('Sample Data'!$B:$B,'Sample Data'!$A:$A=$H),\"\")";
var prevcustmatch = "=if(H7>0, filter('Sample Data'!$C:$C,'Sample Data'!$A:$A=$H),\"\")";
var zipmatch = "=if(H7>0, filter('Sample Data'!$G:$G,'Sample Data'!$A:$A=$H),\"\")";
var citymatch = "=if(H7>0, filter('Sample Data'!$DX2:$DX8499,'Sample Data'!$A2:$A8499=$H),\"\")";
var sourcematch = "=if(H7>0, filter('Sample Data'!$AI2:$AI8499,'Sample Data'!$A2:$A8499=$H),\"\")";
var phonematch = "=if(H7>0, filter('Sample Data'!$E:$E99,'Sample Data'!$A:$A99=$H),\"\")";
var altphonematch = "=if(H7>0, filter('Sample Data'!$DD:$DD99,'Sample Data'!$A:$A99=$H),\"\")";
var emailmatch = "=if(H7>0, filter('Sample Data'!$K:$K99,'Sample Data'!$A:$A99=$H),\"\")";
var altemailmatch = "=if(H7>0, filter('Sample Data'!$DE:$DE99,'Sample Data'!$A:$A99=$H),\"\")";
var altcontactmatch = "=if(H7>0, filter('Sample Data'!$DF:$DF99,'Sample Data'!$A:$A99=$H),\"\")";
var typematch = "=if(H7>0, filter('Sample Data'!$DG:$DG99,'Sample Data'!$A:$A99=$H),\"\")";
var contactphone1match = "=if(H7>0, filter('Sample Data'!$DH:$DH99,'Sample Data'!$A:$A99=$H),\"\")";
var contactphone2match = "=if(H7>0, filter('Sample Data'!$DI:$DI99,'Sample Data'!$A:$A99=$H),\"\")";
var contactemailmatch = "=if(H7>0, filter('Sample Data'!$DJ:$DJ99,'Sample Data'!$A:$A99=$H),\"\")";
var mailboxmatch = "=if(H7>0, filter('Sample Data'!$EF:$EF99,'Sample Data'!$A:$A99=$H),\"\")";
var ccboxmatch = "=if(H7>0, filter('Sample Data'!$EG:$EG99,'Sample Data'!$A:$A99=$H),\"\")";
var emailbillsboxmatch = "=if(H7>0, filter('Sample Data'!$DP:$DP99,'Sample Data'!$A:$A99=$H),\"\")";
var mailaddressmatch = "=if(H7>0, filter('Sample Data'!$J:$J99,'Sample Data'!$A:$A99=$H),\"\")";
var wintermailaddressmatch = "=if(H7>0, filter('Sample Data'!$DS:$DS99,'Sample Data'!$A:$A99=$H),\"\")";
var startdatematch = "=if(H7>0, filter('Sample Data'!$DQ:$DQ99,'Sample Data'!$A:$A99=$H),\"\")";
var enddatematch = "=if(H7>0, filter('Sample Data'!$DR:$DR99,'Sample Data'!$A:$A99=$H),\"\")";
var keycodematch = "=if(H7>0, filter('Sample Data'!$DO:$DO99,'Sample Data'!$A:$A99=$H),\"\")";
var directionsmatch = "=if(H7>0, filter('Sample Data'!$O:$O99,'Sample Data'!$A:$A99=$H),\"\")";

custid.setFormula(custidmatch);
contractrenewal.setFormula(contractrenewdatematch);
prevcust.setFormula(prevcustmatch);
zip.setFormula(zipmatch);
city.setFormula(citymatch);
source.setFormula(sourcematch);
phone.setFormula(phonematch);
altphone.setFormula(altphonematch);  
email.setFormula(emailmatch);
altemail.setFormula(altemailmatch);
altcontact.setFormula(altcontactmatch);
type.setFormula(typematch);
contactphone1.setFormula(contactphone1match);
contactphone2.setFormula(contactphone2match);
contactemail.setFormula(contactemailmatch);
mailbox.setFormula(mailboxmatch);
ccbox.setFormula(ccboxmatch);
emailbillbox.setFormula(emailbillsboxmatch);
mailingaddress.setFormula(mailaddressmatch);
wintermailaddress.setFormula(wintermailaddressmatch);
keycode.setFormula(keycodematch);
startdate.setFormula(startdatematch);
enddate.setFormula(enddatematch);
directions.setFormula(directionsmatch);

name.setDataValidation(valname);
address.setDataValidation(valaddress);

var size1= sheet.getRange("K9");
var size2= sheet.getRange("K10");
var size3= sheet.getRange("K11");
var size4= sheet.getRange("K12");
var st1=sheet.getRange("L9");
var st2=sheet.getRange("L10");
var st3=sheet.getRange("L11");
var st4=sheet.getRange("L12");
var uvbulb=sheet.getRange("L13");
var ht1=sheet.getRange("N9");
var ht2=sheet.getRange("N10");
var ht3=sheet.getRange("N11");
var ht4=sheet.getRange("N12");
var mod1=sheet.getRange("P9");
var mod2=sheet.getRange("P10");
var mod3=sheet.getRange("P11");
var mod4=sheet.getRange("P12");
var uvmod=sheet.getRange("P13");
var ser1=sheet.getRange("Q9");
var ser2=sheet.getRange("Q10");
var ser3=sheet.getRange("Q11");
var ser4=sheet.getRange("Q12");
var uvser=sheet.getRange("Q13");
var lcd1=sheet.getRange("R9");
var lcd2=sheet.getRange("R10");
var lcd3=sheet.getRange("R11");
var lcd4=sheet.getRange("R12");
var uvlcdr=sheet.getRange("R13");
var wellloc=sheet.getRange("K14");
var wellyear=sheet.getRange("K15");
var welldepth =sheet.getRange("M15");
var wellGPM =sheet.getRange("O15");
var wellcasing =sheet.getRange("Q15");
var pumpdate=sheet.getRange("K16");
var pumpsize =sheet.getRange("M16");
var presstankdate =sheet.getRange("O16");
var presstanksize =sheet.getRange("Q16");
var systemnotes=sheet.getRange("K17");
var iron=sheet.getRange("J19");
var manganese=sheet.getRange("J20");
var pH=sheet.getRange("J21");
var hardness=sheet.getRange("J22");
var arsenic=sheet.getRange("L19");
var radon=sheet.getRange("L20");
var uranium=sheet.getRange("L21");
var lead=sheet.getRange("L22");
var chloride=sheet.getRange("N19");
var nitrate=sheet.getRange("N20");
var fluoride=sheet.getRange("N21");
var bacteria=sheet.getRange("N22");
var tannins=sheet.getRange("P19");
var other=sheet.getRange("P20");
var smell=sheet.getRange("P21");
var citywater=sheet.getRange("P22");
var labtestfreq=sheet.getRange("K23");
var lastlabdate=sheet.getRange("O23");
var nextlabdate=sheet.getRange("Q23");
var saltdelfreq=sheet.getRange("K24");
var saltqty=sheet.getRange("M24");
var lastsaltdate=sheet.getRange("O24");
var nextsaltdate=sheet.getRange("Q21");
var callaheadbox=sheet.getRange("S24");

var size1match="=if(H7>0, filter('Sample Data'!$AZ:$AZ99,'Sample Data'!$A:$A99=$H),\"\")";
var size2match="=if(H7>0, filter('Sample Data'!$BE:$BE99,'Sample Data'!$A:$A99=$H),\"\")";
var size3match="=if(H7>0, filter('Sample Data'!$BJ:$BJ99,'Sample Data'!$A:$A99=$H),\"\")";
var size4match= "=if(H7>0, filter('Sample Data'!$BO:$BO99,'Sample Data'!$A:$A99=$H),\"\")";
var st1match="=if(H7>0, filter('Sample Data'!$BA:$BA99,'Sample Data'!$A:$A99=$H),\"\")";
var st2match="=if(H7>0, filter('Sample Data'!$BF:$BF99,'Sample Data'!$A:$A99=$H),\"\")";
var st3match="=if(H7>0, filter('Sample Data'!$BK:$BK99,'Sample Data'!$A:$A99=$H),\"\")";
var st4match="=if(H7>0, filter('Sample Data'!$BP:$BP99,'Sample Data'!$A:$A99=$H),\"\")";
var uvbulbmatch="=if(H7>0, filter('Sample Data'!$BU:$BU99,'Sample Data'!$A:$A99=$H),\"\")";
var ht1match="=if(H7>0, filter('Sample Data'!$BB:$BB99,'Sample Data'!$A:$A99=$H),\"\")";
var ht2match="=if(H7>0, filter('Sample Data'!$BG:$BG99,'Sample Data'!$A:$A99=$H),\"\")";
var ht3match="=if(H7>0, filter('Sample Data'!$BL:$BL99,'Sample Data'!$A:$A99=$H),\"\")";
var ht4match="=if(H7>0, filter('Sample Data'!$BQ:$BQ99,'Sample Data'!$A:$A99=$H),\"\")";
var mod1match="=if(H7>0, filter('Sample Data'!$BC:$BC99,'Sample Data'!$A:$A99=$H),\"\")";
var mod2match="=if(H7>0, filter('Sample Data'!$BH:$BH99,'Sample Data'!$A:$A99=$H),\"\")";
var mod3match="=if(H7>0, filter('Sample Data'!$BM:$BM99,'Sample Data'!$A:$A99=$H),\"\")";
var mod4match="=if(H7>0, filter('Sample Data'!$BR:$BR99,'Sample Data'!$A:$A99=$H),\"\")";
var uvmodmatch="=if(H7>0, filter('Sample Data'!$BW:$BW99,'Sample Data'!$A:$A99=$H),\"\")";
var ser1match="=if(H7>0, filter('Sample Data'!$BD:$BD99,'Sample Data'!$A:$A99=$H),\"\")";
var ser2match="=if(H7>0, filter('Sample Data'!$BI:$BI99,'Sample Data'!$A:$A99=$H),\"\")";
var ser3match="=if(H7>0, filter('Sample Data'!$BN:$BN99,'Sample Data'!$A:$A99=$H),\"\")";
var ser4match="=if(H7>0, filter('Sample Data'!$BS:$BS99,'Sample Data'!$A:$A99=$H),\"\")";
var uvsermatch="=if(H7>0, filter('Sample Data'!$BX:$BX99,'Sample Data'!$A:$A99=$H),\"\")";
var lcd1match="=if(H7>0, filter('Sample Data'!$EA:$EA99,'Sample Data'!$A:$A99=$H),\"\")";
var lcd2match="=if(H7>0, filter('Sample Data'!$EB:$EB99,'Sample Data'!$A:$A99=$H),\"\")";
var lcd3match="=if(H7>0, filter('Sample Data'!$EC:$EC99,'Sample Data'!$A:$A99=$H),\"\")";
var lcd4match="=if(H7>0, filter('Sample Data'!$ED:$ED99,'Sample Data'!$A:$A99=$H),\"\")";
var uvlcdrmatch="=if(H7>0, filter('Sample Data'!$EE:$EE99,'Sample Data'!$A:$A99=$H),\"\")";
var welllocmatch="=if(H7>0, filter('Sample Data'!$BY:$BY99,'Sample Data'!$A:$A99=$H),\"\")";
var wellyearmatch="=if(H7>0, filter('Sample Data'!$BZ:$BZ99,'Sample Data'!$A:$A99=$H),\"\")";
var welldepthmatch ="=if(H7>0, filter('Sample Data'!$CA:$CA99,'Sample Data'!$A:$A99=$H),\"\")";
var wellGPMmatch ="=if(H7>0, filter('Sample Data'!$CB:$CB99,'Sample Data'!$A:$A99=$H),\"\")";
var wellcasingmatch ="=if(H7>0, filter('Sample Data'!$CC:$CC99,'Sample Data'!$A:$A99=$H),\"\")";
var pumpdatematch="=if(H7>0, filter('Sample Data'!$CD:$CD99,'Sample Data'!$A:$A99=$H),\"\")";
var pumpsizematch ="=if(H7>0, filter('Sample Data'!$CE:$CE99,'Sample Data'!$A:$A99=$H),\"\")";
var presstankdatematch ="=if(H7>0, filter('Sample Data'!$CF:$CF99,'Sample Data'!$A:$A99=$H),\"\")";
var presstanksizematch ="=if(H7>0, filter('Sample Data'!$CG:$CG99,'Sample Data'!$A:$A99=$H),\"\")";
var systemnotesmatch="=if(H7>0, filter('Sample Data'!$CH:$CH99,'Sample Data'!$A:$A99=$H),\"\")";
var ironmatch="=if(H7>0, filter('Sample Data'!$CP:$CP99,'Sample Data'!$A:$A99=$H),\"\")";
var manganesematch="=if(H7>0, filter('Sample Data'!$CQ:$CQ99,'Sample Data'!$A:$A99=$H),\"\")";
var pHmatch="=if(H7>0, filter('Sample Data'!$CR:$CR99,'Sample Data'!$A:$A99=$H),\"\")";
var  hardnessmatch="=if(H7>0, filter('Sample Data'!$CS:$CS99,'Sample Data'!$A:$A99=$H),\"\")";
var arsenicmatch="=if(H7>0, filter('Sample Data'!$CJ:$CJ99,'Sample Data'!$A:$A99=$H),\"\")";
var radonmatch="=if(H7>0, filter('Sample Data'!$CI:$CI99,'Sample Data'!$A:$A99=$H),\"\")";
var uraniummatch="=if(H7>0, filter('Sample Data'!$CK:$CK99,'Sample Data'!$A:$A99=$H),\"\")";
var leadmatch="=if(H7>0, filter('Sample Data'!$CN:$CN99,'Sample Data'!$A:$A99=$H),\"\")";
var chloridematch="=if(H7>0, filter('Sample Data'!$CT:$CT99,'Sample Data'!$A:$A99=$H),\"\")";
var nitratematch="=if(H7>0, filter('Sample Data'!$CM:$CM99,'Sample Data'!$A:$A99=$H),\"\")";
var fluoridematch="=if(H7>0, filter('Sample Data'!$CW:$CW99,'Sample Data'!$A:$A99=$H),\"\")";
var bacteriamatch="=if(H7>0, filter('Sample Data'!$CL:$CL99,'Sample Data'!$A:$A99=$H),\"\")";
var tanninsmatch="=if(H7>0, filter('Sample Data'!$EH:$EH99,'Sample Data'!$A:$A99=$H),\"\")";
var othermatch="=if(H7>0, filter('Sample Data'!$CO:$CO99,'Sample Data'!$A:$A99=$H),\"\")";
var smellmatch="=if(H7>0, filter('Sample Data'!$CU:$CU99,'Sample Data'!$A:$A99=$H),\"\")";
var citywatermatch="=if(H7>0, filter('Sample Data'!$CV:$CV99,'Sample Data'!$A:$A99=$H),\"\")";
var labtestfreqmatch="=if(H7>0, filter('Sample Data'!$DV:$DV99,'Sample Data'!$A:$A99=$H),\"\")";
var lastlabdatematch="=if(H7>0, filter('Sample Data'!$DW:$DW99,'Sample Data'!$A:$A99=$H),\"\")";
var saltdelfreqmatch="=if(H7>0, filter('Sample Data'!$AL:$AL99,'Sample Data'!$A:$A99=$H),\"\")";
var saltqtymatch="=if(H7>0, filter('Sample Data'!$AM:$AM99,'Sample Data'!$A:$A99=$H),\"\")";
var lastsaltdatematch="=if(H7>0, filter('Sample Data'!$AJ:$AJ99,'Sample Data'!$A:$A99=$H),\"\")";
var callaheadboxmatch="=if(H7>0, filter('Sample Data'!$DZ:$DZ99,'Sample Data'!$A:$A99=$H),\"\")";

custid.clearContent();
contractrenewal.clearContent();
name.clearContent();
prevcust.clearContent();
address.clearContent();
zip.clearContent();
city.clearContent();
source.clearContent();
phone.clearContent();
altphone.clearContent();
email.clearContent();
altemail.clearContent();
altcontact.clearContent();
type.clearContent();
contactphone1.clearContent();
contactphone2.clearContent();
contactemail.clearContent();
mailbox.clearContent();
ccbox.clearContent();
emailbillbox.clearContent();
mailingaddress.clearContent();
startdate.clearContent();
wintermailaddress.clearContent();
enddate.clearContent();
keycode.clearContent();
directions.clearContent();

address.setDataValidation(valaddress);
name.setDataValidation(valname);

custid.setFormula(custidmatch);
contractrenewal.setFormula(contractrenewdatematch);
prevcust.setFormula(prevcustmatch);
zip.setFormula(zipmatch);
city.setFormula(citymatch);
source.setFormula(sourcematch);
phone.setFormula(phonematch);
altphone.setFormula(altphonematch);  
email.setFormula(emailmatch);
altemail.setFormula(altemailmatch);
altcontact.setFormula(altcontactmatch);
type.setFormula(typematch);
contactphone1.setFormula(contactphone1match);
contactphone2.setFormula(contactphone2match);
contactemail.setFormula(contactemailmatch);
mailbox.setFormula(mailboxmatch);
ccbox.setFormula(ccboxmatch);
emailbillbox.setFormula(emailbillsboxmatch);
mailingaddress.setFormula(mailaddressmatch);
wintermailaddress.setFormula(wintermailaddressmatch);
keycode.setFormula(keycodematch);
startdate.setFormula(startdatematch);
enddate.setFormula(enddatematch);
directions.setFormula(directionsmatch);
size1.setFormula(size1match);
size2.setFormula(size2match);
size3.setFormula(size3match);
size4.setFormula(size4match);
st1.setFormula(st1match);
st2.setFormula(st2match);
st3.setFormula(st3match);
st4.setFormula(st4match);
uvbulb.setFormula(uvbulbmatch);
ht1.setFormula(ht1match);
ht2.setFormula(ht2match);
ht3.setFormula(ht3match);
ht4.setFormula(ht4match);
mod1.setFormula(mod1match);
mod2.setFormula(mod2match);
mod3.setFormula(mod3match);
mod4.setFormula(mod4match);
uvmod.setFormula(uvmodmatch);
ser1.setFormula(ser1match);
ser2.setFormula(ser2match);
ser3.setFormula(ser3match);
ser4.setFormula(ser4match);
uvser.setFormula(uvsermatch);
lcd1.setFormula(lcd1match);
lcd2.setFormula(lcd2match);
lcd3.setFormula(lcd3match);
lcd4.setFormula(lcd4match);
uvlcdr.setFormula(uvlcdrmatch);
wellloc.setFormula(welllocmatch);
wellyear.setFormula(wellyearmatch);
welldepth.setFormula(welldepthmatch);
wellGPM.setFormula(wellGPMmatch);
wellcasing.setFormula(wellcasingmatch);
pumpdate.setFormula(pumpdatematch);
pumpsize.setFormula(pumpsizematch);
presstankdate.setFormula(presstankdatematch);
presstanksize.setFormula(presstanksizematch);
systemnotes.setFormula(systemnotesmatch);
iron.setFormula(ironmatch);
manganese.setFormula(manganesematch);
pH.setFormula(pHmatch);
hardness.setFormula(hardnessmatch);
arsenic.setFormula(arsenicmatch);
radon.setFormula(radonmatch);
uranium.setFormula(uraniummatch);
lead.setFormula(leadmatch);
chloride.setFormula(chloridematch);
nitrate.setFormula(nitratematch);
fluoride.setFormula(fluoridematch);
bacteria.setFormula(bacteriamatch);
tannins.setFormula(tanninsmatch);
other.setFormula(othermatch);
smell.setFormula(smellmatch);
citywater.setFormula(citywatermatch);
labtestfreq.setFormula(labtestfreqmatch);
saltdelfreq.setFormula(saltdelfreqmatch);
saltqty.setFormula(saltqtymatch);
lastlabdate.setFormula(lastlabdatematch);
lastsaltdate.setFormula(lastsaltdatematch);
callaheadbox.setFormula(callaheadboxmatch);

}

只是想确保您了解这些行没有 return 值。他们return一个范围。

var name = sheet.getRange("C9");
var allnames = filters.getRange("A2");
var address=sheet.getRange("C11");

如果你想让它们return一个值,那么这样写:

var name = sheet.getRange("C9").getValue();
var allnames = filters.getRange("A2").getValue();
var address=sheet.getRange("C11").getValue();

查看这些参考资料:

  1. GetValue()
  2. getValues()

获取值是连续单元格范围的首选方法,因为它们 return 是可以快速访问的二维数组。并且经常在循环脚本中提供 10 倍的性能改进。

所以我处理过很多格式问题,并认为未找到引用与复制时数据的格式有关。我对 sheet 中的所有单元格应用了相同的格式,它似乎已经解决了这个问题。感谢库珀的投入。