Excel技巧:如何基于多列“Yes”返回对应行
按指定标题组合筛选含"Yes"的行解决办法
一、Excel里的操作方式
1. 单标题筛选(比如提取Heading1为"Yes"的所有行)
最直接用自带筛选功能:
- 点击表格任意单元格,按快捷键
Ctrl+Shift+L开启筛选 - 点击Heading1列的下拉箭头,只勾选"Yes"选项即可
也可以用公式标记目标行:在空白列(比如H列)的H2单元格输入=IF(A2="Yes",ROW(),""),下拉填充后,筛选H列的非空值,对应的行就是你要的结果。
2. 多标题同时满足(比如Heading2和Heading3均为"Yes")
方法1:组合筛选
开启筛选后,先在Heading2列勾选"Yes",再在Heading3列勾选"Yes",系统会自动保留同时符合两个条件的行。
方法2:公式标记
在空白列的首行(比如H2)输入=IF(AND(B2="Yes",C2="Yes"),"符合",""),下拉填充后,筛选该列的"符合"值即可。如果要换其他组合(比如Heading5和Heading6),把公式里的B2、C2换成对应列的单元格(E2、F2)就行。
二、Python(Pandas)实现方式
假设你已经将表格数据读取到了DataFrame对象df中:
1. 单标题筛选
# 提取Heading1为"Yes"的行 result = df[df['Heading1'] == 'Yes'] print(result)
2. 多标题同时满足
# 提取Heading2和Heading3均为"Yes"的行 result = df[(df['Heading2'] == 'Yes') & (df['Heading3'] == 'Yes')] print(result) # 提取Heading5和Heading6均为"Yes"的行 result = df[(df['Heading5'] == 'Yes') & (df['Heading6'] == 'Yes')] print(result)
如果需要频繁切换不同的标题组合,可以写一个通用函数:
def filter_by_headers(df, target_headers): # target_headers是要筛选的标题列表,比如['Heading2', 'Heading3'] condition = True for header in target_headers: condition = condition & (df[header] == 'Yes') return df[condition] # 调用示例:筛选Heading5和Heading6均为"Yes"的行 result = filter_by_headers(df, ['Heading5', 'Heading6'])
内容的提问来源于stack exchange,提问作者user114790
相关产品推荐
相关产品推荐

