Excel数据检索省力小工具(文末附源码)

Excel数据检索省力小工具(文末附源码)

引言

​ 相信很多人都是用过VLOOKUP函数来检索和处理Excel数据。比如教师查看班级学生成绩表,想单独检索某个科目、某个学生,某一分数段(80~90分数段内的成绩);或者会计/财务想要统计某个薪资段内的工资等等。因此,Excel数据检索的使用场景和需求都非常迫切和可观。

01、VLOOKUP函数

VLOOKUP函数是Microsoft Excel中常用的查找函数之一,用于在一个指定的数据范围内查找某个特定值,并返回该值所在行或列的相关信息。以下是关于VLOOKUP函数的详细介绍:

语法:

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
  • lookup_value: 要查找的值,即要在数据范围中查找的目标值。
  • table_array: 包含要进行查找的数据范围,通常是一个表格或区域。
  • col_index_num: 指定要返回的值所在的列号。列号是相对于table_array的起始列的位置。
  • [range_lookup]: 可选参数,用于指定查找方式。如果为TRUE(或省略),则进行近似匹配(查找范围内最接近的值)。如果为FALSE,执行精确匹配(仅返回完全匹配的值)。

示例:

=VLOOKUP(A2, B2:E10, 3, FALSE)

在这个例子中,函数将查找单元格A2中的值在B2:E10范围内,返回该值所在行的第3列的内容。FALSE表示进行精确匹配。

注意事项:

  1. lookup_value必须位于第一列。
  2. 如果查找的值不存在,VLOOKUP将返回错误值#N/A。
  3. 在使用VLOOKUP函数时,确保数据范围是有序的,以获得正确的结果。

VLOOKUP函数在处理大量数据建立关联性时非常有用,例如在表格中查找员工编号并返回相应的姓名或查找产品代码并返回价格等。

02、工具介绍

在这里插入图片描述

​ 上图实现了一个使用PythonTkinter GUI库创建的Excel关键词检索小工具。它可以让用户选择一个Excel文件,并输入要搜索的关键词和要添加的底色。程序将遍历Excel文件中的每个单元格,如果它们包含了关键词,就会将底色设置为用户选择的颜色。最后,程序将Excel文件保存,并提示用户操作完成。

源代码如下:
import openpyxl
from tkinter import *
from tkinter import messagebox, simpledialog, filedialog
from openpyxl.styles import PatternFill

# 创建颜色映射字典
color_mapping = {
    '白色': 'FFFFFFFF',
    '红色': 'FFFF0000',
    '绿色': 'FF00FF00',
    '黄色': 'FFFFFF00',
    '洋红色': 'FFFF00FF',
    '深绿色': 'FF006400',
    '深黄色': 'FF808000',
    '深青色': 'FF008080',
}

# 创建弹出窗口
root = Tk()
root.title("Excel关键词检索小工具")
root.geometry("300x200")
root.resizable(False, False)

# Excel文件路径
excel_path = StringVar()
excel_path.set("未选择文件")


def select_excel_file():
    # 弹出文件选择对话框
    file_path = filedialog.askopenfilename(filetypes=[("Excel Files", "*.xlsx")])
    if file_path:
        excel_path.set(file_path)


# 选择Excel文件按钮和文件路径标签
frame = Frame(root)
frame.pack(pady=10)
Button(frame, text="选择Excel文件", command=select_excel_file).pack(side=LEFT, padx=10)
Label(frame, textvariable=excel_path).pack(side=LEFT)

# 关键词输入框和底色选择框放在同一行
input_frame = Frame(root)
input_frame.pack()

# 关键词输入框
Label(input_frame, text="关键词组检索:").pack(side=LEFT)
search_text = Entry(input_frame)
search_text.pack(side=LEFT, padx=5)

# 颜色选择框和提示标签放在同一行
color_frame = Frame(root)
color_frame.pack(pady=5)

# 颜色选择框
Label(color_frame, text="底色:").pack(side=LEFT)
colors = list(color_mapping.keys())
color_var = StringVar()
color_var.set(colors[0])
color_menu = OptionMenu(color_frame, color_var, *colors)
color_menu.pack(side=LEFT, padx=5)

# 提示标签
tip_label = Label(color_frame, text="(默认为白色)")
tip_label.pack(side=LEFT)


def search_and_fill():
    # 获取用户选择的Excel文件路径
    file_path = excel_path.get()
    if not file_path:
        messagebox.showerror("错误", "请选择Excel文件")
        return

    try:
        # 打开Excel文件
        wb = openpyxl.load_workbook(file_path)
        ws = wb.active

        # 获取用户输入的关键词和底色选择
        keyword = search_text.get()

        # 获取用户选择的底色
        color = color_var.get()

        # 检查是否选择了底色,如果未选择,将color_code设置为None
        color_code = color_mapping[color]

        # 遍历每一个单元格,如果其包含关键词,则添加底色
        for row in ws.iter_rows():
            for cell in row:
                if keyword in str(cell.value):
                    if color_code is not None:
                        fill = PatternFill(start_color=color_code, end_color=color_code, fill_type='solid')
                        cell.fill = fill
                    else:
                        cell.fill = None

        # 保存Excel文件
        wb.save(file_path)

        # 提示用户操作完成
        messagebox.showinfo("完成", "单元格颜色已更新")

    except Exception as e:
        messagebox.showerror("错误", str(e))


