Excel如何把符合多条件的多条数据全部提取出来

今天跟大家分享一下Excel如何把符合多条件的多条数据全部提取出来。

如下图是某学校某次竞赛成绩表,现在想要将所有一年级2班的学生名单及成绩提取出来。

在F2单元格输入公式=INDEX(C:C,SMALL(IF(($A$2:$A$36=$F$1)*($B$2:$B$36=$G$1),ROW($2:$36),4^8),ROW(A1)))&""然后按下Ctrl+shift+enter三键结束,最后下拉填充直至出现空白单元格为止。

在G2单元格输入公式=INDEX(D:D,SMALL(IF(($A$2:$A$36=$F$1)*($B$2:$B$36=$G$1),ROW($2:$36),4^8),ROW(B1)))&""同样按下Ctrl+shift+enter三键结束,最后下拉填充直至出现空白单元格为止。这样就把1年级1班的学生名单及成绩全部提取出来了。

首先是if函数,它是Excel中常用的条件函数,根据指定的条件来判其“真”(TRUE)、“假”(FALSE),根据逻辑计算的真假值,从而返回相应的内容。可以使用函数 IF 对数值和公式进行条件检测

IF(($A$2:$A$36=$F$1)*($B$2:$B$36=$G$1),ROW($2:$36),4^8)在本文中的意思就是当年级为1年级且班级为2班时,返回其对应的行号,否则返回4^8的结果65536。最后得到一个有大量数字组成的内存数据组,为了方便大家理解我将这组数据放到E列中,如下图

接着是SMALL函数和row函数,small函数作用是返回数据第K个最小值,row函数则是返回参数的行号。SMALL(IF(($A$2:$A$36=$F$1)*($B$2:$B$36=$G$1),ROW($2:$36),4^8),ROW(A1))则是依次返回上一步所说的内存数据组的第1,第2,第3……个最小值。在单元格中输入=SMALL($E$2:$E$36,ROW(A1))其返回结果如下图。

然后是INDEX函数,它是返回表或区域中的值或值的引用。它的语法结构是INDEX(单元格区域,行号,列号),因此他在本文中的作用就是返回small函数提供的行号所对应的姓名或者成绩。在单元格中输入公式=INDEX(C:C,F2),其返回结果如下图。

### 使用 DeepSeek 提取并合并多个 Excel 文件中的数据 为了实现从多个 Excel 文件的特定位置提取数据并将这些数据合并到一个文档中,可以采用 Python 的 `pandas` 库来操作 Excel 数据。虽然提到的技术报告主要讨论 LAM 模型训练及其影响[^1],这里将专注于提供一种通用方法论用于处理 Excel 文件。 #### 方法概述 通过编写脚本读不同路径下的 Excel 文件,在指定列或单元格范围内获所需的数据片段,并最终把这些片段汇总成一个新的 DataFrame 对象保存下来作为单一输出文件的一部分。 #### 实现步骤说明 以下是具体实现方式: - 安装必要的库:确保安装了 pandas 和 openpyxl 这两个包; - 准备输入参:定义好要遍历的目标目录以及目标工作表名称、起始结束行列号等信息; - 编写函逻辑:创建循环结构依次打开每一个符合条件的工作簿对象,从中抽相应范围内的值存入列表变量里; - 合并结果集:当所有源文件都被访问过后,把收集起来的内容转换为 Pandas DataFrames 并追加至总的结果集中; - 输出最终产物:将以 DataFrame 形式的综合报表导出为新的 Excel 文档。 #### 示例代码 下面给出一段基于上述描述编写的 Python 脚本实例: ```python import os import pandas as pd def extract_data_from_excel(file_path, sheet_name='Sheet1', start_row=0, end_row=None, cols=None): """ 从给定的Excel文件中提取指定区域的数据: file_path (str): Excel文件的位置. sheet_name (str): 工作表的名字,默认'Sheet1'. start_row (int): 开始行索引(含), 默认0表示第一行. end_row (int or None): 结束行索引(不含),默认None代表最后一行. cols (list of str or int): 列名或者列编号组成的列表. 返回: DataFrame: 所选区域内包含的数据. """ df = pd.read_excel(file_path, sheet_name=sheet_name, usecols=cols) if not isinstance(end_row, type(None)): return df.iloc[start_row:end_row] return df.iloc[start_row:] # 设置根目录和其他配置项 root_directory = './excels/' # 存放待处理excel文件夹路径 output_file = 'combined_output.xlsx' # 新建用来存储合并后的文件名 target_sheet = 'Data' # 需要读的工作表标签页名字 start_line = 2 # 表头之后的第一条记录所在行(假设首行为标题) column_range = ['A','B'] # 关心哪些字段所在的字母区间 all_files_df_list = [] for filename in os.listdir(root_directory): fullpath = os.path.join(root_directory,filename) try: temp_df = extract_data_from_excel(fullpath,target_sheet,start_line,None,column_range) all_files_df_list.append(temp_df) except Exception as e: print(f"Error processing {filename}: ",e) final_result = pd.concat(all_files_df_list,axis=0).reset_index(drop=True) with pd.ExcelWriter(output_file) as writer: final_result.to_excel(writer,sheet_name="Merged",index=False) ``` 此段程序会扫描指定文件夹内所有的 .xlsx 类型文件,按照预设条件筛选有用的信息点,最后将其整合在一起形成一份完整的表格资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值