在excel或vba中查找值
我需要找到特定输入日期和时间之前的值 例如,假设我想在上面的示例表中找到值“13-06-2013”和“12:30”之前的值在excel或vba中查找值,excel,vba,Excel,Vba,我需要找到特定输入日期和时间之前的值 例如,假设我想在上面的示例表中找到值“13-06-2013”和“12:30”之前的值 由于12:30不在B列中,我如何找到我要查找的值?答案应该是2013年6月13日和11:30。您可以将日期字符串与诸如或 此处A1=B1和C1 C7 =VLOOKUP(A7&B7,A1:C4,3,TRUE) 将“range\u lookup”设置为“True”,可以灵活地返回最接近的近似值(如果没有精确值)。我想您正在寻找类似的值。使用索引和匹配 我现在没有考虑日
由于12:30不在B列中,我如何找到我要查找的值?答案应该是2013年6月13日和11:30。您可以将日期字符串与诸如
或
此处A1=B1和C1
C7 =VLOOKUP(A7&B7,A1:C4,3,TRUE)
将“range\u lookup”设置为“True”,可以灵活地返回最接近的近似值(如果没有精确值)。我想您正在寻找类似的值。使用索引和匹配
我现在没有考虑日期。但这给了你一个例子
这里是另一种回答问题的方法,它使用匹配、索引和数组操作的组合来提供不依赖于辅助列的紧凑公式解决方案
我假设您的两列日期和时间位于单元格A2:B5
中,您要查找的两个日期和时间值位于单元格A9:A10
中。然后,以下两个公式将返回您需要的数据中小于或等于您正在查找的日期和时间的最新日期和时间值。(公式中的美元符号让人难以理解,但如果您需要将公式复制到其他位置,它们很重要;为了清晰起见,我在下面的讨论中省略了它们。)
MATCH函数的最后一个参数1是一条指令,要求计算出的匹配结果小于或等于要查找的值。它是默认值,通常会被忽略或替换为另一个值(例如,如果存在匹配,则使用值0将生成精确匹配)
(为了可读性,我删除了完整公式中的美元符号;这些符号固定了一个范围,因此即使将公式复制到另一个位置,它也保持不变。)
在计算出要查看的行之后,公式的其余部分很简单。INDEX
函数返回指定行和列相交处的数据范围中的值。因此,对于所讨论的日期,公式简化为:
DATE/TIME MATCH: = MATCH( A9+A10, A2:A5 + B2:B5, 1 ) --> 2
获取日期:=索引(A2:B5,2,1)-->2013年6月13日
换句话说,索引是返回数据范围A2:B5
的第二行和第一列中的值
时间的公式以完全相同的方式进行,唯一的区别是该值是从数据范围的第二列返回的。因此您有日期和时间列,并且您希望找到过去最接近给定时间的行。顺便问一句,这些列是分开的有什么原因吗?
A B C
1 414380.451388888888889 13-06-2013 10:50
2 414380.479166666666667 13-06-2013 11:30
3 414380.527777777777778 13-06-2013 12:40
4 414390.4375 14-06-2013 10:30
5
6 Enter date Enter Time Returned Time
7 13-06-2013 12:30 11:30:00
DATE: =INDEX($A$2:$B$5,MATCH(A9+A10,$A$2:$A$5+$B$2:$B$5,1),1) --> 13-06-2013
TIME: =INDEX($A$2:$B$5,MATCH(A9+A10,$A$2:$A$5+$B$2:$B$5,1),2) --> 11:30 AM
DATE/TIME MATCH: = MATCH( A9+A10, A2:A5 + B2:B5, 1 ) --> 2
DATE FETCH: = INDEX( A2:B5, 2, 1) --> 13-06-2013