【问题标题】:Excel or Google sheet cell value create in a different cellExcel 或 Google 工作表单元格值在不同的单元格中创建
【发布时间】:2020-11-02 15:23:25
【问题描述】:
我在 Excel / Google 工作表中有一个要求,如果我第一次在 A1 中输入文本,则该值应自动填充到 B1 中,如果我编辑 A1 则更新值应该在B2 中自动填充,A1 的下一次更新应该在B3 中自动填充,依此类推.. 不会删除已经创建的 B 列值。
实际上正在为APPSHEET 设置数据库。
【问题讨论】:
标签:
excel
google-apps-script
google-sheets
excel-formula
google-sheets-formula
【解决方案1】:
我刚刚在下面尝试过,似乎也可以工作:
function onEdit(evt){
var a1Value = SpreadsheetApp.getActive().getSheetByName('forum').getRange('A1').getValue();
for(var i =1;i<11;i++){
var b1Obj = SpreadsheetApp.getActive().getSheetByName('forum').getRange('B'+i);
if(b1Obj.getValue() == ''){
b1Obj.setValue(a1Value);
SpreadsheetApp.getActive().getSheetByName('forum').getRange('A1').setValue('');
break;
}
}
}
【解决方案2】:
对于 Excel
在工作表代码区放置以下事件宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A1 As Range, N As Long, B1 As Range
Set A1 = Range("A1")
Set B1 = Range("B1")
If Intersect(Target, A1) Is Nothing Then Exit Sub
Application.EnableEvents = False
If B1.Value = "" Then
B1.Value = A1.Value
Else
N = Cells(Rows.Count, "B").End(xlUp).Row + 1
Cells(N, "B").Value = A1.Value
End If
Application.EnableEvents = True
End Sub
代码支持保存对单元格A1所做更改的历史记录。
因为是工作表代码,所以安装非常容易,自动使用:
- 右键单击 Excel 窗口底部附近的选项卡名称
- 选择查看代码 - 这将打开一个 VBE 窗口
- 粘贴内容并关闭 VBE 窗口
如果您有任何疑虑,请先在试用工作表上进行尝试。
如果您保存工作簿,宏将与它一起保存。
如果您使用的是 2003 年以后的 Excel 版本,则必须保存
文件为 .xlsm 而不是 .xlsx
要删除宏:
- 如上所示打开 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能正常工作!