python如何实现如下excel公式和宏的功能?

查看 72|回复 5
作者:1e3e   
稍后上传示例表格,请大家稍等一下
1、我在xlsx表格中z10单元格为公式:=IF(OR(W10="",W10=0),IF(OR(AND(M10=0,P10=0,S10=0),AND(O10="这是对你的补助啊",W10"为标记值哟")),0,"不是隐藏行"),IF(AND(P10=0,S10=0),0,"不是隐藏行")),
当执行完我写的一段代码后,我需要手动将z10单元格往下拉,说明一下,为什么不事先将z11、z12、……,因为公式会耗用内存,公式太多,代码需要重复打开指定表格,导致代码无法运行。
现在我需要用python或pandas来实现这个功能,我发现pandas处理完成后,表格的合并单元格、公式和框线等格式都会消失,这不是我要的结果。
2、这个功能是次要的,多列单元格满足条件合并:
当v列不为空值为0值时,且b列为空值,则a列对应b列空值的单元格和上面的单元格合并(a列合并的两个单元格的值是相等的),
从第11行到第2000行当a列按照如上规则合并后,同样b列至m列也像a列一样合并(我是选中a11:a2000,然后用格式刷)
我以前是vba实现如上功能的:
   For i = 1000 To 7 Step -1  '注意不能到第一行因为第一行是合并单元格否则会400
        If Cells(i, 1) = "" And Cells(i, 23) = "" Then
        Range(Cells(i - 1, 1), Cells(i, 1)).Merge
稍后上传示例表格,请大家稍等一下

单元格, 公式

神心恼   

看的我头晕。能不能简单一些说明情况。需要什么
神心恼   

让天工看得了。
在Python中,可以使用openpyxl模块来处理Excel文件。要达成Excel多列单元格满足条件合并,可以按照以下步骤进行操作:
导入openpyxl模块:
import openpyxl
打开Excel文件:
wb = openpyxl.load_workbook('your_excel_file.xlsx')
获取需要合并的单元格范围:
merge_range = 'A1:B10'
这里假设需要合并的区域为A1到B10。
创建一个新的工作表:
ws = wb.active
合并单元格:
ws.merge_cells(merge_range)
这里将合并区域的单元格合并成一个单元格,合并后的单元格的值为合并区域内所有单元格的值。
保存Excel文件:
wb.save('your_excel_file_with_merged_cells.xlsx')
这里将合并后的Excel文件保存为your_excel_file_with_merged_cells.xlsx。
以上是使用openpyxl模块达成Excel多列单元格满足条件合并的基本步骤,具体实现可以根据实际情况进行调整。
Misaeng   

只看懂了,和补助有关系。等待大佬出现
blfiag   

“公式会耗用内存,公式太多,代码需要重复打开指定表格,导致代码无法运行。"
检查前后隶属关系,可能造成循环调用,变成循环过程了,当然就算不出来。
依个人经验看,公式或vba还是最方便使用的,
py只是把excel数据当输入,自己编辑了一个超级函数,再把结果放回的过程
当然不排除有一种超级插件,直接对代码进行解释,类似内嵌的py函数。
1e3e
OP
  

附件在这儿:https://t.wss.ink/f/b8y45fwuugv 复制链接到浏览器打开
示例空表.xlsx是要a公司填写的空白表格,A公司.xlsx是A公司填写后的数据,但存在如下问题:如第11行A11:A21全为空白,应该隐藏第11行,第19行纺纱 为匹此行实际也没有统计数据故也可以隐藏
https://post.picturedata.org/images/2023/05/19/2.png
https://post.picturedata.org/ima ... 23-05-19_222230.png
https://post.picturedata.org/image/LUx0
A公司筛选后去除空行或没数据统计项.xlsx是要达到的效果
您需要登录后才可以回帖 登录 | 立即注册

返回顶部