【发布时间】:2020-09-14 18:35:09
【问题描述】:
我最近开发了代码来查找我输入的关键字,它通过遍历 Excel 工作表的行来查找关键字,但是当我在行中找到该关键字时,我如何水平移动并从列单元格中获取值在我找到关键字的那一行?
【问题讨论】:
标签: python python-3.x excel automation spreadsheet
我最近开发了代码来查找我输入的关键字,它通过遍历 Excel 工作表的行来查找关键字,但是当我在行中找到该关键字时,我如何水平移动并从列单元格中获取值在我找到关键字的那一行?
【问题讨论】:
标签: python python-3.x excel automation spreadsheet
您在这里没有提供太多关于您正在使用的库的信息,这对于给您任何语法提示是必不可少的。打开pyxl?熊猫?
所以我可以为您的代码提供一些指导:
您有一个迭代行的函数。
您应该以一种跟踪其检查的行的方式编写函数,然后,当它找到关键字时,它应该返回行号。也许使用enumerate 函数。或者用一个简单的计数器
counter = 1
for cell in column:
if keyword = cell.value:
return counter
else:
counter += 1
有了行号,你需要做的就是创建一个对值所在单元格的引用,然后在引用中添加 1 列。
例如,如果关键字的引用是 (1, 2) (column, row),那么您可以进行类似的转换
keyword_ref = (1, 2)
value_ref = (keyword_ref[0] + 1, keyword_ref[1])
最后你返回 value_ref 中的值。
【讨论】:
执行此操作的一种简单方法是在遍历每一行时从不同列中的单元格中获取值。下面,我假设您正在使用现有工作簿,您可以通过声明 filepath 变量来加载它。
import openpyxl
wb = openpyxl.load_workbook(filepath)
ws = wb.active
# Iterate each row of the spreadsheet
for row in ws.iter_rows():
# Check if the value in column A is equal to variable "target"
if row[0].value == target:
# If there is a match, output is value in same row from column B
output = row[1].value
在此示例中,您遍历每一行以检查 A 列中的值是否等于 target 变量。如果是这样,您可以通过更改 output 变量的索引来检索该行上的任何其他值。
列索引值从 0 开始运行,因此 row[0].value 将是 A 列的行中的值,row[1].value 是 B 列的行中的值,依此类推。
【讨论】: