首页 > 解决方案 > 如果相邻单元格不为空,则复制单元格值

问题描述

我有一张“旅行费用”表,其中所有来自不同货币的费用都通过 googlefinance 转换为美元。我需要将该金额复制到另一个单元格以形成月度报告,这样如果当月汇率发生显着变化,我就可以存储正确的金额。

基本上,如果 U 列中的单元格不是空白 => 将其复制到 V 中的相邻单元格。

https://docs.google.com/spreadsheets/d/1iBIg8b4BuUyHiuvogePyRbOhQuulp1rCtUMXHpN_YKuQ/edit#gid=1586216805

我将以下 scipt 用于:1)时间戳(完美运行)2)复制货币(可行,但不是我需要的)。

function onEdit(e)
{var ss = e.source.getActiveSheet();                                             
   if (ss.getName() != "123")      // i use this for testing 

{
 var actRng = ss.getActiveRange();                                           
 var editColumn = actRng.getColumn();                                        
 var rowIndex = actRng.getRowIndex();                                        
 var headers = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues();         
 var dateCol = headers[0].indexOf("Date of expence") + 1;                    
 var orderCol = headers[0].indexOf("Name") + 1;

 if (dateCol > 0 && rowIndex > 1 && editColumn == orderCol)                  
 {
  ss.getRange(rowIndex, dateCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "dd-MM-yy"));}
 }

{
var source = ss.getRange ("U3:U400");
source.copyTo (ss.getRange ("V3:V400"), {contentsOnly: true});}
}

我想这应该在 2 个不同的脚本中完成。这是我第一次使用谷歌脚本,所以对我来说很困惑)

将接受所有建议,提前谢谢!)

标签: google-apps-script

解决方案


尝试这个:

on Edit(e) {
  if(!e.range.getSheet().getRange(e.range.rowStart,23).isBlank()) {
    e.range.getSheet().getRange(e.range.rowStart,24).setValue(e.range.getSheet().getRange(e.range.rowStart,23).getValue())
}

推荐阅读