我有一个200k以上的数据列表。我需要在特定日期之前搜索下一个订单日期,该日期与excel中的ID号匹配。我知道我可以使用索引匹配来查找给定日期之前的下一个日期,但是当我需要ID号来匹配给定ID时,我该怎么做?我附上了我正在搜索的数据的示例格式。问题还在于我没有搜索一系列日期,我需要在某个日期之前的下一个日期。在给定日期之前有多个日期,我需要先拉一个日期。
索引匹配公式以查找下一个给定日期。
= INDEX(订单!B:B,MATCH(MIN(ABS(订单!B:B-F3)),ABS(订单!B:B-F3),0))
import re
def delete_numbers(line):
words = re.sub(r'\w*\d\w*', '', line).strip()
for t in re.split(r',', words):
if len(t.split()) == 1:
words = re.sub(t, '',words)
words = re.sub(',,', '', words)
return words
fname = input("Enter file name: ")
file = open(fname,"r")
for line in file.readlines():
words = delete_numbers(line)
first_name = re.findall(r"([a-zA-Z]+)\s",words)
for i in first_name:
print(i)
print("***")
a = ""
for t in re.split(r',', words):
a+= (", ".join(t.split()[1:])) + " "
答案 0 :(得分:2)
说明您的要求的另一种方法是在B:B
中找到< F3
的最大日期,并在A:A
ID
中指定E3
这正是以下公式的作用:
=AGGREGATE(14,6,Orders!B2:B999/(Orders!B2:B999<F3)/(Orders!A2:A999=E3),1)
AGGREGATE(14, ...., 1)
获取给定数组中的最大结果
按条件划分的分部将在与条件不符的数组条目中生成DIV!0
参数6
指示函数忽略错误条目,包括0
请注意,虽然此公式不需要 CSE ,但它是基于数组的,因此请避免使用全列,因为它们会降低速度。选择足以跨越数据的合理行数(即A2:A999
)。