有没有办法对齐两个单独的 Excel 文件,以便一个文件中的每个项目在另一个文件中都有一个唯一的匹配项?代码几乎可以正常工作
Is there a way to align two separate Excel files so that each item in one file has a unique matching item in the other file? Code is almost working
我有两个 Excel 文件需要对齐,因为一个 excel 文件的每一行在另一个 excel 文件中都有一个唯一的对应行,天气它是匹配数据点或空白值。 Excel 文件大小不同,有些值匹配,有些不匹配,但是,它们都是按顺序排列的。
我试图通过插入空行来完成此操作。当没有匹配项然后继续下一个值时,我无法插入正确数量的空行。我相信我的代码非常接近工作。代码中还包括两个修改后的 Excel 文件作为单独的选项卡合并到一个文件中。
j=0
iterations=100+Branch_Flow_Pre.max_row
for i in range(2, iterations):
#if str(Branch_Flow_Pre.cell(row=i, column=1).value) == "None" and str(Branch_Flow_Post.cell(row=i, column=1).value) == "None":
# print("blanks, i = ",i,"j = ",j)
# i += 1
if Branch_Flow_Pre.cell(row=i, column=2).value == Branch_Flow_Post.cell(row=i, column=2).value and Branch_Flow_Pre.cell(row=i, column=8).value == Branch_Flow_Post.cell(row=i, column=8).value:
print("match, i = ",i,"j= ",j)
i += 1
else:
j=0
while j<21:
if Branch_Flow_Pre.cell(row=i+j, column=2).value == Branch_Flow_Post.cell(row=i, column=2).value and Branch_Flow_Pre.cell(row=i+j, column=8).value == Branch_Flow_Post.cell(row=i, column=8).value:
if j!=0:
for x in range(0, j+1):
Branch_Flow_Post.insert_rows(i)
print("insert Post, x = ",x,"i = ",i,"j = ",j)
else:
print("error")
i = i+j
j=21
break
elif Branch_Flow_Pre.cell(row=i, column=2).value == Branch_Flow_Post.cell(row=i+j, column=2).value and Branch_Flow_Pre.cell(row=i, column=8).value == Branch_Flow_Post.cell(row=i+j, column=8).value:
if j!=0:
for x in range(0, j+1):
Branch_Flow_Pre.insert_rows(i)
print("insert Pre, x = ",x,"i = ",i,"j = ",j)
else:
print("error")
i = i+j
j=21
break
elif j==20:
Branch_Flow_Post.insert_rows(i)
print("break, i = ",i,"j = ",j," Insert Post")
i += 1
j = 21
break
else:
print("increment, i = ",i,"j = ",j)
j += 1
c=1
r=2
for row in Branch_Flow_Pre.values:
for v in row:
BF_Pre.cell(row=r, column=c).value = v
c += 1
c=1
r += 1
c=1
r=2
for row in Branch_Flow_Post.values:
for v in row:
BF_Post.cell(row=r, column=c).value = v
c += 1
c=1
r += 1
book3.save(outfilename)
## the rest is not code
desired output:
Input1 Input2 Output1 Output2
A 1 B 2 A 1
B 2 B 2 B 2
C 3 C 3
x y C 3 C 3
D 4 x y
D 4
D 4 D 4
Actual output:
Input1 Input2 Output1 Output2
A 1 B 2 A 1
B 2 B 2 B 2
C 3 C 3
x y C 3
D 4
D 4
D 4
C 3
x y
D 4
我能够通过添加不允许将空单元格计为可接受匹配项的附加条件来更正代码。
这是我的工作脚本的图像:
working code
此函数将对具有相似数据的两个 excel 选项卡进行比较,并对齐这两个选项卡,以便每个项目在另一个选项卡中都有唯一的项目。或者,您可以将此视为一个函数,它将匹配项目放在每个选项卡中的相同 excel 行号上,以便可以轻松地在两者之间进行比较。
我有两个 Excel 文件需要对齐,因为一个 excel 文件的每一行在另一个 excel 文件中都有一个唯一的对应行,天气它是匹配数据点或空白值。 Excel 文件大小不同,有些值匹配,有些不匹配,但是,它们都是按顺序排列的。
我试图通过插入空行来完成此操作。当没有匹配项然后继续下一个值时,我无法插入正确数量的空行。我相信我的代码非常接近工作。代码中还包括两个修改后的 Excel 文件作为单独的选项卡合并到一个文件中。
j=0
iterations=100+Branch_Flow_Pre.max_row
for i in range(2, iterations):
#if str(Branch_Flow_Pre.cell(row=i, column=1).value) == "None" and str(Branch_Flow_Post.cell(row=i, column=1).value) == "None":
# print("blanks, i = ",i,"j = ",j)
# i += 1
if Branch_Flow_Pre.cell(row=i, column=2).value == Branch_Flow_Post.cell(row=i, column=2).value and Branch_Flow_Pre.cell(row=i, column=8).value == Branch_Flow_Post.cell(row=i, column=8).value:
print("match, i = ",i,"j= ",j)
i += 1
else:
j=0
while j<21:
if Branch_Flow_Pre.cell(row=i+j, column=2).value == Branch_Flow_Post.cell(row=i, column=2).value and Branch_Flow_Pre.cell(row=i+j, column=8).value == Branch_Flow_Post.cell(row=i, column=8).value:
if j!=0:
for x in range(0, j+1):
Branch_Flow_Post.insert_rows(i)
print("insert Post, x = ",x,"i = ",i,"j = ",j)
else:
print("error")
i = i+j
j=21
break
elif Branch_Flow_Pre.cell(row=i, column=2).value == Branch_Flow_Post.cell(row=i+j, column=2).value and Branch_Flow_Pre.cell(row=i, column=8).value == Branch_Flow_Post.cell(row=i+j, column=8).value:
if j!=0:
for x in range(0, j+1):
Branch_Flow_Pre.insert_rows(i)
print("insert Pre, x = ",x,"i = ",i,"j = ",j)
else:
print("error")
i = i+j
j=21
break
elif j==20:
Branch_Flow_Post.insert_rows(i)
print("break, i = ",i,"j = ",j," Insert Post")
i += 1
j = 21
break
else:
print("increment, i = ",i,"j = ",j)
j += 1
c=1
r=2
for row in Branch_Flow_Pre.values:
for v in row:
BF_Pre.cell(row=r, column=c).value = v
c += 1
c=1
r += 1
c=1
r=2
for row in Branch_Flow_Post.values:
for v in row:
BF_Post.cell(row=r, column=c).value = v
c += 1
c=1
r += 1
book3.save(outfilename)
## the rest is not code
desired output:
Input1 Input2 Output1 Output2
A 1 B 2 A 1
B 2 B 2 B 2
C 3 C 3
x y C 3 C 3
D 4 x y
D 4
D 4 D 4
Actual output:
Input1 Input2 Output1 Output2
A 1 B 2 A 1
B 2 B 2 B 2
C 3 C 3
x y C 3
D 4
D 4
D 4
C 3
x y
D 4
我能够通过添加不允许将空单元格计为可接受匹配项的附加条件来更正代码。 这是我的工作脚本的图像:
working code
此函数将对具有相似数据的两个 excel 选项卡进行比较,并对齐这两个选项卡,以便每个项目在另一个选项卡中都有唯一的项目。或者,您可以将此视为一个函数,它将匹配项目放在每个选项卡中的相同 excel 行号上,以便可以轻松地在两者之间进行比较。