【发布时间】:2025-12-20 02:15:09
【问题描述】:
我正在使用带有 Google 脚本的 Google 表格,我想在用户输入数字时插入行,而无需在脚本编辑器上运行代码。因此,如果我更改所选单元格上的值,代码应该会自动运行,这不会发生。到目前为止,这是我的代码:
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 + ':')
}
}
这在没有自动部分的情况下工作,但不是插入行,而是覆盖已经写入这些单元格的数据。我想维护这些数据...
我尝试的另一种方法是在计算机上将 VBA 编辑器与 Excel 一起使用,但也存在类似问题。如果在所需单元格上写的不是“安排”,它就不会运行;如果已经有“安排”,它会继续计数。这不是我想要的......如果我选择“3”然后选择“5”,它应该只显示从 1 到 5 而不是从 1 到 8 的排列。它应该插入行而不会丢失写入的数据之前。
@Tom 的代码:
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
有人可以帮帮我吗?对这两种语言一无所知!
【问题讨论】:
-
你可以用谷歌脚本来做到这一点。无需 Excel
-
在 Javascript 中?如何从单元格中获取值?
-
我从未使用过 Google 表格,所以不知道是否可行,但我会接受 @Tom 的说法。在 VBA 中,只需使用 excel range.formula .. 即
Thisworkbook.Worksheets("Sheet1").Range("A1").Formula = "=SUM(A2:A5)"
标签: javascript vba excel google-sheets