基于日期检索母鸡信息及对应赛事日的Google Sheets实现方案咨询
解决方案:Google Sheets按日期匹配母鸡与赛事编号
一、优先推荐:公式实现
1. 获取对应母鸡(标黄单元格需求)
假设待匹配日期在A2:A列,母鸡数据区域为D2:F(D=母鸡名,E=对应日期,F=赛事编号),使用XLOOKUP函数直接匹配,自动处理无匹配场景:
=XLOOKUP(A2, $E$2:$E$100, $D$2:$D$100, "无匹配")
- 说明:将公式输入第一个结果单元格(如B2),下拉填充即可批量应用。最后一个参数可改为
"",无匹配时显示空白。
2. 获取对应赛事日编号(橙色单元格需求)
同样用XLOOKUP直接通过日期匹配:
=XLOOKUP(A2, $E$2:$E$100, $F$2:$F$100, "无匹配")
若存在同一日期对应多只母鸡的场景,需结合母鸡名双重匹配,用FILTER+INDEX组合:
=IFERROR(INDEX(FILTER($F$2:$F$100, $D$2:$D$100=B2, $E$2:$E$100=A2), 1), "无匹配")
二、备用:Google Apps Script实现
如果公式无法覆盖复杂逻辑,可使用脚本批量处理:
function matchHenAndEvent() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const dateCol = sheet.getRange("A2:A" + sheet.getLastRow()).getValues(); const henData = sheet.getRange("D2:F" + sheet.getLastRow()).getValues(); const henResults = []; const eventResults = []; dateCol.forEach(dateRow => { const targetDate = dateRow[0]; let hen = "无匹配"; let eventNo = "无匹配"; henData.forEach(dataRow => { if (dataRow[1] && dataRow[1].getTime() === targetDate.getTime()) { hen = dataRow[0]; eventNo = dataRow[2]; } }); henResults.push([hen]); eventResults.push([eventNo]); }); sheet.getRange("B2:B" + sheet.getLastRow()).setValues(henResults); sheet.getRange("C2:C" + sheet.getLastRow()).setValues(eventResults); }
- 使用步骤:打开表格→点击「扩展程序」→「Apps Script」→粘贴代码并保存→运行函数即可自动填充结果。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

