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

如何创建函数:匹配特定行值并返回对应Job列的首行编号

多条件匹配查找符合条件的Job编号

需要实现一个功能:根据指定的多个行-值条件(比如Type: Small、Flavour: Apple),从表格中筛选出所有满足所有条件的列,返回这些列的首行标签(如Job 1、Job 5这类)。

Excel 公式实现

假设数据区域为A1:G5(A列为行标签,第一行为Job编号),以下是两种实现方式:

固定条件行顺序的公式

适用于条件对应的行顺序固定的场景,比如先匹配Type行,再匹配Flavour行:

=TEXTJOIN(" & ", TRUE, IF(MMULT(--(B2:G5=TRANSPOSE(H2:H3)), ROW(INDIRECT("1:"&ROWS(H2:H3)))^0)=ROWS(H2:H3), B1:G1, ""))
  • 使用说明:在H2:H3中依次输入对应行的匹配值,比如H2填Small(对应Type行)、H3填Apple(对应Flavour行),输入公式后按Ctrl+Shift+Enter完成数组公式输入。

灵活指定条件行的公式

支持任意顺序的条件,不用固定行顺序:

=TEXTJOIN(" & ", TRUE, IF(MMULT(--(B2:G5=XLOOKUP(I2:I3,A2:A5,B2:G5)), ROW(INDIRECT("1:"&ROWS(I2:I3)))^0)=ROWS(I2:I3), B1:G1, ""))
  • 使用说明:在I列填条件对应的行标签(如I2填Type、I3填Flavour),J列填对应的值(J2填Small、J3填Apple),公式会自动匹配对应行的条件。

Python 实现

如果用编程方式处理,推荐使用pandas库,代码如下:

import pandas as pd

# 构建示例数据(实际使用时可直接读取Excel/CSV文件)
data = {
    "": ["Type", "Colour", "Style", "Flavour"],
    "Job 1": ["Small", "Red", "Round", "Apple"],
    "Job 2": ["Medium", "Blue", "Square", "Banana"],
    "Job 3": ["Medium", "Green", "Scallop", "Orange"],
    "Job 4": ["Large", "Green", "Square", "Banana"],
    "Job 5": ["Small", "Red", "Round", "Apple"],
    "Job 6": ["Large", "Yellow", "Square", "Apple"]
}
df = pd.DataFrame(data).set_index("")

def find_matched_jobs(conditions):
    # 初始化筛选掩码,默认所有列都符合
    match_mask = pd.Series(True, index=df.columns)
    # 遍历所有条件,逐步缩小筛选范围
    for row_label, target_value in conditions.items():
        match_mask &= df.loc[row_label] == target_value
    # 提取符合条件的Job编号并拼接成指定格式
    matched_jobs = df.columns[match_mask].tolist()
    return " & ".join(matched_jobs)

# 测试示例:匹配Type=Small且Flavour=Apple的Job
test_conditions = {"Type": "Small", "Flavour": "Apple"}
print(find_matched_jobs(test_conditions))  # 输出:Job 1 & Job 5
  • 使用说明:只需将conditions字典替换为自己需要的行标签和对应值,即可返回所有符合条件的Job编号,支持添加任意数量的条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:37:29