You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VLOOKUP提取多列含Y项的列标题以生成培训课程列表

解决方案:提取职位对应的培训课程名称

方法1:用公式直接提取(适合静态查询场景)

假设「课程vs职位」工作表名为课程映射表,入职人员的职位信息在入职表的B2单元格:

Google Sheets 公式

=TEXTJOIN(", ", TRUE, QUERY(TRANSPOSE(课程映射表!A1:Z), "SELECT Col1 WHERE Col" & MATCH(B2, 课程映射表!A:A, 0) & " = 'Y' AND Col1 <> '职位名称'"))

核心逻辑:

  • MATCH(B2, 课程映射表!A:A, 0):定位目标职位在映射表A列的具体行号
  • TRANSPOSE将映射表转置,让课程名称变为第一列,便于筛选
  • QUERY筛选出对应职位列标注为Y的课程名,排除表头
  • TEXTJOIN把课程名用逗号拼接成易读的字符串

Excel 公式

=TEXTJOIN(", ", TRUE, IF(INDEX(课程映射表!B:Z, MATCH(B2, 课程映射表!A:A, 0), 0)="Y", 课程映射表!B1:Z1, ""))

旧版Excel输入后需按Ctrl+Shift+Enter触发数组公式,新版Excel直接回车即可。

方法2:集成到脚本中(适合自动导入时批量处理)

如果是用脚本处理前端表单提交,可在现有数据转移逻辑中加入以下代码:

Google Apps Script 示例

function getRequiredCourses(position) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("课程映射表");
  const data = sheet.getDataRange().getValues();
  const headers = data[0]; // 第一行是课程名称
  const positionRow = data.find(row => row[0] === position);
  
  if (!positionRow) return [];
  
  const courses = [];
  // 从第二列开始遍历(A列是职位)
  for (let i = 1; i < headers.length; i++) {
    if (positionRow[i] === "Y") {
      courses.push(headers[i]);
    }
  }
  return courses;
}

使用方式:在处理表单数据的函数中,拿到入职人员职位后调用该函数,得到课程数组,再通过courses.join(", ")转成字符串写入入职表对应单元格。

Excel VBA 示例

Function GetRequiredCourses(position As String) As String
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("课程映射表")
    Dim lastRow As Long, lastCol As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
    Dim rowNum As Long
    rowNum = 0
    On Error Resume Next
    rowNum = ws.Columns("A").Find(What:=position, LookIn:=xlValues, LookAt:=xlWhole).Row
    On Error GoTo 0
    
    If rowNum = 0 Then
        GetRequiredCourses = ""
        Exit Function
    End If
    
    Dim courses As String
    courses = ""
    For colNum = 2 To lastCol
        If ws.Cells(rowNum, colNum).Value = "Y" Then
            If courses <> "" Then courses = courses & ", "
            courses = courses & ws.Cells(1, colNum).Value
        End If
    Next colNum
    
    GetRequiredCourses = courses
End Function

使用方式:在导入数据的宏中调用该函数,获取课程字符串后写入对应单元格即可。

内容的提问来源于stack exchange,提问作者adbc83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:44:55