鱼C论坛

 找回密码
 立即注册
查看: 2425|回复: 14

[已解决]求助:excel判断两列数据是否相等,不相等将不同的单元格用颜色区分

[复制链接]
发表于 2023-4-17 17:42:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,如何判断单元格第二行开始第二列和第三列的数据是否相同,不同则将第三列相应的单元格背景置黄处理
希望将判断写到第三列的单元格的公式中,生成的excel一修改第三列就和第二列对比开始置黄

最佳答案
2023-4-17 17:42:31
本帖最后由 歌者文明清理员 于 2023-4-17 17:45 编辑

以下是使用Python的Openpyxl模块实现您要求的功能的示例代码:
import openpyxl
from openpyxl.styles import PatternFill

# 打开Excel文件并选择工作表
wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active

# 获取第二列和第三列数据的最大行数
max_row = ws.max_row

# 对每一行进行比较,并将不同的单元格用黄色填充
for row in range(2, max_row + 1):
    if ws.cell(row=row, column=2).value != ws.cell(row=row, column=3).value:
        # 设置相应单元格的背景颜色为黄色
        cell_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
        ws.cell(row=row, column=3).fill = cell_fill

# 保存更改后的Excel文件
wb.save('example.xlsx')
这段代码会打开指定的Excel文件,并在其中选择活动工作表。随后,它会检查第二列和第三列的数据是否相等,并将不同的单元格用黄色填充。最后,它会将更改后的Excel文件保存回磁盘。注意,这段代码并没有使用公式来完成要求的功能,而是遍历了所有行并逐个比较单元格的值。


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 17:42:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 歌者文明清理员 于 2023-4-17 17:45 编辑

以下是使用Python的Openpyxl模块实现您要求的功能的示例代码:
import openpyxl
from openpyxl.styles import PatternFill

# 打开Excel文件并选择工作表
wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active

# 获取第二列和第三列数据的最大行数
max_row = ws.max_row

# 对每一行进行比较,并将不同的单元格用黄色填充
for row in range(2, max_row + 1):
    if ws.cell(row=row, column=2).value != ws.cell(row=row, column=3).value:
        # 设置相应单元格的背景颜色为黄色
        cell_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
        ws.cell(row=row, column=3).fill = cell_fill

# 保存更改后的Excel文件
wb.save('example.xlsx')
这段代码会打开指定的Excel文件,并在其中选择活动工作表。随后,它会检查第二列和第三列的数据是否相等,并将不同的单元格用黄色填充。最后,它会将更改后的Excel文件保存回磁盘。注意,这段代码并没有使用公式来完成要求的功能,而是遍历了所有行并逐个比较单元格的值。


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 17:42:38 | 显示全部楼层
python版本3.11.2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 17:46:00 | 显示全部楼层

以上代码在Python3.11.2中应该是可以正常运行的,因为Openpyxl模块支持Python 3.x版本,并且该代码没有使用任何2.x 版本已弃用的功能或语法。但是请务必确认您已经安装了Openpyxl模块并导入了相关库文件,否则代码可能无法正常执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 17:47:24 | 显示全部楼层
要在Python中使用Excel,可以使用 openpyxl 这个库。首先,你需要确保你已经安装了 openpyxl。如果还没有安装,可以通过以下命令安装:
pip install openpyxl

以下是一个示例代码,演示如何使用 openpyxl 判断两列数据是否相等,如果不相等则将不同的单元格背景置黄:
import openpyxl
from openpyxl.styles import PatternFill

# 打开工作簿和工作表
workbook = openpyxl.load_workbook('your_excel_file.xlsx')
worksheet = workbook.active

# 设置填充颜色为黄色
yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 从第二行开始遍历工作表中的行
for row in worksheet.iter_rows(min_row=2):
    cell2 = row[1]  # 第二列的单元格
    cell3 = row[2]  # 第三列的单元格

    # 如果第二列和第三列的数据不相等,则将第三列的单元格背景设置为黄色
    if cell2.value != cell3.value:
        cell3.fill = yellow_fill

# 保存更改后的工作簿
workbook.save('your_modified_excel_file.xlsx')

请将 'your_excel_file.xlsx' 替换为你的实际Excel文件名,将 'your_modified_excel_file.xlsx' 替换为你希望保存的新Excel文件名。

该代码将会遍历Excel中的每一行(从第二行开始),比较第二列和第三列的值,如果不相等,就将第三列的单元格背景颜色设为黄色。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 17:51:06 | 显示全部楼层
您可以尝试使用Python的openpyxl模块来进行单元格的比较和背景色设置。

以下是示例代码,其中假设您要处理的Excel文件名为“example.xlsx”,列名为A、B和C,且从第二行开始存在数据。请先确保安装了openpyxl模块。
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 打开Excel文件
wb = load_workbook('example.xlsx')

# 选择当前活动工作表(可以根据需要修改)
ws = wb.active

# 定义黄色填充
yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 遍历第二行及以后的所有行
for row in range(2, ws.max_row+1):
    # 获取第二列和第三列的单元格
    cell_b = ws.cell(row=row, column=2)
    cell_c = ws.cell(row=row, column=3)
    # 如果它们不相同
    if cell_b.value != cell_c.value:
        # 将第三列的背景色改为黄色
        cell_c.fill = yellow_fill

# 保存Excel文件
wb.save('example.xlsx')

在上述代码中,我们首先打开了Excel文件,并选择了活动工作表。然后,我们定义了一个黄色填充来表示需要置黄的单元格。接下来,我们遍历第二行及以后的所有行,并分别获取第二列和第三列的单元格。如果这两个单元格的值不相同,我们就将第三列的背景色改为黄色。

