ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 386|回复: 2

[求助] python检测excel表中根据背景色路径求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-4 06:16 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
根据图示可以计算出A1到A2为100+400=500 A1到A4为100+100=200 A1到A5为100+200=300 可以在表中根据对应关系列出距离如图最重要是上面的实现

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-4 06:19 | 显示全部楼层
第一个帖子直接复制的图片我看不显示 我补充下附件
PixPin_2024-02-04_06-17-38.png
PixPin_2024-02-04_06-17-49.png

TA的精华主题

TA的得分主题

发表于 2024-5-22 21:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

  1. import xlwings as xw

  2. # 打开excel程序, visible 是否可见, add_book 是否添加新工作簿
  3. app = xw.App(visible=False, add_book=False)
  4. # 关闭excel程序的警告
  5. app.display_alerts = False
  6. # 关闭屏幕刷新 提高运行速度
  7. app.screen_updating = False

  8. try:
  9.     # 打开工作簿
  10.     wb = app.books.open('./project_2/data_original.xlsx', update_links=False)
  11.     # 选定工作表
  12.     sh = wb.sheets['sheet1']
  13.     # 确定需要查找的颜色
  14.     color = (255, 255, 0)
  15.     # sum_path(开始的单元格,结束的单元格,路径)  路径会用((row,column),(row,column),...) 的形式存在
  16.     def sum_path(start,end,path=[]):
  17.         
  18.         row, column = start.row, start.column
  19.         current = start
  20.         
  21.         # 判断是否到达最后一个单元格
  22.         if current.value == end.value:
  23.             # 将路径转化成单元格值
  24.             values = []
  25.             for r, c in path:
  26.                 values.append(sh.cells(r,c).value)
  27.                 # 将值中整数或浮点求和
  28.                 sum = 0
  29.                 for i in values:
  30.                     if isinstance(i, (int,float)):
  31.                         sum += i
  32.         
  33.             print(sum)

  34.         # 确定单元格不是过来的路径
  35.         elif (row,column) in path:
  36.             return

  37.         else:
  38.             path.append((row,column))
  39.             print(path)
  40.             # 左
  41.             if column > 1:
  42.                 left = current.offset(column_offset=-1)
  43.                 if left.color == color:
  44.                     sum_path(left, end, path.copy())
  45.             # 右
  46.             if column < 100:
  47.                 right = current.offset(column_offset=1)
  48.                 if right.color == color:
  49.                     sum_path(right, end, path.copy())
  50.             # 上
  51.             if current.row > 1:
  52.                 up = current.offset(row_offset=-1)
  53.                 if up.color == color:
  54.                     sum_path(up, end, path.copy())
  55.             # 下
  56.             if current.row < 100:
  57.                 down = current.offset(row_offset=1)
  58.                 if down.color == color:
  59.                     sum_path(down, end, path.copy())

  60.     ### 输入起始和重点单元格
  61.     sum_path(sh['A6'],sh['B3'])


  62. finally:
  63.     # 关闭工作簿
  64.     wb.close()
  65.     # 退出程序
  66.     app.quit()
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 16:50 , Processed in 0.030201 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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