Excel 根据不同的文件更新单元格值';s细胞
我正在写我的第一个代码(必须从以下内容开始:)),我真的很难做到这一点,因为我在互联网上找不到任何类似的例子,至少可以给我一个方向。 我会尽可能清楚地解释它 我有两个关于部门的.xlsx文件,都包含许多地区Excel 根据不同的文件更新单元格值';s细胞,excel,python-2.7,cell,updates,openpyxl,Excel,Python 2.7,Cell,Updates,Openpyxl,我正在写我的第一个代码(必须从以下内容开始:)),我真的很难做到这一点,因为我在互联网上找不到任何类似的例子,至少可以给我一个方向。 我会尽可能清楚地解释它 我有两个关于部门的.xlsx文件,都包含许多地区 FILE 1 - DATAS DEPENDING ON DISTRICT FILE 2 - DISTRICT UNIQUE VALUES columnA+B
FILE 1 - DATAS DEPENDING ON DISTRICT FILE 2 - DISTRICT UNIQUE
VALUES
columnA+B columnC columnE columnA columnE
DATA DEPARTMENT DISTRICT DEPARTMENT DISTRICT
" LIMA BARRANCA LIMA BARRANCA
" LORETO BARRANCA LORETO BARRANCA1
" LORETO BARRANCA SAN MARTIN BARRANQUITA
" SAN MARTIN BARRANQUITA LORETO BELEN
" SAN MARTIN BARRANQUITA CAJAMARCA BELLAVISTA
" SAN MARTIN BARRANQUITA PIURA BELLAVISTA1
" LORETO BELEN SAN MARTIN BELLAVISTA2
" SAN MARTIN BELLAVISTA
正如您所看到的,地区可以有相同的名称,但重复的名称属于不同的部门。
我的预期结果是更新文件1,如下所示:
columnA+B columnC columnE columnA columnE
DATA DEPARTMENT DISTRICT DEPARTMENT DISTRICT
" LIMA BARRANCA LIMA BARRANCA
" LORETO BARRANCA1 LORETO BARRANCA1
" LORETO BARRANCA1 SAN MARTIN BARRANQUITA
" SAN MARTIN BARRANQUITA LORETO BELEN
" SAN MARTIN BARRANQUITA CAJAMARCA BELLAVISTA
" SAN MARTIN BARRANQUITA PIURA BELLAVISTA1
" LORETO BELEN SAN MARTIN BELLAVISTA2
" SAN MARTIN BELLAVISTA2
有什么可以帮助我的工具建议吗?我尝试了一个使用simple for循环的代码,但我不知道如何同时在4列中实现它
wb1 = FILE1
ws1 = worksheet1
wb2 = FILE2
ws2 = worksheet2
x=1
for distr1 in ws1['E']:
for i, j in itertools.product(range(1,ws2.max_row+1), range(1,ws1.max_row+1)):
distr2 = ws2.cell(row=i,column=5)
dept2 = ws2.cell(row=i, column=1)
dept1 = ws1.cell(row=j, column=3)
if distr2.value == str(distr1.value) + str(x) and dept2.value == dept1.value:
distr1.value = distr2.value
x +=1
可能不是世界上最好的代码,但正如我所说,我的第一个:)问题不是很清楚,特别是应该保留哪些值。我很想从第二个文件创建一个查找表,它将地区映射到部门和后缀。以下是伪代码,但应提供足够的代码供您使用
from collections import defaultdict
districts = defaultdict(dict)
import re
dist_regex = re.compile(r"(?P<district>[A-Za-z])+(?P<suffix>[0-9]?)"
for row in ws2.iter_rows(min_col=1, max_col=5):
dept = row[0]
m = dist_regex.match(row[-1]).groupdict()
dist = m['district']
suffix = m['suffix']
districts[dist][dept] = suffix
然后,您可以在第一个文件的行中循环检查district和department的组合是否有后缀,并根据需要添加后缀。问题不是很清楚,特别是应该保留哪些值。我很想从第二个文件创建一个查找表,它将地区映射到部门和后缀。以下是伪代码,但应提供足够的代码供您使用
from collections import defaultdict
districts = defaultdict(dict)
import re
dist_regex = re.compile(r"(?P<district>[A-Za-z])+(?P<suffix>[0-9]?)"
for row in ws2.iter_rows(min_col=1, max_col=5):
dept = row[0]
m = dist_regex.match(row[-1]).groupdict()
dist = m['district']
suffix = m['suffix']
districts[dist][dept] = suffix
然后,您可以循环查看第一个文件的行,检查地区和部门的组合是否有后缀,并根据需要添加后缀。您不太清楚要做什么。你只是想合并这两个文件吗?不,这有点复杂。该地区的名称有时会重复:因此,它们的增量后缀在FILE2中是唯一的值。文件1中不是这样,但我不能只是给它们添加一个随机后缀:它们必须与文件2中的相同,关于它们所属的部门。希望能更清楚一点,你到底想干什么还不清楚。你只是想合并这两个文件吗?不,这有点复杂。该地区的名称有时会重复:因此,它们的增量后缀在FILE2中是唯一的值。文件1中不是这样,但我不能只是给它们添加一个随机后缀:它们必须与文件2中的相同,关于它们所属的部门。希望能更清楚一点。非常感谢您的帮助,我会按照您给我指明的方向努力找到解决方案!非常感谢您的帮助,我会按照您指示的方向努力找到解决方案!