# 确认按钮
Button(root, text="确定", command=search_and_fill).pack(pady=10)

# 将弹出窗口置于屏幕中心
windowWidth = root.winfo_reqwidth()
windowHeight = root.winfo_reqheight()
positionRight = int(root.winfo_screenwidth() / 2 - windowWidth / 2)
positionDown = int(root.winfo_screenheight() / 2 - windowHeight / 2)
root.geometry("+{}+{}".format(positionRight, positionDown))

# 运行窗口循环
root.mainloop()

03、使用说明

在这里插入图片描述

​ 上述示例用户选择了本地桌面的Excel文件,对ARE关键词进行检索,同时选择将检索到的关键词单元格底色设置为想要的颜色,直观地反映意向操作数据,默认色系为白色,同时用户可以将其他底色的单元格设置为白色而实现底色清除的功能。

运行效果如下:

在这里插入图片描述

代码功能介绍:

以下是对代码功能的总结:

  1. 导入库:
    • 使用import openpyxl导入Openpyxl库,用于处理Excel文件。
    • 使用from tkinter import *导入Tkinter库的所有模块,包括messageboxsimpledialogfiledialog
  2. 颜色映射字典:
    • 创建了一个颜色映射字典color_mapping,将颜色的中文名映射为十六进制表示。
  3. 创建主窗口:
    • 使用Tkinter创建了一个主窗口,设置了窗口标题、大小和不可调整大小。
  4. 文件选择功能:
    • 创建了一个按钮和标签,用于选择Excel文件。
    • 使用filedialog.askopenfilename弹出文件选择对话框,获取用户选择的Excel文件路径。
  5. 关键词和底色输入框:
    • 创建了关键词输入框和底色选择框,用于用户输入关键词和选择底色。
  6. 搜索和填充功能:
    • 创建了一个按钮,点击后触发搜索和填充功能。
    • 打开用户选择的Excel文件,遍历每个单元格,查找包含关键词的单元格,然后根据用户选择的底色添加相应的填充。
  7. 保存并提示:
    • 保存修改后的Excel文件。
    • 弹出消息框提示用户操作完成或报告错误信息。
  8. 窗口居中:
    • 将弹出窗口置于屏幕中心。
  9. 窗口循环:
    • 使用root.mainloop()启动Tkinter窗口循环,使窗口保持运行状态。
      件,遍历每个单元格,查找包含关键词的单元格,然后根据用户选择的底色添加相应的填充。
  10. 保存并提示:
    • 保存修改后的Excel文件。
    • 弹出消息框提示用户操作完成或报告错误信息。
  11. 窗口居中:
    • 将弹出窗口置于屏幕中心。
  12. 窗口循环:
    • 使用root.mainloop()启动Tkinter窗口循环,使窗口保持运行状态。
      总体而言,这个小工具允许用户选择一个Excel文件,输入关键词和选择底色,然后在文件中查找包含关键词的单元格并进行底色填充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/341808.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全基础概念

目录 网络安全背景 网络空间安全 --- Cyberspace 常见的网络安全术语 协议栈自身的脆弱性: 常见安全风险: 物理层--物理攻击 物理设备窃听: 链路层-- MAC洪泛攻击: 链路层--ARP欺骗 网络层--ICMP攻击 传输层--TCP SYN Flood攻击: …

信息检索与数据挖掘 | (八)语言建模的IR

文章目录 📚语言生成模型📚平滑🐇线性插值平滑方法(Lelinek-Mercer)🐇dirichlet 平滑🐇Vector space(向量空间) vs BM25 vs LM 📚语言生成模型 传统的语言生成模型可以用于识别或生成…

南京观海微电子---时序分析基本概念(二)——保持时间

1. 概念的理解 以上升沿锁存为例,保持时间(Th)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如下图所示,一个数据要在上升沿被锁存,那么这个数据需要在时钟上升沿到来后的保持时间内保持稳定…

展会日记:ICCAD2023,Samtec连接器无处不在

【序言】 “作为重要的电子元器件,连接器在如今的数字与现实世界中,扮演了不可或缺的角色。Samtec作为全球知名的连接器厂商,在芯片到板、板到板、射频、光模块等领域都有着卓越表现~ 今年,我们更是将这种存在感在2023 ICCAD上&a…

Nginx 基础使用

