|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 pharaoh21c 于 2018-3-29 19:08 编辑
各位老师,无耻小白想求教一个对excel操作的简单问题,我需要对附件excel进行如下操作:
1. 对"FCT"这一列中数字>20的行,将"In"和"Out"列加总至"Total"单元格
2. 对"FCT"这一列中数字<=20的行, "Total"单元格赋值"0"
特殊点(关键):
1. "FCT"等所有列位置都不固定(即可能这次为B列,下次表格被人改了变成C列D列了等等),因此首先需要判断"FCT"在哪一列;
2. 行数不固定(根据"Name"列来判断),如果使用循环函数的话,需要自动判断循环的次数
本人只会VBA,刚学习Python,恳请大师们帮忙贴一段Python代码让我学习一下(真实的数据和计算都要复杂很多,附件只是超级简化版)。
如果需要用到库,还请告知需要的库的名称。
万分感谢!
本帖最后由 chakyam 于 2018-3-29 16:41 编辑
需要openpyxl
- import openpyxl
- workbook = openpyxl.load_workbook(r'Text_Func.xlsx')
- sheet = workbook.get_active_sheet()
- min_column = sheet.min_column
- max_column = sheet.max_column
- min_row = sheet.min_row
- max_row = sheet.max_row
- for i in range(min_column,max_column+1):
- if sheet.cell(row = min_row,column = i).value == 'FCT':
- FCTcolumn = i
- elif sheet.cell(row = min_row,column = i).value == 'Total':
- Totalcolumn = i
- elif sheet.cell(row = min_row,column = i).value == 'In':
- Incolumn = i
- elif sheet.cell(row = min_row,column = i).value == 'Out':
- Outcolumn = i
- for i in range(min_row+1,max_row+1):
- if int(sheet.cell(row = i,column = FCTcolumn).value) > 20:
- Total = int(sheet.cell(row = i,column = Incolumn).value)+int(sheet.cell(row = i,column = Outcolumn).value)
- else:
- Total = 0
- sheet.cell(row = i,column = Totalcolumn).value = Total
- workbook.save(r'New_Text_Func.xlsx')
复制代码
不是很懂你说的BJ列是什么。。
|
|