如何根据一张 header 合并两张纸的数据
How to combine data from 2 sheets based on one header
如果这是数据库
这是从其他系统导出的数据
创建此代码与员工姓名和职位相匹配的报告的最短方法是什么?
真实的数据库很大,每个月手动处理需要几天时间。
我尝试过的东西
- 数据透视表。问题是它不从多个 sheets
中获取数据
- 将员工姓名与他在系统上的代码 [Name1 - a123] 结合起来。问题是系统不接受员工姓名中的数字
- Google 了解合并表格的方法。找不到解决我的具体挑战的资源。
示例 sheet:https://docs.google.com/spreadsheets/d/1rpd8hVGPOPwFWCIOX6LzyhvvcacufBEkjj-927VajgY/
在报告的 G1 sheet 我输入了
=INDEX(IFERROR({VLOOKUP('System Export'!A1:A, {Database!C1:C, Database!A1:C}, {2, 3, 4}, 0), 'System Export'!B1:C}))
看看这对你有用吗?
Google Apps 脚本:
/**
* Merges the contents of the Database and System Export sheets into the Report sheet.
*
* @customfunction
*/
function mergeSheets() {
// Get the spreadsheet
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Get the sheets you want to work with
let database = spreadsheet.getSheetByName('Database');
let system = spreadsheet.getSheetByName('System Export');
if ((database || system) === null)
throw new Error("1 or more requested sheets don't exist.");
// Get sheet values
let databaseValues = database.getRange('$A:$C')
.getValues();
let systemValues = system.getRange('$A:$C')
.getValues();
if ((databaseValues.length || systemValues.length) < 1)
throw new Error('1 or more requested sheets are blank.');
// Merge values
let reportValues = [];
for (let i in databaseValues)
for (let j in systemValues)
if (databaseValues[i][2] == systemValues[j][0])
reportValues.push([
databaseValues[i][0],
databaseValues[i][1],
databaseValues[i][2],
systemValues[j][1],
systemValues[j][2]
]);
return reportValues;
}
您可以将其粘贴到 Google 表格中的 built-in 脚本编辑器中。在报表 sheet 的 top-left (non-header) 单元格内使用公式 =mergeSheets() 瞧!
如果这是数据库
这是从其他系统导出的数据
创建此代码与员工姓名和职位相匹配的报告的最短方法是什么?
真实的数据库很大,每个月手动处理需要几天时间。
我尝试过的东西
- 数据透视表。问题是它不从多个 sheets 中获取数据
- 将员工姓名与他在系统上的代码 [Name1 - a123] 结合起来。问题是系统不接受员工姓名中的数字
- Google 了解合并表格的方法。找不到解决我的具体挑战的资源。
示例 sheet:https://docs.google.com/spreadsheets/d/1rpd8hVGPOPwFWCIOX6LzyhvvcacufBEkjj-927VajgY/
在报告的 G1 sheet 我输入了
=INDEX(IFERROR({VLOOKUP('System Export'!A1:A, {Database!C1:C, Database!A1:C}, {2, 3, 4}, 0), 'System Export'!B1:C}))
看看这对你有用吗?
Google Apps 脚本:
/**
* Merges the contents of the Database and System Export sheets into the Report sheet.
*
* @customfunction
*/
function mergeSheets() {
// Get the spreadsheet
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Get the sheets you want to work with
let database = spreadsheet.getSheetByName('Database');
let system = spreadsheet.getSheetByName('System Export');
if ((database || system) === null)
throw new Error("1 or more requested sheets don't exist.");
// Get sheet values
let databaseValues = database.getRange('$A:$C')
.getValues();
let systemValues = system.getRange('$A:$C')
.getValues();
if ((databaseValues.length || systemValues.length) < 1)
throw new Error('1 or more requested sheets are blank.');
// Merge values
let reportValues = [];
for (let i in databaseValues)
for (let j in systemValues)
if (databaseValues[i][2] == systemValues[j][0])
reportValues.push([
databaseValues[i][0],
databaseValues[i][1],
databaseValues[i][2],
systemValues[j][1],
systemValues[j][2]
]);
return reportValues;
}
您可以将其粘贴到 Google 表格中的 built-in 脚本编辑器中。在报表 sheet 的 top-left (non-header) 单元格内使用公式 =mergeSheets() 瞧!