在excel 有A B两列
B列的 每一个数据 在A列进行搜索,找出 含有A列数据 对应的单元格的 行数
如 知道 B列的0003 在A列的 第4行和 第 15行 存在
请问用openpyxl库 怎么实现
A列 B列
0001 0001
0002 0002
0003 0003
0004 0004
0005 0005
0006 0006
0007 0007
0008 0008
0009 0009
0010 0010
0011 0011
0012 0012
0013 0013
0003
0004
0005
0007
0008
0008
0009
0011
0012
使用openpyxl库可以在Python中对Excel文件进行读写操作。可以使用该库中的方法,从Excel文件中获取B列中的数据,然后找到它在A列中的行数。
上述例子解法:
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
sheet = workbook['Sheet1']
# 遍历B列,查找对应值在A列中的行数
for row in sheet.iter_rows(min_row=2, min_col=2, max_col=2):
search_value = row[0].value
found_rows = []
for a_row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=1, max_col=1):
if a_row[0].value == search_value:
found_rows.append(a_row[0].row)
if found_rows:
print(f"值为 '{search_value}' 在 A 列中的行数为:{found_rows}")
在上面的示例代码中,使用load_workbook()方法打开名为"example.xlsx"的Excel文件,使用['Sheet1']选择工作表"Sheet1"。然后使用iter_rows()方法遍历B列中的数据,在A列中查找对应值的行数,将其存储在一个列表中。如果查找到了至少一行,就输出查找结果。
需要注意的是,在B列中遍历数据时,使用了min_row参数指定从第2行开始遍历,因为假设数据从第1行开始,因此第1行的数据是表头。在A列中遍历数据时,使用了max_row参数指定遍历到最后一行,因为查找的值可能出现在任何行。如果A列的数据很大,可能会导致查找时间较长,因此可以考虑使用一些优化方法来加快查找速度。
您可以通过遍历B列的所有单元格,然后在A列中搜索相应的值并找到其所在的行来实现此操作。下面是代码:
from openpyxl import load_workbook
# 打开 Excel 文件
workbook = load_workbook(filename='example.xlsx')
sheet = workbook.active
# 遍历 B 列的单元格
for cell in sheet['B']:
# 获取单元格的值
value = cell.value
# 在 A 列中搜索值并找到其所在的行
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=1):
if row[0].value == value:
print(cell.coordinate, "对应的 A 列所在行:", row[0].row)
这段代码将打开名为example.xlsx的Excel文件,然后遍历B列的所有单元格。对于每个单元格,它将在A列中搜索相应的值并找到其所在的行。最后,它将打印出B列单元格的坐标和相应A列单元格所在的行。
请注意,此示例代码假定您的A列和B列数据从第1行开始,并且A列和B列数据具有相同的行数。如果您的数据从不同的行开始或列数不同,您需要相应地修改代码。