是否有一种方法可以在将新项目设置(添加)到数据库时自动填充电子表格中的新单元格,以最大限度地减少数据输入和管理时间?
如果我没有正确解释自己,电子表格新手,请提前道歉。
例如:当从主 FC 中放入一个新项目时:数据库,第 498 行。
是否可以自动填充第 151 行的 FC:Master Gantt?无需手动输入单元格的方程式 以及更新 FC:第 122 行的项目时间表 B?
我正在尝试为我们的车间创建一个最适合我们的操作系统,而不是购买可能无法涵盖我们处理工作方式的软件。 我做了一些研究,看起来可能涉及一些编码脚本。我对 HTML 和 Javascripts 有一些了解。但严重依赖观看 youtube 并向谷歌社区寻求助手。感谢您的帮助。
谢谢!
我还没试过
请将此答案视为在各种工作表之间建立链接的方法的基础。
答案分为两部分:
主甘特图 - 形式
客户:
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0),3)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0),4)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1+1,7)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1+1+1,7)
预定完成时间:
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1+1,8)
=index('FC: DATABASE'!$A$1:$J$1000,match(C11,'FC: DATABASE'!$B$1:$B$1029,0)+1+8+4+4+8+1+1+1,8)
剧本——需要考虑的问题:
当创建新项目的过程完成时,如何定义EXACTLY?可以说是当用户在数据库|B 列中输入工作编号时。但是如果他们打错了字,或者从另一行复制/粘贴等等,该怎么办
获得更多控制权的另一种方法可能是插入一个复选框(比如在数据库|L 列中),当项目详细信息最终确定时,用户会选中该框。
onEdit()
脚本“监视”L 列,如果/当它找到新选中的框时,它会运行脚本的其余部分。
function onEdit(e) {
// Logger.log(JSON.stringify(e)) DEBUG
var sourceSheetName = "FC: DATABASE"
// test for an edit in the database, in Column L and value = "TRUE"
if(e.range.getSheet().getName() !== sourceSheetName || e.range.columnStart !== 12 || e.value !== "TRUE"){
// doesn't meet criteria - do nothing
// Logger.log("DEBUG: dont run the script")
return
}
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sourceSheet = ss.getSheetByName(sourceSheetName)
var editedrow = e.range.rowStart
var projectNumberRange = sourceSheet.getRange(editedrow,2)
var projectNumber = projectNumberRange.getValue();
// Logger.log("DEBUG: the project number range = "+projectNumberRange.getA1Notation()+", project number: "+projectNumber)
// row increment between ranges on Master Gantt
var rowDepth = 9
var colStart = 1 //A
var colWidth = 17 // Q
var colPrjNum = 3 // Project Number = column 3 (C)
var fcMGName = "FC:Master Gantt"
var fcMG = ss.getSheetByName(fcMGName)
// get the last cell in Column C
var fcMGLastCell = fcMG.getRange(fcMG.getLastRow(),colPrjNum)
//Logger.log("DEBUG: Last Cell:"+fcMGLastCell.getA1Notation())
// Up arrow to find the next cell with a value
var fcMGLastProjectNbr = fcMGLastCell.getNextDataCell(SpreadsheetApp.Direction.UP);
//Logger.log("DEBUG: :Last project cell: "+fcMGLastProjectNbr.getA1Notation()+", row = "+fcMGLastProjectNbr.getRow())
var fcLastProject = fcMG.getRange(fcMGLastProjectNbr.getRow(),colStart,rowDepth,colWidth)
// Logger.log("DEBUG: last project range: "+fcLastProject.getA1Notation())
// adjust by 9 rows for the next blank project number
var nextmsFGProject = fcMG.getRange(+fcMGLastProjectNbr.getRow()+rowDepth,colPrjNum)
//Logger.log("DEBUG: Range for the next project number : "+nextmsFGProject.getA1Notation())
// the formula to reference the Project Number on the Edited Row
var formula = "='"+sourceSheetName+"'!"+projectNumberRange.getA1Notation()
// Logger.log(formula) // DEBUG
// set the formula to pick up the project number from the edited row in the database.
nextmsFGProject.setFormula(formula);
}