You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的xlwings选择Excel非相邻区域并正确着色?

在xlwings中同时选中非相邻单元格/区域(无需循环)的正确方法

你遇到的问题是因为xlwings的Range()构造器传入两个Range对象时,会自动生成一个覆盖两个区域端点的连续矩形区域,而非合并独立的非相邻区域,所以才会把a1:d10整个区域上色。

以下是两种无需循环的正确实现方式:

方法1:使用union()方法

这是xlwings官方推荐的合并非相邻区域的方式:

import xlwings as xw

# 连接当前活跃工作簿与工作表
wb = xw.books.active
ws = wb.sheets.active

# 合并两个非相邻区域
target_range = ws.range('a1:b4').union(ws.range('b8:d10'))
# 设置背景色为红色
target_range.color = (255, 0, 0)

方法2:直接使用Excel地址语法

利用Excel原生的非相邻区域表示法(用逗号分隔多个区域地址),直接传入xlwings的range():

import xlwings as xw

ws = xw.books.active.sheets.active
# 直接通过逗号分隔的地址选中非相邻区域
ws.range('a1:b4, b8:d10').color = (255, 0, 0)

补充说明

  • 两种方法都能精准选中目标非相邻区域,不会覆盖中间无关单元格
  • 方法2更简洁,适合已知区域地址的场景;方法1更灵活,适合已通过代码获取到Range对象的场景

内容的提问来源于stack exchange,提问作者Ngọc Nguyễn Thị Hồng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:45:26