办公自动化操作填写以及识别,可以自动写入,并且识别除500g。以外1000g的名称数据自动公式填写

表格B:系统规范表格
表格A:商家提供表格

需求:
1、将表格A中的品名与表格B的规范商品名称进行匹配
示例:将表格A中的乳黄瓜与表格B中的乳黄瓜进行匹配

img


2、将匹配对应的商品名称分别匹配不同的商品重量,并对不同重量的相同商品名称进行零售价自动填充。
示例:表格A中的乳黄瓜零售价13.98元/500g,对应表格B中的乳黄瓜500g、1000g的零售价进行自动填充。

img

img

img

```

import xlwings as xw
'''写一个函数,该函数需要四个参数,有单价的表格路径,无单价的表格路径,有单价表格的数据范围无表头,无单价表格数据范围无表头'''

def makeprice(pathA,pathB,Arange,Brange):
with xw.App(visible=False) as app:
wb_A= app.books.open(pathA)
wb_B= app.books.open(pathB)
sht_A = wb_A.sheets[0]
sht_B = wb_B.sheets[0]
print(sht_A.range(Arange).value)#打印结果:[['乳黄瓜', 13.98], ['黄瓜', 11.98], ['旱黄瓜', 15.16]]
print(sht_B.range(Brange).value)#打印结果:[['黄瓜', None, 200.0], ['黄瓜', None, 450.0], ['旱黄瓜', None, 500.0], ['乳黄瓜', None, 1000.0], ['乳黄瓜', None, 500.0], ['旱黄瓜', None, 800.0]]
#接下来通过循环确定品名相同的产品,然后计算单价,按照单价都是"元/500g"计算;
listA=sht_A.range(Arange).value
listB=sht_B.range(Brange).value
for dataB in listB:
for dataA in listA:
if dataB[0].startswith(dataA[0]):#如果B表品名从开始就包含A表品名
dataB[1] = (dataA[1]/500)*dataB[2]#按照500g算出每克价格,再乘以B表中的克数,算出单价
print(listB)#此时价格匹配完成
sht_B.range(Brange).value=listB#完成表格赋值
wb_B.save()
print("匹配完成")

如果参数中路径填不好,可以把该文件放到两个表格的目录中运行,但是文件名要写对,建议测试的时候用副本测试。

makeprice("A.xlsx","B.xlsx","A2:B4","A2:C7")

```看明白以后请去掉注释,避免复制格式错误

既然是在excel里操作,还是推荐用vba的方式来做。具体的vba程序可以交流


import xlwings as xw


def makeprice(pathA,pathB,Arange,Brange):
    with xw.App(visible=False) as app:
        wb_A= app.books.open(pathA)
        wb_B= app.books.open(pathB)
        sht_A = wb_A.sheets[0]
        sht_B = wb_B.sheets[0]
        listA=sht_A.range(Arange).value
        listB=sht_B.range(Brange).value
        for dataB in listB:
            for dataA in listA:
                if dataB[0].startswith(dataA[0]):#如果B表品名从开始就包含A表品名
                    dataB[1] = (dataA[1]/500)*dataB[2]#按照500g算出每克价格,再乘以B表中的克数,算出单价
        print(listB)#此时价格匹配完成
        sht_B.range(Brange).value=listB#完成表格赋值
        wb_B.save()
    print("匹配完成")
# 如果参数中路径填不好,可以把该文件放到两个表格的目录中运行,但是文件名要写对,建议测试的时候用副本测试。
makeprice("A.xlsx","B.xlsx","A2:B4","A2:C7")

有一说一,原始表格里都给你重量了。用excel的宏录取就行,比python还简单。
大致就是:
1、建立表B,sheet1导入商家表格
2、录制宏,输出在sheet2
优点是,超简单,输出格式可以随心编辑。
但是我还是给你一个python 最简单的写法。

import pandas as pd
df=pd.read_excel('d:/test2.xlsx')
df['商品名称']=df['商品名称'].str.split('约',expand=True)[0].str.strip()
dictt=dict(zip(df['品名'],df['零售价']))
df['匹配零售价']=(df['商品名称'].map(dictt))*df['重量(g)']/500
df.to_excel('d:/out.xlsx')

直接用pandas读取excel,然后写一个匹配函数,两个excel的数据匹配一下,再合并成一个数据表输出就行了吧。还是直接要封装好的exe小工具

excel vlookup 大法用起来

这里是Python自动化操作的全部内容:https://blog.csdn.net/u014779536/article/details/102906895

请问这是两个excel文件吗

https://yunhua.blog.csdn.net/article/details/122844763?spm=1001.2014.3001.5502

可以参考这篇博文,希望对你有帮助

楼上给代码给方式都有,而我要给你的是人,

你可能不会录制宏,

你可能不会python调试,

但是有问题可以来交流!

这个才是可以及时帮到你的核心!

兄弟你说明白点呗,你要是不会代码执行我可以给你打包exe

建议学习一下pandas库。

https://blog.csdn.net/lyc2016012170/article/details/121463715?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5.pc_feed_download_top3ask