最后,我们保存了Excel文件。请注意,如果您需要处理多个工作表或多个Excel文件,可以使用其他openpyxl模块中的方法来选择和打开不同的工作表和文件。
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 19:51:52 | 显示全部楼层
sfqxx 发表于 2023-4-17 17:51
您可以尝试使用Python的openpyxl模块来进行单元格的比较和背景色设置。

以下是示例代码,其中假设您要处 ...

我要的是把这个判断加到excel第三列的公式,就是原本2列和3列是相同的,我打开excel一旦修改了3列的某个值,就将单元格置黄,能做到不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2023-4-17 19:52:05 | 显示全部楼层
isdkz 发表于 2023-4-17 17:47
要在Python中使用Excel,可以使用 openpyxl 这个库。首先,你需要确保你已经安装了 openpyxl。如果还没有安 ...

我要的是把这个判断加到excel第三列的公式,就是原本2列和3列是相同的,我打开excel一旦修改了3列的某个值,就将单元格置黄,能做到不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 19:52:39 | 显示全部楼层
歌者文明清理员 发表于 2023-4-17 17:42
以下是使用Python的Openpyxl模块实现您要求的功能的示例代码:
这段代码会打开指定的Excel文件,并在其中 ...

我要的是把这个判断加到excel第三列的公式,就是原本2列和3列是相同的,我打开excel一旦修改了3列的某个值,就将单元格置黄,能做到不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 19:57:12 | 显示全部楼层
liyuping-fisher 发表于 2023-4-17 19:52
我要的是把这个判断加到excel第三列的公式,就是原本2列和3列是相同的,我打开excel一旦修改了3列的某个 ...

抱歉刚刚理解错了您的需求。要实现您所描述的功能,可以使用Excel的条件格式化。在这个示例中,我们不需要使用Python,因为您可以直接在Excel中实现此功能。请按照以下步骤操作:

1、打开Excel文件,选中要应用条件格式化的整个第三列(例如,如果数据在C列,请选中C列)。
2、在功能区中找到“条件格式化”按钮(通常在主页选项卡中),然后点击该按钮。
3、在弹出的菜单中,选择“新建规则”。
4、在“新建格式规则”对话框中,选择“使用公式确定要设置格式的单元格”。
5、在公式输入框中,输入以下公式(请根据实际情况调整单元格引用):
=$B2<>$C2
在这个例子中,假设您要比较的数据分别位于B列和C列。如果数据位于其他列,请相应地调整公式中的单元格引用。

6、点击“设置格式”按钮,然后在“设置格式”对话框中设置背景颜色为黄色,然后点击“确定”。
7、返回到“新建格式规则”对话框,再次点击“确定”。

现在,条件格式化已应用到第三列。当您更改第三列的值时,如果该值与相应的第二列值不同,该单元格的背景将变为黄色。

在Python中实现这个功能,您可以使用openpyxl库来设置条件格式。以下是一个示例代码,演示如何使用openpyxl将条件格式应用到Excel文件的第三列:
import openpyxl
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill

# 打开工作簿和工作表
workbook = openpyxl.load_workbook('your_excel_file.xlsx')
worksheet = workbook.active

# 设置填充颜色为黄色
yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 设置条件格式规则
rule = CellIsRule(operator='notEqual',
                  formula=['$B2'],  # 修改这里的引用以适应您的数据所在的列
                  fill=yellow_fill)

# 应用条件格式规则到整个第三列
worksheet.conditional_formatting.add('C:C', rule)

# 保存更改后的工作簿
workbook.save('your_modified_excel_file.xlsx')

请将 'your_excel_file.xlsx' 替换为你的实际Excel文件名,将 'your_modified_excel_file.xlsx' 替换为你希望保存的新Excel文件名。在这个示例代码中,我们创建了一个条件格式规则,将其应用到整个第三列。现在,当您更改第三列的值时,如果该值与相应的第二列值不同,该单元格的背景将变为黄色。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 19:58:39 | 显示全部楼层
相当于想实现这个功能
微信图片_20230417195658.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-18 14:56:03 | 显示全部楼层
liyuping-fisher 发表于 2023-4-17 19:58
相当于想实现这个功能

可以在Excel中使用内置的IF和AND函数结合条件格式来实现该功能。

首先,选中第三列需要标记背景色的区域,然后在【条件格式】菜单下选择【新建规则】。在弹出窗口中,选择【使用公式确定要设置的单元格】,然后输入以下公式:
=AND(B1=C1, B1<>"")

上述公式表示如果B列和C列值相等且不为空,则满足条件。

接下来,设置填充颜色为黄色,就可以将符合条件的单元格标记为黄色背景色。

最后,当你修改第三列某个单元格的值时,它的值会自动与第二列进行比较,同时判断是否满足设定的条件。如果符合条件,该单元格就会变成黄色标记。

需要注意的是,该方法只适用于单个工作表,如果你需要在多个工作表中应用此功能,则需要分别对每个工作表进行设置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-19 16:03:35 | 显示全部楼层
歌者文明清理员 发表于 2023-4-18 14:56
可以在Excel中使用内置的IF和AND函数结合条件格式来实现该功能。

首先,选中第三列需要标记背景色的区 ...

我就是想把这个条件格式加入代码中可以不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-19 18:17:06 | 显示全部楼层
liyuping-fisher 发表于 2023-4-19 16:03
我就是想把这个条件格式加入代码中可以不

Excel公式?不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-20 09:11:47 | 显示全部楼层
目前了解到的python做不到公式插入单元格此贴暂时关闭~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表