arrays - 按时间查询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() 但这可能会变得棘手。任何帮助,将不胜感激。
解决方案
我不得不对你的问题做出一些假设。我假设数组,你的意思是一个单元格范围,比如 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))
其中一个问题是我们不知道您的数组是什么或在哪里——它可能是一个范围、一个表、一个命名范围、一个硬编码的数组等。显然,这个答案只适用于一个范围,但您可以将其调整为任何其他类型的数组。我们也不知道您已经尝试过什么,这通常是我们回答问题之前的要求。例如,这将揭示这是什么类型的数组。
你问这是否是一个难以破解的坚果?答案是否定的,但你的问题中缺乏细节肯定会让那个坚果变得硬壳。如果您想要快速响应,那么您需要提供尽可能多的详细信息。这可能是最好的发布答案的板,但一个好的答案取决于一个好的问题。
推荐阅读
- javascript - 根据条件更改光标(插入符号)位置的方法
- laravel - 在 laravel 5.58 的编辑方法上加载视图页面时 css 和 js 路径损坏
- javascript - 如何从js中的表格中获取文本值
- scala - 如何在 Scala 中使用 map 更改流的元素类型
- javascript - 以角度 6 过滤数据
- vue.js - Vue中带有src集的响应式图片标签
- javascript - 如何找到在javascript中按降序对数字数组进行排序所需的最小交换次数
- java - 当我更改宽度时,itext 中的高度会发生变化
- dart - 使用 Flutter 打开 Android 警报
- r - 构建从 0 到 T 的布朗桥