首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VLOOKUP与IMPORTHTML

VLOOKUP与IMPORTHTML
EN

Web Applications用户
提问于 2019-02-04 14:09:19
回答 1查看 367关注 0票数 1

我在IMPORTHTML函数生成的一些数据上使用VLOOKUP发布了Google脚本。

对于正常的用户交互,这似乎不是一个问题,但是访问VLOOKUP单元的脚本偶尔会返回#N/A,即使您可以清楚地看到单元格和VLOOKUP数据中的数据。这种情况似乎发生在使用纸张超过20分钟后。我会说大约有20%的时间会发生这种情况。

强制IMPORTHTML刷新有50到50的机会解决问题,有时您需要做两次。如果不起作用,我们就关闭并重新打开工作表。

我从一个非常简单的"theSheet.getRange(theRow,10).getDisplayValue()“脚本调用中提取数据,并且确信theRow被正确地设置为一个真实的行。

有没有其他人看到这一点,你能给出一个可行的解决方案吗?

RawData选项卡隐藏的数据来自"IMPORTHTML("http://www.foobar.org/Ajax.php?Act=7","table",2)“具有命名范围的CustData,最后如下所示:

vlookup只是"=vlookup( A7,RawData!K:L,2,true)“,A7是一个数据验证下拉列表。

获取#N/A的代码是从CustomerSSID触发器调用的以下代码段中的OnEdit :属性:

代码语言:javascript
复制
var theData =
{
  DSAmClean: PropertiesService.getUserProperties().getProperty('DSAmClean'),
  ServerIP: theSheet.getRange('ServerIP').getDisplayValue(),
  ServerPort: theSheet.getRange('ServerPort').getDisplayValue(),
  SheetName: theSheet.getName(),
  Row: theRow, 
  Col: theCol,
  Notes: theNotes,
  colTitle: theSheet.getRange(2,theCol).getValue(),
  cellValue: theSheet.getRange(theRow,theCol).getDisplayValue(),
  DeliveryDate: theSheet.getRange(theRow,1).getDisplayValue(),
  CustomerName: theSheet.getRange(theRow,2).getDisplayValue(),
  CustomerSSID: theSheet.getRange(theRow,3).getValue(),
  ProdSSID: theSheet.getRange(theRow,4).getDisplayValue(),
  ProductShipped: theSheet.getRange(theRow,5).getDisplayValue().toString(),
  ContractSales: theSheet.getRange(theRow,6).getDisplayValue(),
  OriginPoint: theSheet.getRange(theRow,7).getDisplayValue(),
  VendorName: theSheet.getRange(theRow,8).getDisplayValue(),
  VendorSSID: getSSIDFromVendorName(theSheet.getRange(theRow,8).getDisplayValue()),
  Margin: theSheet.getRange(theRow,9).getValue(),
  FOBPrice: theSheet.getRange(theRow,10).getValue(),
  PurchaseContract: theSheet.getRange(theRow,11).getDisplayValue(),
  LoadNumber: theSheet.getRange(theRow,12).getDisplayValue(),
  TruckingCompany: theSheet.getRange(theRow,13).getDisplayValue(),
  TruckingRate: theSheet.getRange(theRow,14).getValue(),
  ShippingWeight: theSheet.getRange(theRow,15).getValue(),
  FreightTotal: theSheet.getRange(theRow,16).getValue()
}

当然,第3列包含Vlookup。

EN

回答 1

Web Applications用户

回答已采纳

发布于 2019-02-04 23:47:01

我认为,在像您这样的情况下,最可靠的方法是避免使用诸如IMPORTHTML、IMPORTRANGE等函数,因为它们不会在每次重新计算时刷新,或者在依赖于这些公式的结果的行代码之前强制“刷新”相应的公式。

票数 0
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/124954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档