Column A Column B
13-06-2013 10:50
13-06-2013 11:30
13-06-2013 12:40
14-06-2013 10:30
我需要找到特定输入日期和时间之前的值。
例如,假设我想在上面的示例表中找到值“13-06-2013”和“12:30”之前的值。
由于 12:30 不在 B 列中,我如何找到我正在寻找的值?答案应该是 13-06-2013 和 11:30。
C7 =VLOOKUP(A7&B7,A1:C4,3,TRUE)
这里A1 = B1&C1
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
将 'range_lookup' 设置为 'True' 增加了在精确值不可用时返回最接近的近似值的灵活性。
我想你正在寻找这样的东西。使用索引和匹配。
我暂时没有考虑日期。但这给了你一个例子。
您可以将日期字符串与>
或<
等运算符进行比较。将 A 和 B 列中的值连接起来,与所需的日期/时间字符串进行比较。在单元格C1
中输入以下公式,然后向下拖动:
="13-06-2013 12:30"<A1&" "&B1
或更具体地说,取决于您想要哪个“12:30”(上午或下午),="13-06-2013 12:30AM"
或者="13-06-2013 12:30PM"
除非另有说明/以不同方式导入,否则 B 列中的数据可能默认为 AM,因此您可能需要调整数据或考虑这一点。
这是回答您的问题的另一种方法,它使用 MATCH、INDEX 和数组操作的组合来提供不依赖辅助列的紧凑公式解决方案。
我假设您的两列日期和时间在单元格中A2:B5
,而您要查找的两个日期和时间值在单元格中A9:A10
。然后以下两个公式将返回您需要的内容,即数据中小于或等于您正在查找的日期和时间的最新日期和时间值。(公式中的美元符号很难看,但如果您需要将公式复制到其他位置,它们很重要;为清楚起见,我在下面的讨论中省略了它们。)
日期:=INDEX($A$2:$B$5,MATCH(A9+A10,$A$2:$A$5+$B$2:$B$5,1),1) --> 13-06-2013 时间:=INDEX($A$2:$B$5,MATCH(A9+A10,$A$2:$A$5+$B$2:$B$5,1),2) --> 11:30 AM
这些是数组公式,需要使用Control- Shift-Enter组合键输入。(当然,只有以等号(=)开头并以最后一个括号结尾的位需要输入到工作表中。)
需要考虑的事项:
这些公式假定您的数据是有效的 Excel 日期和时间值。Excel 日期值是整数,用于计算自 1900 年 1 月 1 日以来经过的天数;Excel 时间值是介于 0 和 1 之间的小数,表示特定时间所代表的 24 小时的分数。虽然您的示例数据不显示 AM 或 PM,但我假设它们的基础值确实具有该信息。
如果您的值是文本(例如,已从其他来源导入),您应该将它们转换为日期/时间值,如果幸运的话,只使用 ExcelDATEVALUE
和TIMEVALUE
函数;如果不是那么幸运,也可以使用 Excel 的字符串操作函数的某种组合。(这些值可以保存为字符串,但您几乎肯定需要对它们进行按摩,以便它们可以“按字母顺序”正确比较 - 更容易处理 Excel 日期/时间值。)
如果还没有,您的日期和时间将需要从小到大排序。(您的样本看起来像是已排序的,并且公式假设如此。)
公式背后的基本思想是双重的:首先在数据中找到包含最新(最大)日期和时间但仍小于或等于您正在查找的日期和时间的行。然后可以使用该行信息从数据范围的每一列中获取最终结果(一个用于日期,一个用于时间)。
由于日期和时间都表示最晚的时间点,因此必须以某种方式组合要查找的值和要搜索的值的日期和时间分量。
这可以通过简单地将日期和时间相加来实现。这与 Excel 所做的一样:Excel 日期/时间值具有整数部分(自 1900 年 1 月 1 日以来的天数)和小数部分(特定时间代表的 24 小时的分数)。
这里的巧妙之处在于,日期和时间的累加 - 以及特定日期和时间的查找 - 可以在运行中一次完成。
看一下MATCH
:包含要查找的日期和时间的单元格 -A9
和A10
- 加在一起,然后将此总和与日期列 ( A2:A5
) 和时间列 ( B2:B5
) 的总和进行匹配 - 一个操作Excel 的数组算术能力是可能的。匹配返回值 2,正确指示满足您的要求的日期和时间在数据表的第 2 行中。
日期/时间匹配:=匹配(A9+A10,A2:A5 + B2:B5,1)-> 2
作为 MATCH 函数的最后一个参数的 1 是一条指令,即计算匹配结果小于或等于要查找的值。它是默认值,通常被省略,或替换为另一个值(例如,使用值 0 将产生完全匹配,如果有的话)。
(为了便于阅读,我删除了完整公式中的美元符号;这些锚定了一个范围,以便即使将公式复制到另一个位置,它也保持不变。)
找出要查看的行后,公式的其余部分就很简单了。该INDEX
函数返回位于指定行和列交叉处的数据范围内的值。因此,对于相关日期,公式简化为:
日期提取:=索引(A2:B5、2、1)-> 13-06-2013
也就是说,INDEX就是返回数据范围第二行第一列的值A2:B5
。
时间公式以完全相同的方式进行,唯一的区别是该值是从数据范围的第二列返回的。