目录结构 进入Nginx的主目录我们可以看到这些文件夹 client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件 client_body_temp fastcgi_temp proxy_temp scg…

uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题(高德地图)

踩坑uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题_uniapp真机调试高德地图正常 打包apk高德地图就不加载-CSDN博客 问题: 目前两个项目,一个项目是从另一个项目里面分割出来的一整套…

华为云磁盘性能指标(参考)

MD[华为云磁盘性能指标(参考)] 云硬盘(Elastic Volume Service, EVS) 根据性能,磁盘可分为极速型SSD V2、极速型SSD、通用型SSD V2、超高IO、通用型SSD、高IO、普通IO。 性能指标(参考),测速说明:操作系统-windows …

共襄Agent智能体盛举,实在智能2024生态伙伴大会杭州站圆满收官!

1月19日,以“实在Agent智能体”为主题的「2024实在智能生态伙伴大会(杭州站)」在杭州人工智能小镇隆重启幕! 中国电信/联通/中海油等数十家央企子公司领导代表、天翼数科/华为/浪潮/统信/贝锐/vivo集团/新华三/中软国际/中投创展/…

华为AC+FIT AP组网配置

AC配置 vlan batch 100 to 101dhcp enableip pool apgateway-list 192.168.100.254 network 192.168.100.0 mask 255.255.255.0 interface Vlanif100ip address 192.168.100.254 255.255.255.0dhcp select globalinterface GigabitEthernet0/0/1port link-type trunkport trun…

Flutter 自定义AppBar实现滚动渐变

1、使用ListView实现上下滚动。 2、使用Stack:允许将其子部件放在彼此的顶部,第一个子部件将放置在底部。所以AppBar,写在ListView下面。 3、MediaQuery.removePadding:当使用ListView的时候发现,顶部有块默认的Padd…

【蓝桥杯冲冲冲】排队接水--贪心算法巩固 (≧∇≦)

蓝桥杯备赛 | 洛谷做题打卡day15 文章目录 蓝桥杯备赛 | 洛谷做题打卡day15排队接水题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 题解代码我的一些话 排队接水 题目描述 有 n n n 个人在一个水龙头前排队接水,假如每个人接水的时间为 T i T_…

使用torch实现RNN

在实验室的项目遇到了困难,弄不明白LSTM的原理。到网上搜索,发现LSTM是RNN的变种,那就从RNN开始学吧。 带隐藏状态的RNN可以用下面两个公式来表示: 可以看出,一个RNN的参数有W_xh,W_hh,b_h&am…

Linux如何将文件或目录打成rpm包? -- fpm打包详解

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

关于大模型学习中遇到的4

来源:网络 相关学习可查看文章:Transformer and Pretrain Language Models3-4​​​​​​​ 什么是MLP? MLP是多层感知器(Multilayer Perceptron)的缩写, 多层感知机(MLP)是一种人工神经网…

Tensorflow2.0笔记 - tensor的合并和分割

主要记录concat,stack,unstack和split相关操作的作用 import tensorflow as tf import numpy as nptf.__version__#concat对某个维度进行连接 #假设下面的tensor0和tensor1分别表示4个班级35名同学的8门成绩和两个班级35个同学8门成绩 tensor0 tf.ones([4,35,8]) tensor1 tf…

基于SpringBoot Vue医院门诊管理系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

[zookeeper] SASL(Simple Authentication and Security Layer) 用户名密码认证配置

使用zookeeper zkCli.sh 连接 zookeeper服务时,默认裸连,晓得ip与端口之后即可连接zookeeper服务,本文使用SASL 用户名密码配置服务端与客户端,在zkCli连接前,服务端配置xxxjaas.conf保存用户名密码,客户端…

【无标题】vue自定义表单验证的时候报错TypeError: callback is not a function

今天遇到一个奇怪的bug 我在使用ant-design-vue组件库自定义表单验证的时候出现的 在ant-design-vue组件库里面定义的自定义校验规则是这样的validator 在网上找了很多资料里面不是说 1.检查自定义函数是否有问题 2.检查校检字段信息 可是我两个都看了并没有问题 但是还是一直…

C# 控制台进度条

最简单 namespace ProcessStu01 {internal class Program{static void Main(string[] args){for (int i 1; i < 100; i){Console.Write("\r{0,3}%",i);Thread.Sleep(50);}}} }第三方库 https://github.com/Mpdreamz/shellprogressbar using ShellProgressBar…

突发!边缘云领域或迎新玩家:ST同洲拟收购靠谱云,行业格局或将重塑

免责声明&#xff1a;本文所提供的信息及观点仅供边缘计算资讯讨论之用&#xff0c;不构成对任何人的投资建议。投资行为涉及风险&#xff0c;投资者应自行进行充分的市场调研和风险评估。入市投资需谨慎&#xff0c;切勿依赖本文内容作出任何投资决策。 边缘计算社区注意到上市…