Google脚本或VBA – inputinput值时插入行(Excel)

我正在使用Google表格和Google脚本,我希望在用户input数字时插入行,而不需要在脚本编辑器上运行代码。 所以,如果我改变所选单元格的值,代码应该自动运行,这是不会发生的。 这是我的代码到目前为止:

function PopulateColumn() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; for (i = 1; i<=SpreadsheetApp.getActiveSheet().getRange(9,2).getValue(); i++) { sheet.insertRowsAfter(11, SpreadsheetApp.getActiveSheet().getRange(9,2).getValue()) SpreadsheetApp.getActiveSheet().getRange(i+10,1).setValue('Arrangement ' + i + ':') } } 

这是工作没有自动部分,而不是插入行,它覆盖已经写在这些单元格上的数据。 我想保留这些数据…

另一种方法,我试图在计算机上使用Excel的VBA编辑器,但也有类似的问题。 如果在希望的单元格上写有比“安排”更多的东西,它就不会运行。 如果已经有了“安排”,它就会继续计数。 这不是我想要的…如果我select“3”,然后select“5”,它应该只显示从1到5而不是从1到8的排列。并且它应该插入行而不丢失写入的数据之前。

@汤姆的代码:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long Dim StartingRow As Long Dim StartingArrangement As Long If Not Intersect(Target, Me.Cells(1, 2)) Is Nothing Then With Me StartingRow = .Cells(.Rows.Count, 1).End(xlUp).Row If StartingRow < 3 Then StartingRow = 2 Else StartingArrangement = CLng(Trim(Replace(Replace(.Cells(StartingRow, 1), "Arrangement ", vbNullString), ":", vbNullString))) End If For i = 1 To .Cells(1, 2).Value2 .Cells(StartingRow, 1).Offset(i, 0).Value2 = "Arrangement " & StartingArrangement + i & ":" Next i End With End If End Sub 

有人可以帮我吗? 对这两种语言一无所知!

两者都在单元格B1input并填充列A

谷歌脚本方法:select工具 – >脚本编辑器注意我没有更新GS脚本后的意见,因为似乎没有兴趣

 function PopulateColumn() { for (i = 1; i<=SpreadsheetApp.getActiveSheet().getRange(1,2).getValue(); i++) { SpreadsheetApp.getActiveSheet().getRange(i,1).setValue('Arrangement ' + i + ':') } } 

VBA方法:在“Microsoft Excel对象”下方左侧的VBA编辑器中,可以find工作表对象。 将其粘贴到您希望填充的表单中

 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long Dim StartingRow As Long Dim StartingArrangement As Long If Not Intersect(Target, Me.Cells(1, 2)) Is Nothing Then With Me StartingRow = .Cells(.Rows.Count, 1).End(xlUp).Row If StartingRow < 3 Then StartingRow = 2 Else StartingArrangement = CLng(Trim(Replace(Replace(.Cells(StartingRow, 1), "Arrangement ", vbNullString), ":", vbNullString))) End If For i = 1 To .Cells(1, 2).Value2 .Cells(StartingRow, 1).Offset(i, 0).Value2 = "Arrangement " & StartingArrangement + i & ":" Next i End With End If End Sub