首页 > 解决方案 > 按时间查询Excel数组

问题描述

我有一个数组,根据 24 小时时间格式,从上午 9 点(9)开始到下午 4 点(16)。根据当前时间(我查询当前时间的 Excel)我想回顾 1、2、3、4 小时等。显然,如果是下午 4 点(16 点),那么回去很容易,但如果是上午 9 点,我想转到前一天的下午 4 点、下午 3 点、下午 2 点等(数组 16、15、14 等中的较高值)。数组是这样设置的:

9 100
10 110
11 50
12 200
13 250
14 10
15 150
16 130

例如,如果我希望它回顾 2 小时,下午 4 点 (16) 减去下午 2 点 (14) 将是 130-10=120。对于前一天 (15) 的上午 9 点至下午 3 点,将是 100-150=-50。

可能有一些我没有得到的差异或代数逻辑。我已经考虑过 index() 但这可能会变得棘手。任何帮助,将不胜感激。

标签: arraysexcel

解决方案


我不得不对你的问题做出一些假设。我假设数组,你的意思是一个单元格范围,比如 A1:B8,包含你列出的值。如果是这种情况,那么可以使用模运算符相当简单地解决任务(请参阅https://en.wikipedia.org/wiki/Modulo_operation)。

第 1 步是减小时并应用Mod()函数,如下所示:

=MOD(ReferenceTime-FirstHourInList-HourReduction,HoursListCount)

在 9 - 2 示例中,您给出=MOD(9-9-2,8)的产量为 6,列表中索引 6 处的项目为 15。

步骤 2 将只是两个查找值的减法,使用INDEX(),记住该函数是基于 1 的。

如果您有一个如下所示的工作表:

在此处输入图像描述

那么单元格 B3 中的公式就是:

=INDEX($B$6:$B$13,MOD($B$1-9-$B$2,8)+1)-INDEX($B$6:$B$13,MATCH($B$1,$A$6:$A$13,0))

其中一个问题是我们不知道您的数组是什么或在哪里——它可能是一个范围、一个表、一个命名范围、一个硬编码的数组等。显然,这个答案只适用于一个范围,但您可以将其调整为任何其他类型的数组。我们也不知道您已经尝试过什么,这通常是我们回答问题之前的要求。例如,这将揭示这是什么类型的数组。

你问这是否是一个难以破解的坚果?答案是否定的,但你的问题中缺乏细节肯定会让那个坚果变得硬壳。如果您想要快速响应,那么您需要提供尽可能多的详细信息。这可能是最好的发布答案的板,但一个好的答案取决于一个好的问题。


推荐阅读