【问题标题】:Entering Data into Last row of specific Column with "Else If"使用“Else If”将数据输入特定列的最后一行
【发布时间】:2020-11-18 02:26:18
【问题描述】:

我正在尝试在 google 表格中执行以下操作:

问题一:

单元格 B2、B3 和 B4 包含我要复制到 C、D 和 E 列最后一行的数据

下面的代码可以正常工作,它只是获取工作表的最后一行,我无法将其本地化到这些列。

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sinput = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
  var soutput = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
  var input = sinput.getRange(2, 2, 3).getValues();
  sinput.getRange(3,2, 2).clear();
  var flatin = [].concat.apply([], input);
  soutput.getRange(soutput.getLastRow()+1, 3,1,3).setValues([flatin]);
  soutput.insertRowAfter(soutput.getLastRow());
  Logger.log(input); 

问题 2:

我在 B1 单元格中做了一个下拉菜单,其中包含“选项 1”和“选项 2”

我想用它做一个 if/else。唯一的区别是数据将转到“选项 1”的 C、D 和 E 列的最后一行,或者转到“选项 2”的 G、H 和 I 列的最后一行。下面的代码看起来可以工作,但我真的不认识这种语言。是为了excel吗?无论哪种方式,我觉得这两者都很接近,但我完全不知道如何实现它们。任何帮助是极大的赞赏。谢谢,祝您有美好的一天。

If optMemberName.Value = True Then
    With Sheets("Sheet1")
        Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row) = txtMemberName.Text
    End With
ElseIf optMemberID.Value = True Then
    With Sheets("Sheet1")
        Range("B" & .Cells(.Rows.Count, "B").End(xlUp).Row) = txtMemberID.Text
    End With
End If

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    说明/问题:

    • 对于第一个问题,我认为问题与soutput.getLastRow() 行有关。后者获取整个工作表中包含内容的最后一行。这意味着如果工作表中包含内容的最后一行在 A 列中,例如在单元格A500 中,那么无论最后一行 C、D 或 E 是否不同,上述表达式都会给你500。假设 C、D 和 E 的最后一行内容相同,您可以使用this 方法查找特定列的最后一行。

    • 对于第二个问题,您发布的代码与javascript无关。您可以看到您发布的两个代码 sn-ps 在结构和格式方面大不相同。但是逻辑有点像。您需要一个if 条件来检查单元格B1 是否包含"Option 1" 或"Option 2",并根据此值粘贴到相应的范围。

    • 我还稍微优化了您的代码。因为sinput 和soutput 关注的是同一张表,所以没有理由使用两个不同的变量。您可以只使用一个并将其命名为sheet。我还看到了一些您在目标描述中没有描述的代码行。我删除了您清除一些值的行和您添加额外行的行。随意添加这些,但要尊重脚本的逻辑。

    解决方案:

    function myFunction() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
      var input = sheet.getRange(2, 2, 3).getValues().flat(); 
      
      var option = sheet.getRange('B1').getValue();
      
      if (option == 'Option 1'){
      var Lrow = sheet.getRange('C:C').getValues().filter(String).length+1;
      sheet.getRange(Lrow, 3,1,3).setValues([input]);
      sheet.insertRowAfter(sheet.getLastRow());
      }
      
      else {
      var Lrow = sheet.getRange('G:G').getValues().filter(String).length+1;
      sheet.getRange(Lrow, 7,1,3).setValues([input]);
      sheet.insertRowAfter(sheet.getLastRow());
      }
      
    }
    

    【讨论】:

    • 感谢您的澄清。我很欣赏这种煽动,现在代码对我来说很有意义。
    猜你喜欢
    • 1970-01-01
    • 2014-04-13
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多